bibliothek.gui.dock.station
Class AbstractDockableStation

java.lang.Object
  extended by bibliothek.gui.dock.dockable.AbstractDockable
      extended by bibliothek.gui.dock.station.AbstractDockableStation
All Implemented Interfaces:
DockElement, DockElementRepresentative, PlaceholderListItem<Dockable>, Dockable, DockStation
Direct Known Subclasses:
FlapDockStation, StackDockStation

public abstract class AbstractDockableStation
extends AbstractDockable
implements DockStation

An abstract combination between DockStation and Dockable. This station has no functionality except the ability to store and call DockStationListeners.

Author:
Benjamin Sigg

Field Summary
protected  DockStationListenerManager listeners
          The list of DockStationListeners which can be used to send events to all listeners.
 
Constructor Summary
AbstractDockableStation()
          Constructs a new station, but does nothing more
AbstractDockableStation(DockTheme theme)
          Constructs a new station and sets the theme.
 
Method Summary
 boolean accept(Dockable child)
          Tells whether this station accepts child as a new child, or refuses child.
protected  boolean acceptable(Dockable child)
          Tells whether this station accepts child as new child.
 void addDockStationListener(DockStationListener listener)
          Adds a listener to this station.
 DockStation asDockStation()
          Returns this if this is an instance of DockStation.
protected abstract  void callDockUiUpdateTheme()
          Calls the method DockUI.
 boolean canCompare(DockStation station)
          Tells whether this station knows a rule how to compare itself with station.
 void changed(Dockable dockable, DockTitle title, boolean active)
          Called by the DockController of this station to indicate that the active-state of title has been changed.
 int compare(DockStation station)
          Compares this station with station.
protected  DockIcon createTitleIcon()
          Creates the DockIcon which represents this Dockable or this DockStation.
protected  void fireDockablesRepositioned(int fromIndex)
          Invokes DockStationListenerManager.fireDockablesRepositioned(Dockable...) for all children starting at index fromIndex.
protected  void fireDockablesRepositioned(int fromIndex, int toIndex)
          Invokes DockStationListenerManager.fireDockablesRepositioned(Dockable...) for all children starting at index fromIndex to index toIndex.
 DockActionSource getDirectActionOffers(Dockable dockable)
          Gets a list of actions which should be available for the user and affect the child dockable.
 DockActionSource getIndirectActionOffers(Dockable dockable)
          Gets a list of actions which should be available for the user and affect dockable.
 java.awt.Rectangle getStationBounds()
          Gets a rectangle in which all points of the station are.
 DockTheme getTheme()
          Gets the current theme of this station.
 boolean isStationVisible()
          Tells whether this station is visible or not.
 boolean isVisible(Dockable dockable)
          Tells whether the child dockable is visible or not.
 void removeDockStationListener(DockStationListener listener)
          Removes a listener from this station.
 void requestChildDockTitle(DockTitleRequest request)
          Provides a DockTitle for a child of this station.
 void requestDockTitle(DockTitleRequest request)
          The default behavior of this method is todo nothing.
 void updateTheme()
          Updates the DockTheme of this station.
 
Methods inherited from class bibliothek.gui.dock.dockable.AbstractDockable
accept, accept, addDockableListener, addDockableStateListener, addDockHierarchyListener, addKeyListener, addMouseInputListener, asDockable, bind, configureDisplayerHints, fireTitleBound, fireTitleExchanged, fireTitleExchanged, fireTitleIconChanged, fireTitleTextChanged, fireTitleTooltipChanged, fireTitleUnbound, getConfigurableDisplayerHints, getController, getDockableStateListeners, getDockElementObserver, getDockParent, getElement, getGlobalActionOffers, getLocalActionOffers, getPopupLocation, getTitleIcon, getTitleText, getTitleToolTip, isDockableVisible, isUsedAsTitle, listBoundTitles, removeDockableListener, removeDockableStateListener, removeDockHierarchyListener, removeKeyListener, removeMouseInputListener, resetTitleIcon, setActionOffers, setController, setDockParent, setTitleIcon, setTitleText, setTitleToolTip, shouldFocus, shouldTransfersFocus, unbind
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface bibliothek.gui.DockStation
canDrag, canReplace, drag, draw, drop, drop, drop, forget, getController, getDockable, getDockableCount, getDockableProperty, getFrontDockable, getPlaceholders, isInOverrideZone, move, move, prepareDrop, prepareMove, replace, replace, setController, setFrontDockable, setPlaceholders
 
Methods inherited from interface bibliothek.gui.dock.DockElement
asDockable, getFactoryID
 
Methods inherited from interface bibliothek.gui.Dockable
getComponent
 

Field Detail

listeners

protected DockStationListenerManager listeners
The list of DockStationListeners which can be used to send events to all listeners.

Constructor Detail

AbstractDockableStation

public AbstractDockableStation()
Constructs a new station, but does nothing more


AbstractDockableStation

public AbstractDockableStation(DockTheme theme)
Constructs a new station and sets the theme.

Parameters:
theme - the theme, may be null
Method Detail

createTitleIcon

protected DockIcon createTitleIcon()
Description copied from class: AbstractDockable
Creates the DockIcon which represents this Dockable or this DockStation. The icon must call AbstractDockable.fireTitleIconChanged(Icon, Icon) if the icon changes.

Specified by:
createTitleIcon in class AbstractDockable
Returns:
the default icon for this element

asDockStation

public DockStation asDockStation()
Description copied from interface: DockElement
Returns this if this is an instance of DockStation. Otherwise null is returned.

Specified by:
asDockStation in interface DockElement
Returns:
this or null. Must not return null if DockElement.asDockable() already returns null

getTheme

public DockTheme getTheme()
Description copied from interface: DockStation
Gets the current theme of this station. The theme can be null, but that means that the station is not fully initialized, and might not work correct.

Specified by:
getTheme in interface DockStation
Returns:
the theme of this station or null.

updateTheme

public void updateTheme()
Description copied from interface: DockStation
Updates the DockTheme of this station. The new theme has to be read from the controller of this station. If the controller is null, this method should return immediately.
You may use DockUI.updateTheme(DockStation, DockFactory) to implement this method.

Specified by:
updateTheme in interface DockStation

callDockUiUpdateTheme

protected abstract void callDockUiUpdateTheme()
                                       throws java.io.IOException
Calls the method DockUI.DockUI.updateTheme(DockStation, DockFactory) with this as the first argument, and an appropriate factory as the second argument.

Throws:
java.io.IOException - if the DockUI throws an exception

requestDockTitle

public void requestDockTitle(DockTitleRequest request)
Description copied from class: AbstractDockable
The default behavior of this method is todo nothing.

Specified by:
requestDockTitle in interface Dockable
Overrides:
requestDockTitle in class AbstractDockable
Parameters:
request - which title is required. If this Dockable does not have a special rule for the given request it just ignores the call

getDirectActionOffers

public DockActionSource getDirectActionOffers(Dockable dockable)
Description copied from interface: DockStation
Gets a list of actions which should be available for the user and affect the child dockable.

Specified by:
getDirectActionOffers in interface DockStation
Parameters:
dockable - a child of this station
Returns:
actions for dockable, can be null

getIndirectActionOffers

public DockActionSource getIndirectActionOffers(Dockable dockable)
Description copied from interface: DockStation
Gets a list of actions which should be available for the user and affect dockable. The argument dockable can be a child of this station, or a child of any station which is below this station.

Specified by:
getIndirectActionOffers in interface DockStation
Parameters:
dockable - a child of this station or a child of another station which is below this station
Returns:
actions for dockable or null

addDockStationListener

public void addDockStationListener(DockStationListener listener)
Description copied from interface: DockStation
Adds a listener to this station. The station has to invoke the methods of the listener such that its requirements are full filled.

Specified by:
addDockStationListener in interface DockStation
Parameters:
listener - the listener to add

removeDockStationListener

public void removeDockStationListener(DockStationListener listener)
Description copied from interface: DockStation
Removes a listener from this station.

Specified by:
removeDockStationListener in interface DockStation
Parameters:
listener - the listener to remove

isVisible

public boolean isVisible(Dockable dockable)
Description copied from interface: DockStation
Tells whether the child dockable is visible or not. Visible means that the component of dockable can be seen by the user. The result must be false if this station is not visible.

Specified by:
isVisible in interface DockStation
Parameters:
dockable - the child whose visibility-state is questioned
Returns:
whether dockable is visible or not
See Also:
DockStation.isStationVisible()

isStationVisible

public boolean isStationVisible()
Description copied from interface: DockStation
Tells whether this station is visible or not. For example a station on a JFrame is not visible if the frame is minimized.

Specified by:
isStationVisible in interface DockStation
Returns:
whether this station is visible

accept

public boolean accept(Dockable child)
Description copied from interface: DockStation
Tells whether this station accepts child as a new child, or refuses child. The user will not be able to drop a Dockable onto this station if this method returns false.

Specified by:
accept in interface DockStation
Parameters:
child - a Dockable which may become a child
Returns:
true if child is accepted

acceptable

protected boolean acceptable(Dockable child)
Tells whether this station accepts child as new child.

Parameters:
child - the child to add
Returns:
true if acceptable

canCompare

public boolean canCompare(DockStation station)
Description copied from interface: DockStation
Tells whether this station knows a rule how to compare itself with station. See DockStation.compare(DockStation) for more details.

Specified by:
canCompare in interface DockStation
Parameters:
station - another station
Returns:
true if a call to compare will not end in an exception and return another value than 0

compare

public int compare(DockStation station)
Description copied from interface: DockStation
Compares this station with station. The comparison is needed if the stations bounds of the two station have common points. On a drag-event, the controller needs a way to decide which station is more important (and receives the opportunity to get a new child first). The controller will use the method compare to do this. This method works like Comparable.compareTo(Object).

Specified by:
compare in interface DockStation
Parameters:
station - another station
Returns:
a number less/equal/higher than zero, if this station has higher/equal/lesser priority than station.

changed

public void changed(Dockable dockable,
                    DockTitle title,
                    boolean active)
Description copied from interface: DockStation
Called by the DockController of this station to indicate that the active-state of title has been changed. This station should call the method title.changed with an appropriate event. The station may add some additional information to this call.

Specified by:
changed in interface DockStation
Parameters:
dockable - the child whose title is changed
title - the changed title, may not be bound
active - the new state of the title

requestChildDockTitle

public void requestChildDockTitle(DockTitleRequest request)
Description copied from interface: DockStation
Provides a DockTitle for a child of this station. This method must call DockTitleRequest.answer(DockTitle) to set the result.
Most DockStations won't have the need to implement this method, leaving it empty will advice the framework to use another source for new DockTitles.

Specified by:
requestChildDockTitle in interface DockStation
Parameters:
request - the request to answer, not null

getStationBounds

public java.awt.Rectangle getStationBounds()
Description copied from interface: DockStation
Gets a rectangle in which all points of the station are. The user is only able to move a Dockable into this area onto this station.

Specified by:
getStationBounds in interface DockStation
Returns:
the bounds, relative to the screen, null to indicate that this station has not any bounds

fireDockablesRepositioned

protected void fireDockablesRepositioned(int fromIndex)
Invokes DockStationListenerManager.fireDockablesRepositioned(Dockable...) for all children starting at index fromIndex.

Parameters:
fromIndex - the index of the first moved child

fireDockablesRepositioned

protected void fireDockablesRepositioned(int fromIndex,
                                         int toIndex)
Invokes DockStationListenerManager.fireDockablesRepositioned(Dockable...) for all children starting at index fromIndex to index toIndex.

Parameters:
fromIndex - the index of the first moved child
toIndex - the index of the last moved child