bibliothek.gui.dock.common
Interface CStation<S extends CommonDockStation<?,?>>

Type Parameters:
S - what kind of internal implementation this station uses
All Known Implementing Classes:
AbstractCStation, AbstractDockableCStation, CExternalizeArea, CGridArea, CMinimizeArea, CWorkingArea

public interface CStation<S extends CommonDockStation<?,?>>

A CStation is an element onto which CDockables can be dropped. Each station can, but does not have to be, a CDockable itself. Stations are added to the CControl through CControl.addStation(CStation, boolean). A station is either a root-station (meaning that it has no parent) or CDockable. It is possible to use a CDockable as root-station.

Author:
Benjamin Sigg

Method Summary
 CDockable asDockable()
          If this station is a CDockable as well, then this method returns the representation of this station as CDockable.
 CStationPerspective createPerspective()
          Returns a new CStationPerspective that represents this station.
 CLocation getDropLocation()
          Creates a CLocation that can be used to drop a new CDockable on this station or one of its children stations.
 S getStation()
          Gets the internal representation of this CStation.
 CLocation getStationLocation()
          Gets a location which represents directly getStation().
 Path getTypeId()
          Gets a unique path denoting the type of this station.
 String getUniqueId()
          Gets a unique and constant identifier for this station
 boolean isWorkingArea()
          Tells whether this station is a special working area or not.
 void setControlAccess(CControlAccess access)
          Called by CControl when this CStation is added or removed.
 

Method Detail

getStation

S getStation()
Gets the internal representation of this CStation.

Returns:
the internal representation

asDockable

CDockable asDockable()
If this station is a CDockable as well, then this method returns the representation of this station as CDockable.

Returns:
this as dockable or null

createPerspective

CStationPerspective createPerspective()
Returns a new CStationPerspective that represents this station. This method does not need to set any content of the new perspective. Basically this method just needs to tell the framework what type of CStationPerspective is needed, not what its content is.

Returns:
the new, empty perspective
See Also:
getTypeId()

isWorkingArea

boolean isWorkingArea()
Tells whether this station is a special working area or not. It is not possible drag a child from a working area if it is registered there, or to drop a child onto a working area if it is not registered there.
Working areas must either be registered as root-station (see CControl.addStation(CStation, boolean)) or must be a SingleCDockable.

Returns:
true if this is a working area, false otherwise

getUniqueId

String getUniqueId()
Gets a unique and constant identifier for this station

Returns:
the unique identifier

getTypeId

Path getTypeId()
Gets a unique path denoting the type of this station. This path will be given to MissingPerspectiveStrategy.createStation(String, Path) when loading a layout as a CPerspective.

Returns:
the type of this station. Paths starting with "dock." are reserved for the framework. A value of null will just be ignored.

getStationLocation

CLocation getStationLocation()
Gets a location which represents directly getStation().

Returns:
the location that will always represent the station

getDropLocation

CLocation getDropLocation()
Creates a CLocation that can be used to drop a new CDockable on this station or one of its children stations. This method returns the "optimal spot", where the definition of "optimal spot" is up to the station itself. The default implementations however call CLocationModeManager.getDropLocation(CStation).

Returns:
the optimal spot for dropping a new CDockable or null if this station is not able to calculate the optimal spot (e.g. because the station is not visible)

setControlAccess

void setControlAccess(CControlAccess access)
Called by CControl when this CStation is added or removed. There are two actions which most stations might want to do:

Parameters:
access - access to the internals of the CControl that uses this station or null to remove all ties from a control