bibliothek.gui.dock.control.focus
Class DefaultMouseFocusObserver

java.lang.Object
  extended by bibliothek.gui.dock.control.focus.DefaultMouseFocusObserver
All Implemented Interfaces:
MouseFocusObserver

public class DefaultMouseFocusObserver
extends Object
implements MouseFocusObserver

This implementation of a MouseFocusObserver offers methods to handle FocusVetoListeners and registers a VetoableDockRelocatorListener. On a drop event this observer will automatically transfer the focus to the dropped Dockable.

Author:
Benjamin Sigg

Constructor Summary
DefaultMouseFocusObserver(DockController controller, ControllerSetupCollection setup)
          Creates a new FocusController.
 
Method Summary
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 check(MouseEvent event)
          This method may be called at any time by any component that received the MouseEvent event.
 void check(MouseWheelEvent event)
          This method may be called at any time by any component that received the MouseWheelEvent event.
 DockController getController()
          Gets the affected controller.
protected  DockElementRepresentative 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.
protected  boolean interact(AWTEvent event)
          Tells whether this event should change the focus.
 void kill()
          Stops this FocusController.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultMouseFocusObserver

public DefaultMouseFocusObserver(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.

Specified by:
kill in interface MouseFocusObserver

getController

public DockController getController()
Gets the affected controller.

Specified by:
getController in interface MouseFocusObserver
Returns:
the controller

check

public void check(MouseEvent event)
This method may be called at any time by any component that received the MouseEvent event. This observer may transfer the focus because of this call.
If this application runs in a restricted environment than any DockStation of this framework will call this method.

Parameters:
event - the event to check

check

public void check(MouseWheelEvent event)
This method may be called at any time by any component that received the MouseWheelEvent event. This observer may transfer the focus because of this call.
If this application runs in a restricted environment than any DockStation of this framework will call this method.

Parameters:
event - the event to check

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

getDockable

protected DockElementRepresentative 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