bibliothek.gui.dock.control
Class MouseFocusObserver

java.lang.Object
  extended by bibliothek.gui.dock.control.MouseFocusObserver
All Implemented Interfaces:
DockRelocatorListener
Direct Known Subclasses:
DefaultMouseFocusObserver, SecureMouseFocusObserver

public abstract class MouseFocusObserver
extends Object
implements DockRelocatorListener

A FocusController listens to all AWT-events. As soon as the mouse is pressed over a Dockable, the FocusController will inform the DockController about a new front-dockable.

Author:
Benjamin Sigg

Constructor Summary
MouseFocusObserver(DockController controller, ControllerSetupCollection setup)
          Creates a new FocusController.
 
Method Summary
 void addVetoListener(FocusVetoListener listener)
          Adds a listener to this controller which can cancel a call to the DockController.
 void cancel(DockController controller, Dockable dockable)
          Invoked when a drag and drop operation was initiated, but canceld.
protected  void check(AWTEvent event)
          Lets check this controller whether the focus should change, or not.
protected  void check(Component component, AWTEvent event)
          Tries to find the Dockable which owns component and sets this Dockable to the focusedDockable.
protected  void check(Component component, boolean ensureFocus, boolean requestFocusInWindow, AWTEvent event)
          Tries to find the Dockable which owns component and sets this Dockable to the focusedDockable.
 void drag(DockController controller, Dockable dockable, DockStation station)
          Invoked when a drag and drop operation has been confirmed.
 void drop(DockController controller, Dockable dockable, DockStation station)
          Invoked after a Dockable was dropped.
protected  FocusVetoListener.FocusVeto fireVetoDockable(Dockable dockable)
          Asks all FocusVetoListener through their method FocusVetoListener.vetoFocus(MouseFocusObserver, Dockable) whether they want cancel a call to the DockController.
protected  FocusVetoListener.FocusVeto fireVetoTitle(DockTitle title)
          Asks all FocusVetoListener through their method FocusVetoListener.vetoFocus(MouseFocusObserver, DockTitle) whether they want cancel a call to the DockController.
 DockController getController()
          Gets the affected controller.
protected  Dockable getDockable(Component component, AWTEvent event)
          Gets the top-dockable which has component or parent of component as base Component.
protected  void handleVeto(AWTEvent event, FocusVetoListener.FocusVeto veto)
          Handles the veto that was given when trying to forward event.
 void init(DockController controller, Dockable dockable)
          Invoked when a drag and drop operation is initiated.
protected  boolean interact(AWTEvent event)
          Tells whether this event should change the focus.
 void kill()
          Stops this FocusController.
 void removeVetoListener(FocusVetoListener listener)
          Removes a listener from this controller
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MouseFocusObserver

public MouseFocusObserver(DockController controller,
                          ControllerSetupCollection setup)
Creates a new FocusController.

Parameters:
controller - the controller which will be informed about focus-changes
setup - an observable informing this object when controller is set up.
Method Detail

kill

public void kill()
Stops this FocusController. This controller will remove all its listeners and become ready for the garbage collector.


getController

public DockController getController()
Gets the affected controller.

Returns:
the controller

addVetoListener

public void addVetoListener(FocusVetoListener listener)
Adds a listener to this controller which can cancel a call to the DockController.

Parameters:
listener - the new listener

removeVetoListener

public void removeVetoListener(FocusVetoListener listener)
Removes a listener from this controller

Parameters:
listener - the listener to remove

fireVetoTitle

protected FocusVetoListener.FocusVeto fireVetoTitle(DockTitle title)
Asks all FocusVetoListener through their method FocusVetoListener.vetoFocus(MouseFocusObserver, DockTitle) whether they want cancel a call to the DockController.

Parameters:
title - the title which was hit by the mouse
Returns:
the first veto

fireVetoDockable

protected FocusVetoListener.FocusVeto fireVetoDockable(Dockable dockable)
Asks all FocusVetoListener through their method FocusVetoListener.vetoFocus(MouseFocusObserver, Dockable) whether they want cancel a call to the DockController.

Parameters:
dockable - the Dockable which was hit by the mouse
Returns:
the first veto

check

protected void check(AWTEvent event)
Lets check this controller whether the focus should change, or not. Clients invoking this method should first check whether event is allowed to change the focus or not. This check can be done through the method interact(AWTEvent).

Parameters:
event - The event to react on.
See Also:
interact(AWTEvent)

interact

protected boolean interact(AWTEvent event)
Tells whether this event should change the focus.

Parameters:
event - the event
Returns:
true if the focus could be changed

handleVeto

protected void handleVeto(AWTEvent event,
                          FocusVetoListener.FocusVeto veto)
Handles the veto that was given when trying to forward event. The default implementation calls InputEvent.consume() to get rid of the event.

Parameters:
event - the event to handle
veto - which veto was called by a FocusVetoListener

check

protected void check(Component component,
                     AWTEvent event)
Tries to find the Dockable which owns component and sets this Dockable to the focusedDockable. The method only succeeds if no veto-listener reacts.

Parameters:
component - the component whose dockable parent is to set focused
event - the event that causes this check

check

protected void check(Component component,
                     boolean ensureFocus,
                     boolean requestFocusInWindow,
                     AWTEvent event)
Tries to find the Dockable which owns component and sets this Dockable to the focusedDockable. The method only succeeds if no veto-listener reacts.

Parameters:
component - the component whose dockable parent is to set focused
ensureFocus - whether the DockController should ensure that the focus is set correctly or not.
requestFocusInWindow - whether Component.requestFocusInWindow() should be called or not
event - the event that causes this check

init

public void init(DockController controller,
                 Dockable dockable)
Description copied from interface: DockRelocatorListener
Invoked when a drag and drop operation is initiated. This method is called when the user made the gesture of dragging, but not yet of dropping.

Specified by:
init in interface DockRelocatorListener
Parameters:
controller - the origin of the event
dockable - the element that has been grabbed

cancel

public void cancel(DockController controller,
                   Dockable dockable)
Description copied from interface: DockRelocatorListener
Invoked when a drag and drop operation was initiated, but canceld. This method can be called any time after DockRelocatorListener.init(DockController, Dockable). was called.

Specified by:
cancel in interface DockRelocatorListener
Parameters:
controller - the origin of the event
dockable - the element that has been grabbed

drag

public void drag(DockController controller,
                 Dockable dockable,
                 DockStation station)
Description copied from interface: DockRelocatorListener
Invoked when a drag and drop operation has been confirmed. This method is called after the user made a drop-gesture, but before dockable is dragged from its old parent.

Specified by:
drag in interface DockRelocatorListener
Parameters:
controller - the origin of the event
dockable - the Dockable which was dragged
station - the future parent of dockable
See Also:
DockRelocatorListener.drop(DockController, Dockable, DockStation)

drop

public void drop(DockController controller,
                 Dockable dockable,
                 DockStation station)
Description copied from interface: DockRelocatorListener
Invoked after a Dockable was dropped.

Specified by:
drop in interface DockRelocatorListener
Parameters:
controller - the origin of the event
dockable - the Dockable which was dragged
station - the new parent of dockable
See Also:
DockRelocatorListener.drag(DockController, Dockable, DockStation)

getDockable

protected Dockable getDockable(Component component,
                               AWTEvent event)
Gets the top-dockable which has component or parent of component as base Component.

Parameters:
component - a Component
event - the event that causes this check
Returns:
a Dockable or null if nothing was found or a FocusVetoListener doesn't want to inform the controller