package gizmoball.ui;

import gizmoball.game.AbstractGizmo;

/**
 * An interface implemented by classes that are to be notified
 * on changes in gizmo selection.  Two basic events are handled:
 * gizmo selection and gizmo deselection (not in the conventional
 * sense, but rather the complete deselection of all gizmos).<p>
 * 
 * @author Albert Leung
 * @version 1.0
 *  
 * 
 */
public interface GizmoballSelectionObserver {

	/**
	 * Used to implement a response to a gizmo selection or 
	 * reselection (selecting a different gizmo while a gizmo
	 * is currently selected).
	 *  
	 * @param gizmo the gizmo that has been selected
	 * 
	 */
	public void gizmoSelected(AbstractGizmo gizmo);
	
	/**
	 * Used to implement a response to deselection of all 
	 * gizmos (no gizmo currently has the focus).
	 *
	 */
	public void gizmoDeselected();
	
}
