package org.limewire.ui.desktop.shell;

/**
 * A registration in the platform shell that sets a program as the default viewer for a protocol link or file type.
 */
public interface ShellAssociation {

	/**
	 * @return true if we are currently handling this association
	 */
	public boolean isRegistered();
	
	/**
	 * @return true if nobody is handling this association
	 */
	public boolean isAvailable();

	/**
	 * Associates this running program with this protocol or file type in the shell.
	 */
	public void register();

    /**
     * Checks whether we can clear the shell association.
     */
	public boolean canUnregister();
	
	/**
	 * Clears this shell association, leaving another program or no program registered.
	 */
	public void unregister();

}
