package jas.util;

/**
 * A CommandSource represents a source of a command, such as a MenuItem or Toolbar Button.
 * A CommandSource may have a CommandTarget associated with it. The CommandTarget represents
 * the command that will be fired when the CommandSource is activated. Typically a 
 * CommandTargetManager is responsible for setting the CommandTarget. 
 * 
 * The CommandSource will typically be dimmed out if either there is no CommandTarget associated
 * with it, or if the CommandTarget is not enabled.
 */
public interface CommandSource
{
	/**
	 * Returns the command associated with the CommandSource
	 */
	String getCommand();
	/**
	 * Sets a CommandTarget associated with the CommandSource
	 */
	boolean setTarget(CommandTarget target);
	/**
	 * Clears the CommandTarget associated with the CommandSource
	 */
	void clearTarget();
	/**
	 * Returns the current CommandTarget, or null of there isnt a current command target
	 */
	CommandTarget getTarget();
}
