bibliothek.gui.dock.control.focus
Interface FocusController

All Known Implementing Classes:
AbstractFocusController, DefaultFocusController

public interface FocusController

The FocusController is responsible for transfering focus between Dockables.

Author:
Benjamin Sigg

Method Summary
 void addDockableFocusListener(DockableFocusListener listener)
          Adds a listener to this controller, the listener will be informed when the focused Dockable changes.
 void addVetoListener(FocusVetoListener listener)
          Adds a listener to this controller which can cancel a call to the DockController.
 FocusVetoListener.FocusVeto checkFocusedDockable(DockElementRepresentative source)
          Checks whether source can be used to select the next focused Dockable.
 void ensureFocusSet(boolean dockableOnly)
          Ensures that a title or a Component of the currently focused Dockable really has the focus.
 void freezeFocus()
          Temporarily disables this FocusController.
 DockController getController()
          Gets the DockController whose Dockables are tracked by this observer.
 Dockable getFocusedDockable()
          Gets the Dockable which is currently focused.
 FocusStrategy getStrategy()
          Gets the strategy that selects the Components to focus.
 boolean isOnFocusing()
          Tells whether one of the methods which change the focus is currently running, or not.
 void meltFocus()
          Re-enabls this FocusController after it was temporarility disabled.
 void removeDockableFocusListener(DockableFocusListener listener)
          Removes a listener from this controller.
 void removeVetoListener(FocusVetoListener listener)
          Removes a listener from this controller
 FocusVetoListener.FocusVeto setFocusedDockable(DockElementRepresentative source, Component component, boolean force, boolean ensureFocusSet, boolean ensureDockableFocused)
          Sets the Dockable which should have the focus.
 void setStrategy(FocusStrategy strategy)
          Sets the strategy which will be used to focus components.
 

Method Detail

getController

DockController getController()
Gets the DockController whose Dockables are tracked by this observer.

Returns:
the controller

addVetoListener

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

Parameters:
listener - the new listener

removeVetoListener

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

Parameters:
listener - the listener to remove

addDockableFocusListener

void addDockableFocusListener(DockableFocusListener listener)
Adds a listener to this controller, the listener will be informed when the focused Dockable changes.

Parameters:
listener - the new listener

removeDockableFocusListener

void removeDockableFocusListener(DockableFocusListener listener)
Removes a listener from this controller.

Parameters:
listener - the listener to remove

freezeFocus

void freezeFocus()
Temporarily disables this FocusController. Any call that would lead to a change in the focus is silently ignored.


meltFocus

void meltFocus()
Re-enabls this FocusController after it was temporarility disabled.


setStrategy

void setStrategy(FocusStrategy strategy)
Sets the strategy which will be used to focus components.

Parameters:
strategy - the new strategy, can be null

getStrategy

FocusStrategy getStrategy()
Gets the strategy that selects the Components to focus.

Returns:
the strategy, can be null

getFocusedDockable

Dockable getFocusedDockable()
Gets the Dockable which is currently focused.

Returns:
the focused element or null

isOnFocusing

boolean isOnFocusing()
Tells whether one of the methods which change the focus is currently running, or not. If the result is true, noone should change the focus.

Returns:
true if the focus is currently changing

checkFocusedDockable

FocusVetoListener.FocusVeto checkFocusedDockable(DockElementRepresentative source)
Checks whether source can be used to select the next focused Dockable.

Parameters:
source - the element which may be focused
Returns:
whether the focus can be transfered, a value of null indicates that source does not represent a Dockable

ensureFocusSet

void ensureFocusSet(boolean dockableOnly)
Ensures that a title or a Component of the currently focused Dockable really has the focus.

Parameters:
dockableOnly - if true, then only the Dockable itself should be focused

setFocusedDockable

FocusVetoListener.FocusVeto setFocusedDockable(DockElementRepresentative source,
                                               Component component,
                                               boolean force,
                                               boolean ensureFocusSet,
                                               boolean ensureDockableFocused)
Sets the Dockable which should have the focus.

Parameters:
source - the item to focus, may be null
component - the Component which triggered this call for example because the user clicked with the mouse on it. This method can assume that the focus will automatically be transfered to component by the Swing framework itself. Can be null, in which case this method decides on its own which Component to focus. This method may or may not do sanity checks concerning component. An invalid argument will silently be ignored and treated as if it would be null.
force - true if this controller must ensure that all properties are correct, false if some optimations are allowed. Clients normally can set this argument to false.
ensureFocusSet - if true, then this method should make sure that either focusedDockable itself or one of its DockElementRepresentative is the focus owner
ensureDockableFocused - if true, then this method should make sure that focusedDockable is the focus owner. This parameter is stronger that ensureFocusSet
Returns:
whether focus could be transfered, a value of null indicates that isOnFocusing() returned true and the call was ignored