bibliothek.gui.dock.common.intern
Interface CDockable

All Known Subinterfaces:
MultipleCDockable, SingleCDockable
All Known Implementing Classes:
AbstractCDockable, AbstractDockableCStation, CGridArea, CWorkingArea, DefaultCDockable, DefaultMultipleCDockable, DefaultSingleCDockable

@FrameworkOnly
public interface CDockable

A basic element representing some Component and a wrapper around a Dockable.
Note: This interface is not intended to be implemented by clients. Clients should either extend the class AbstractCDockable or use one of DefaultSingleCDockable or DefaultMultipleCDockable.

Author:
Benjamin Sigg

Field Summary
static java.lang.String ACTION_KEY_CLOSE
          Key for an action of getAction(String).
static java.lang.String ACTION_KEY_EXTERNALIZE
          Key for an action of getAction(String).
static java.lang.String ACTION_KEY_MAXIMIZE
          Key for an action of getAction(String).
static java.lang.String ACTION_KEY_MINIMIZE
          Key for an action of getAction(String).
static java.lang.String ACTION_KEY_NORMALIZE
          Key for an action of getAction(String).
static java.lang.String ACTION_KEY_UNEXTERNALIZE
          Key for an action of getAction(String).
static java.lang.String ACTION_KEY_UNMAXIMIZE_EXTERNALIZED
          Key for an action of getAction(String).
 
Method Summary
 void addCDockableLocationListener(CDockableLocationListener listener)
          Adds a listener to this dockable which gets informed if the location or the visibility changes.
 void addCDockablePropertyListener(CDockablePropertyListener listener)
          Adds a property listener to this dockable, the listener will be informed of changes of this dockable.
 void addCDockableStateListener(CDockableStateListener listener)
          Adds a state listener to this dockable, the listener will be informed of changes of this dockable.
 void addDoubleClickListener(CDoubleClickListener listener)
          Adds a new listener to this dockable.
 void addFocusListener(CFocusListener listener)
          Adds a focus listener to this dockable.
 void addKeyboardListener(CKeyboardListener listener)
          Adds a keyboard listener to this dockable.
 void addVetoClosingListener(CVetoClosingListener listener)
          Adds a veto-listener to this dockable, the listener will be informed before this dockable gets closed and can issue a veto.
 CStation<?> asStation()
          Gets this or an object representing this as CStation.
 CAction getAction(java.lang.String key)
          Gets an action which is not added to the title by this CDockable put by another module.
 RequestDimension getAndClearResizeRequest()
          Gets the preferred size of this CDockable.
 CLocation getBaseLocation()
          Gets the location of this CDockable.
 ColorMap getColors()
          Gets a mutable map of colors.
 CControlAccess getControl()
          Gets the control which is responsible for this dockable.
 ExtendedMode getExtendedMode()
          Gets the size and location of this CDockable.
 java.awt.Component getFocusComponent()
          Gets the Component which should receive the focus once this CDockable is focused.
 FontMap getFonts()
          Gets a mutable map of fonts.
 java.awt.Dimension getMinimizedSize()
          Gets the size which is used when this CDockable is minimzed and on a popup window.
 CStation<?> getWorkingArea()
          Gets the parent of this CDockable, this should be the same as set by the last call of setWorkingArea(CStation).
 boolean hasParent()
          Tells whether this CDockable has a root station as parent.
 CommonDockable intern()
          Gets the intern representation of this CDockable.
 boolean isCloseable()
          Tells whether this CDockable can be closed by the user.
 boolean isDockableVisible()
          Tells whether this CDockable is currently visible to the user.
 boolean isExternalizable()
          Tells whether this CDockable can be externalized by the user.
 boolean isMaximizable()
          Tells whether this CDockable can be maximized by the user.
 boolean isMinimizable()
          Tells whether this CDockable can be minimized by the user.
 boolean isMinimizedHold()
          Tells whether this CDockable remains visible when minimized and without focus.
 boolean isResizeLockedHorizontally()
          Tells whether the width of this CDockable should remain the same when its parent changes the size.
 boolean isResizeLockedVertically()
          Tells whether the height of this CDockable should remain the same when its parent changes the size.
 boolean isSingleTabShown()
          Tells whether a single tab should be shown for this CDockable.
 boolean isStackable()
          Tells whether this CDockable can be combined with another Dockable to create a stack.
 boolean isTitleShown()
          Tells whether this CDockable shows its title or not.
 boolean isVisible()
          Tells whether this CDockable is currently visible or not.
 void removeCDockableLocationListener(CDockableLocationListener listener)
          Removes listener from this dockable
 void removeCDockablePropertyListener(CDockablePropertyListener listener)
          Removes a property listener from this dockable.
 void removeCDockableStateListener(CDockableStateListener listener)
          Removes a state listener from this dockable.
 void removeDoubleClickListener(CDoubleClickListener listener)
          Removes a listener from this dockable.
 void removeFocusListener(CFocusListener listener)
          Removes a focus listener from this dockable.
 void removeKeyboardListener(CKeyboardListener listener)
          Removes a listener from this dockable.
 void removeVetoClosingListener(CVetoClosingListener listener)
          Removes listener from this CDockable.
 void setControl(CControlAccess control)
          Sets the CControl which is responsible for this CDockable.
 void setExtendedMode(ExtendedMode extendedMode)
          Sets how and where this CDockable should be shown.
 void setLocation(CLocation location)
          Sets the location of this CDockable.
 void setMinimizedHold(boolean hold)
          Sets whether this CDockable should remain visible when minimized and without focus.
 void setMinimizedSize(java.awt.Dimension size)
          Sets the size of this CDockable when this CDockable is minimized and on a popup window.
 void setVisible(boolean visible)
          Shows or hides this CDockable.
 void setWorkingArea(CStation<?> area)
          Sets the parent of this CDockable.
 

Field Detail

ACTION_KEY_MINIMIZE

static final java.lang.String ACTION_KEY_MINIMIZE
Key for an action of getAction(String). The action behind this key should call setExtendedMode(ExtendedMode) with an argument of ExtendedMode.MINIMIZED.

See Also:
Constant Field Values

ACTION_KEY_MAXIMIZE

static final java.lang.String ACTION_KEY_MAXIMIZE
Key for an action of getAction(String). The action behind this key should call setExtendedMode(ExtendedMode) with an argument of ExtendedMode.MAXIMIZED.

See Also:
Constant Field Values

ACTION_KEY_NORMALIZE

static final java.lang.String ACTION_KEY_NORMALIZE
Key for an action of getAction(String). The action behind this key should call setExtendedMode(ExtendedMode) with an argument of ExtendedMode.NORMALIZED.

See Also:
Constant Field Values

ACTION_KEY_EXTERNALIZE

static final java.lang.String ACTION_KEY_EXTERNALIZE
Key for an action of getAction(String). The action behind this key should call setExtendedMode(ExtendedMode) with an argument of ExtendedMode.EXTERNALIZED.

See Also:
Constant Field Values

ACTION_KEY_UNEXTERNALIZE

static final java.lang.String ACTION_KEY_UNEXTERNALIZE
Key for an action of getAction(String). The action behind this key should call setExtendedMode(ExtendedMode) with an argument of ExtendedMode.NORMALIZED.

See Also:
Constant Field Values

ACTION_KEY_UNMAXIMIZE_EXTERNALIZED

static final java.lang.String ACTION_KEY_UNMAXIMIZE_EXTERNALIZED
Key for an action of getAction(String). The action behind this key should call setExtendedMode(ExtendedMode) with an argument of ExtendedMode.EXTERNALIZED.

See Also:
Constant Field Values

ACTION_KEY_CLOSE

static final java.lang.String ACTION_KEY_CLOSE
Key for an action of getAction(String). The action behind this key should call setVisible(boolean) with the argument false.

See Also:
Constant Field Values
Method Detail

addCDockableStateListener

void addCDockableStateListener(CDockableStateListener listener)
Adds a state listener to this dockable, the listener will be informed of changes of this dockable.

Parameters:
listener - the new listener

addCDockablePropertyListener

void addCDockablePropertyListener(CDockablePropertyListener listener)
Adds a property listener to this dockable, the listener will be informed of changes of this dockable.

Parameters:
listener - the new listener

addCDockableLocationListener

void addCDockableLocationListener(CDockableLocationListener listener)
Adds a listener to this dockable which gets informed if the location or the visibility changes.

Parameters:
listener - the new listener

removeCDockableStateListener

void removeCDockableStateListener(CDockableStateListener listener)
Removes a state listener from this dockable.

Parameters:
listener - the listener to remove

removeCDockablePropertyListener

void removeCDockablePropertyListener(CDockablePropertyListener listener)
Removes a property listener from this dockable.

Parameters:
listener - the listener to remove

removeCDockableLocationListener

void removeCDockableLocationListener(CDockableLocationListener listener)
Removes listener from this dockable

Parameters:
listener - the listener to remove

addFocusListener

void addFocusListener(CFocusListener listener)
Adds a focus listener to this dockable. The focus listener gets informed when this dockable gains or loses the focus.

Parameters:
listener - the new listener

removeFocusListener

void removeFocusListener(CFocusListener listener)
Removes a focus listener from this dockable.

Parameters:
listener - the listener to remove

addKeyboardListener

void addKeyboardListener(CKeyboardListener listener)
Adds a keyboard listener to this dockable. The listener gets informed when a key is pressed or released on this dockable.

Parameters:
listener - the new listener

removeKeyboardListener

void removeKeyboardListener(CKeyboardListener listener)
Removes a listener from this dockable.

Parameters:
listener - the listener to remove

addDoubleClickListener

void addDoubleClickListener(CDoubleClickListener listener)
Adds a new listener to this dockable. The listener gets informed when the mouse is clicked twice on this dockable.

Parameters:
listener - the new listener

removeDoubleClickListener

void removeDoubleClickListener(CDoubleClickListener listener)
Removes a listener from this dockable.

Parameters:
listener - the listener to remove

addVetoClosingListener

void addVetoClosingListener(CVetoClosingListener listener)
Adds a veto-listener to this dockable, the listener will be informed before this dockable gets closed and can issue a veto. The listener will receive a CVetoClosingEvent which contains only this CDockable (even if other dockables are closed at the same time).
CVetoClosingListeners added to the CControl are invoked before listeners that are added to a CDockable.

Parameters:
listener - the new listener
See Also:
CControl.addVetoClosingListener(CVetoClosingListener)

removeVetoClosingListener

void removeVetoClosingListener(CVetoClosingListener listener)
Removes listener from this CDockable.

Parameters:
listener - the listener to remove

isMinimizable

boolean isMinimizable()
Tells whether this CDockable can be minimized by the user.

Returns:
true if this element can be minimized

isMaximizable

boolean isMaximizable()
Tells whether this CDockable can be maximized by the user.

Returns:
true if this element can be maximized

isExternalizable

boolean isExternalizable()
Tells whether this CDockable can be externalized by the user.

Returns:
true if this element can be externalized

isStackable

boolean isStackable()
Tells whether this CDockable can be combined with another Dockable to create a stack.

Returns:
true if this element can be combined with another Dockable, normally true should be the answer.

isCloseable

boolean isCloseable()
Tells whether this CDockable can be closed by the user. A close-button has to be provided by the CDockable itself. The best way to do that is to instantiate a CloseActionSource and include this source in the array that is returned by CommonDockable.getSources().

Returns:
true if this element can be closed

isResizeLockedVertically

boolean isResizeLockedVertically()
Tells whether the height of this CDockable should remain the same when its parent changes the size. This has only effect if the parent can choose the size of its children. A lock is no guarantee for staying with the same size, the user still can resize this CDockable.

Returns:
true if the height of this CDockable should remain the same during resize events of the parent.

isResizeLockedHorizontally

boolean isResizeLockedHorizontally()
Tells whether the width of this CDockable should remain the same when its parent changes the size. This has only effect if the parent can choose the size of its children. A lock is no guarantee for staying with the same size, the user still can resize this CDockable.

Returns:
true if the width of this CDockable should remain the same during resize events of the parent.

getAndClearResizeRequest

RequestDimension getAndClearResizeRequest()
Gets the preferred size of this CDockable. The preferred size will be used to resize this CDockable when CControl.handleResizeRequests() is called. There are no guarantees that the request can be granted, or will be handled at all.
Calling this method should delete the request, so calling this method twice should have the effect, that the second time null is returned.

Returns:
the next requested size or null

setVisible

void setVisible(boolean visible)
Shows or hides this CDockable. If this CDockable is not visible and is made visible, then the framework tries to set its location at the last known position.
Subclasses should call CControlAccess.show(CDockable) or CControlAccess.hide(CDockable).

Parameters:
visible - the new visibility state
Throws:
java.lang.IllegalStateException - if this dockable can't be made visible
See Also:
isVisible()

isVisible

boolean isVisible()
Tells whether this CDockable is currently visible or not. Visibility means that this CDockable is in the tree structure of DockingFrames and has a parent. Being in the structure does not imply being visible on the screen: If some JFrame is not shown, or some DockStation not properly added to a parent component, then a visible CDockable can be invisible for the user. For CDockables that are also root-CStation this method will always return true. Subclasses should return the result of CControlAccess.isVisible(CDockable).

Returns:
true if this CDockable can be accessed by the user through a graphical user interface.
See Also:
hasParent()

hasParent

boolean hasParent()
Tells whether this CDockable has a root station as parent. Having a root station as parent implies isVisible(). For root-CStation this method will return false if they do not have a parent, they are not considered to be parents of themselves.
Subclasses should return the result of CControlAccess.hasParent(CDockable).

Returns:
true if this dockable has a parent and is in the tree

isDockableVisible

boolean isDockableVisible()
Tells whether this CDockable is currently visible to the user. A CDockable which is not visible, is not dockable visible either. The method does not take into account that a frame may be positioned such that it is not entierly visible on the screen. Neither does the method take into account, that a frame may be minimized.

Returns:
true if the user should be able to see this item

setLocation

void setLocation(CLocation location)
Sets the location of this CDockable. If this CDockable is visible, than this method will take immediately effect. Otherwise the location will be stored in a cache and read as soon as this CDockable is made visible.
Note that the location can only be seen as a hint, the framework tries to fit the location as good as possible, but there are no guarantees.
Subclasses should call CControlAccess.getLocationManager() and CLocationModeManager.setLocation(bibliothek.gui.Dockable, CLocation).

Parameters:
location - the new location, null is possible, but will not move the CDockable immediately
See Also:
getBaseLocation()

getBaseLocation

CLocation getBaseLocation()
Gets the location of this CDockable. If this CDockable is visible, then a location will always be returned. Otherwise a location will only be returned if it just was set using setLocation(CLocation).

Returns:
the location or null

setExtendedMode

void setExtendedMode(ExtendedMode extendedMode)
Sets how and where this CDockable should be shown. Conflicts with isExternalizable(), isMaximizable() and isMinimizable() will just be ignored. Implementations should call LocationModeManager.setMode(Dockable, ExtendedMode).
If this dockable is not visible, then it will be made visible in order to apply the extendedMode.

Parameters:
extendedMode - the size and location

getExtendedMode

ExtendedMode getExtendedMode()
Gets the size and location of this CDockable. Implementations should return LocationModeManager.getMode(Dockable).

Returns:
the size and location or null if this CDockable is not part of an CControl. May be null if this dockable is not visible.

setWorkingArea

void setWorkingArea(CStation<?> area)
Sets the parent of this CDockable. This method can be called by the client or indirectly through setLocation(CLocation).

Parameters:
area - the new parent or null

getWorkingArea

CStation<?> getWorkingArea()
Gets the parent of this CDockable, this should be the same as set by the last call of setWorkingArea(CStation).

Returns:
the parent or null

setMinimizedSize

void setMinimizedSize(java.awt.Dimension size)
Sets the size of this CDockable when this CDockable is minimized and on a popup window.

Parameters:
size - the size

getMinimizedSize

java.awt.Dimension getMinimizedSize()
Gets the size which is used when this CDockable is minimzed and on a popup window. If a value below 0 is set, then the default size is used.

Returns:
the size

setMinimizedHold

void setMinimizedHold(boolean hold)
Sets whether this CDockable should remain visible when minimized and without focus.

Parameters:
hold - whether to remain visible

isMinimizedHold

boolean isMinimizedHold()
Tells whether this CDockable remains visible when minimized and without focus.

Returns:
true if this remains visible, false otherwise

isTitleShown

boolean isTitleShown()
Tells whether this CDockable shows its title or not. Note that some DockThemes might override this setting.

Returns:
true if the title is shown, false otherwise.

isSingleTabShown

boolean isSingleTabShown()
Tells whether a single tab should be shown for this CDockable. Some DockThemes might ignore this setting.

Returns:
true if a single tab should be shown, false if not

getFocusComponent

java.awt.Component getFocusComponent()
Gets the Component which should receive the focus once this CDockable is focused.

Returns:
the element which should receive the focus, can be null

intern

CommonDockable intern()
Gets the intern representation of this CDockable.

Returns:
the intern representation.

asStation

CStation<?> asStation()
Gets this or an object representing this as CStation.

Returns:
this as station or null

setControl

void setControl(CControlAccess control)
Sets the CControl which is responsible for this CDockable. Subclasses must call CControlAccess.link(CDockable, CDockableAccess) to grant the CControl access to the internal properties of this CDockable. link can also be used to revoke access.

Parameters:
control - the new control or null

getControl

@Todo(priority=MINOR,
      compatibility=BREAK_MINOR,
      target=VERSION_1_1_1,
      description="Return CControl instead of CControlAccess")
@FrameworkOnly
CControlAccess getControl()
Gets the control which is responsible for this dockable. Clients should not use this method unless they know exactly what they are doing.

Returns:
the control

getAction

CAction getAction(java.lang.String key)
Gets an action which is not added to the title by this CDockable put by another module.

Parameters:
key - the name of the action
Returns:
an action or null

getColors

ColorMap getColors()
Gets a mutable map of colors. Clients can put colors into this map, and the colors will be presented on the screen by various effects.

Returns:
the map, this has always to be the same object

getFonts

FontMap getFonts()
Gets a mutable map of fonts. Clients can put fonts into this map, and the fonts will be presented on the screen through various effects.

Returns:
the map, this has always to be the same object