bibliothek.gui.dock
Class FlapDockStation

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

public class FlapDockStation
extends AbstractDockableStation

This DockStation shows only a title for each of it's children.
If the user clicks on one of the titles, a window will popup. The Dockable which owns the clicked title is shown in this window.

Author:
Benjamin Sigg

Nested Class Summary
static class FlapDockStation.Direction
          The direction in which the window with the Dockable will popup, in respect to the location of this station.
protected  class FlapDockStation.DockableHandle
          Handles title, listeners and actions that are associated with a Dockable.
protected  class FlapDockStation.FlapDropOperation
          Custom implementation of StationDropOperation.
 
Field Summary
static PropertyKey<ButtonContent> BUTTON_CONTENT
          Key for all DockThemes, tells the theme what content on the buttons should be visible.
static PropertyKey<ButtonContentFilter> BUTTON_CONTENT_FILTER
          Key for all elements that depend from BUTTON_CONTENT, adds additional information to the ButtonContent.
static String BUTTON_TITLE_ID
          This id is used to get a DockTitleVersion from the DockController which owns this station.
static String DISPLAYER_ID
          This id is forwarded to Extensions which load additional DisplayerFactorys.
static PropertyKey<FlapLayoutManager> LAYOUT_MANAGER
          Key for the FlapLayoutManager that is used by all FlapDockStations.
static PropertyKey<Dimension> MINIMUM_SIZE
          Key for the minimum size of all FlapDockStations.
static PropertyKey<FlapWindowFactory> WINDOW_FACTORY
          Key for a factory that creates the windows of this station.
static String WINDOW_TITLE_ID
          This id is used to get a DockTitleVersion from the DockController which owns this station.
 
Fields inherited from class bibliothek.gui.dock.station.AbstractDockableStation
listeners
 
Constructor Summary
  FlapDockStation()
          Defaultconstructor of a FlapDockStation
protected FlapDockStation(boolean init)
          Creates a new FlapDockStation.
 
Method Summary
 void add(Dockable dockable)
          Adds dockable as new child to this station.
 void add(Dockable dockable, int index)
          Inserts dockable as new child in the list of children.
 void addFlapDockStationListener(FlapDockListener listener)
          Adds a listener to this station.
 void aside(AsideRequest request)
          Requests this DockStation to find a DockableProperty that is "aside" another property.
protected  void callDockUiUpdateTheme()
          Calls the method DockUI.DockUI.updateTheme(DockStation, DockFactory) with this as the first argument, and an appropriate factory as the second argument.
 boolean canDrag(Dockable dockable)
          Tells whether dockable can be removed from this station or not.
 boolean canReplace(Dockable old, Dockable next)
          Tells whether its possible to replace the child old with next where next is not a child of this 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.
 boolean combine(Dockable child, Dockable append)
          Creates a combination out of child, which must be a child of this station, and append which must not be a child of this station.
 boolean combine(Dockable child, Dockable append, DockableProperty property)
          Creates a combination out of child, which must be a child of this station, and append which must not be a child of this station.
protected  ButtonPane createButtonPane()
          Creates the panel which will show buttons for the children of this station.
protected  FlapWindow createFlapWindow(ButtonPane buttonPane)
          Creates a window for this station.
protected  FlapDockStation.DockableHandle createHandle(Dockable dockable)
          Creates a new wrapper around dockable, the wrapper is used as internal representation of dockable.
protected  ListeningDockAction createHoldAction()
          Creates a DockAction that is added to all children of this station.
protected  DockComponentRootHandler createRootHandler()
          Creates the DockComponentRootHandler which configures the Components of this dockable.
 void drag(Dockable dockable)
          Removes a child from this station.
 void drop(Dockable dockable)
          Adds dockable to this station.
 boolean drop(Dockable dockable, DockableProperty property)
          Tries to add dockable to this station such that the location given by property is matched.
 boolean drop(Dockable dockable, FlapDockProperty property)
          Adds the Dockable dockable to this station or to a child of this station, according to the contents of property.
protected  void fireHoldChanged(Dockable dockable, boolean value)
          Informs all registered FlapDockListeners that the hold-property of a Dockable has been changed.
 int getBorderSideSnapSize()
          Tells how far the layer outside the station streches.
 DockTitle getButton(int index)
          Gets the title which is used as button for the index'th dockable.
 DockTitleVersion getButtonVersion()
          Gets the DockTitleVersion that is used to create titles for the button-panel.
 StationCombinerValue getCombiner()
          Gets the Combiner to merge Dockables
 Component getComponent()
          Gets the Component which represents this Dockable.
 FlapLayoutManager getCurrentFlapLayoutManager()
          Gets the currently used FlapLayoutManager.
 int getDefaultWindowSize()
          Gets the default size of a new window.
 DockActionSource getDirectActionOffers(Dockable dockable)
          Gets a list of actions which should be available for the user and affect the child dockable.
 FlapDockStation.Direction getDirection()
          Gets the direction in which the popup-window is currently opened.
 DefaultDisplayerFactoryValue getDisplayerFactory()
          Gets the factory to create new DockableDisplayer.
 DisplayerCollection getDisplayers()
          Gets the set of displayers currently used on this station.
 Dockable getDockable(int index)
          Gets the index'th child of this station.
 int getDockableCount()
          Gets the number of children.
 DockableProperty getDockableProperty(Dockable dockable, Dockable target)
          Gets precise information about the location of a child of this station.
 Rectangle getExpansionBounds()
          Gets the rectangle to which a flap-window will be attached.
 String getFactoryID()
          Gets the unique name of the DockFactory which can read and write elements of this type.
 FlapLayoutManager getFlapLayoutManager()
          Gets the layout manager which was explicitly set by setFlapLayoutManager(FlapLayoutManager).
 FlapWindow getFlapWindow()
          Gets the window which is currently used by this station.
 Dockable getFrontDockable()
          Gets the favorite child of this station.
protected  FlapDockStation.DockableHandle getHandle(Dockable dockable)
          Gets the wrapper of dockable.
 DockStationDropLayer[] getLayers()
          Gets a description of all the areas of the screen where this DockStation can handle a drop event.
Everytime the mouse is moved or released during a drag & drop operation, this method is called for all DockStations.
 Dimension getMinimumSize()
          Gets the minimum size this station should have.
 DefaultStationPaintValue getPaint()
          Gets the StationPaint to paint on this station.
 PlaceholderMapping getPlaceholderMapping()
          Allows access to the placeholders that are stored on this station.
 PlaceholderMap getPlaceholders()
          Gets a snapshot of all placeholders that are currently stored in this DockStation.
 PlaceholderMap getPlaceholders(Map<Dockable,Integer> children)
          Gets the placeholders of this station using a PlaceholderListItemConverter to encode the children of this station.
 PlaceholderStrategy getPlaceholderStrategy()
          Gets the PlaceholderStrategy that is currently in use.
 DockTitleVersion getTitleVersion()
          Gets the DockTitleVersion that is used to create titles for the popup-window.
 int getWindowBorder()
          Gets the size of the border of the popup-window, where the user can change the size of the window itself.
 int getWindowMinSize()
          Gets the minimal size the popup-window can have.
 int getWindowSize(Dockable dockable)
          Gets the current size of the popup-window
 int indexOf(Dockable dockable)
          Gets the location of dockable in the button-panel.
protected  void init()
          Initializes the fields of this station, hast to be called exactly once
 boolean isAutoDirection()
          Tells whether this station can change the direction itself, or if only the user can change the direction.
 boolean isFlapWindow(FlapWindow window)
          Checks whether the currently used FlapWindow equals window.
 boolean isHold(Dockable dockable)
          Tells the hold=property of dockable.
 boolean isOverButtons(int x, int y)
          Tells whether the point x/y is over the buttons of this station.
 boolean isSmallButtons()
          How the buttons are organized.
 boolean isVisible(Dockable dockable)
          Tells whether the child dockable is visible or not.
 void move(Dockable dockable, DockableProperty property)
          Tries to move the child dockable in such a way, that DockStation.getDockableProperty(Dockable, Dockable) would return a DockableProperty that equals property.
There is no need to give a guarantee that the move successes, and clients should always be prepared for the possibility that this DockStation does nothing at all.
protected  DockTitle.Orientation orientation(FlapDockStation.Direction direction)
          Determines the orientation of the DockTitles on this station.
 StationDragOperation prepareDrag(Dockable dockable)
          Informs this station that a drag and drop operation is in progress and that dockable might be removed from this station.
 StationDropOperation prepareDrop(StationDropItem item)
          Prepares this station to get the new child dockable or to move around the known child dockable.
protected  void recreateTitles()
          Deletes all titles of the button pane and then recreates them.
 void remove(Dockable dockable)
          Removes dockable from this station.
Note: clients may need to invoke DockController.freezeLayout() and DockController.meltLayout() to ensure noone else adds or removes Dockables.
 void remove(int index)
          Removes the child with the given index from this station.
Note: clients may need to invoke DockController.freezeLayout() and DockController.meltLayout() to ensure noone else adds or removes Dockables.
 void removeFlapDockStationListener(FlapDockListener listener)
          Removes an earlier added listener from this station.
 void replace(Dockable child, Dockable append)
          Replaces the child old by next which is not yet a child of this station.
 void replace(DockStation old, Dockable next)
          Replaces the child old by next which is not yet a child of this station.
 void selfSetDirection()
          Calculates the best direction for the popup-window of this station.
 void setAutoDirection(boolean autoDirection)
          Tells this station whether it can choose the direction of the popup-window itself, or if the direction remains always the same.
 void setBorderSideSnapSize(int borderSideSnapSize)
          Sets the size of the outside layer.
 void setController(DockController controller)
          Sets the controller in whose realm this Dockable is.
 void setDefaultWindowSize(int defaultWindowSize)
          Sets the default size a window should have.
 void setDirection(FlapDockStation.Direction direction)
          Sets the direction in which the popup-window points.
 void setDockParent(DockStation station)
          Sets the parent property.
 void setFlapLayoutManager(FlapLayoutManager manager)
          Sets the layout manager which should be used by this station.
 void setFrontDockable(Dockable dockable)
          Sets the most important child.
 void setHold(Dockable dockable, boolean hold)
          Tells whether the station should close the popup when the Dockable looses the focus, or if the popup should remain open until the user closes the popup.
 void setMinimumSize(Dimension size)
          Sets the minimum size this station should have.
 void setPlaceholders(PlaceholderMap placeholders)
          Sets an earlier snapshot of the placeholders of this station.
 void setPlaceholders(PlaceholderMap map, Map<Integer,Dockable> children)
          Sets a new layout on this station, this method assumes that map was created using getPlaceholders(Map).
 void setPlaceholderStrategy(PlaceholderStrategy strategy)
          Sets the PlaceholderStrategy to use, null will set the default strategy.
 void setSmallButtons(boolean smallButtons)
          Sets how the buttons are layout.
 void setWindowBorder(int windowBorder)
          Sets the size of the draggable area on the popup-window, that is used to change the size of the window.
 void setWindowMinSize(int windowMinSize)
          Sets the minimal size which the popup-window can have.
 void setWindowSize(Dockable dockable, int size)
          Sets the size of the popup-window for dockable.
 void updateHold(Dockable dockable)
          Updates the hold property of dockable.
protected  void updateWindowBounds()
          Recalculates the size and the location of the popup-window, if there is a window.
 void updateWindowSize(Dockable dockable)
          Updates the size of the window if dockable is currently shown.
 
Methods inherited from class bibliothek.gui.dock.station.AbstractDockableStation
accept, acceptable, acceptable, addDockStationListener, asDockStation, createTitleIcon, delegate, fireDockablesRepositioned, fireDockablesRepositioned, getIndirectActionOffers, getTheme, isChildShowing, isStationShowing, isStationVisible, removeDockStationListener, requestChildDisplayer, requestChildDockTitle, updateTheme
 
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, getComponentConfiguration, getConfigurableDisplayerHints, getController, getDockableStateListeners, getDockElementObserver, getDockParent, getElement, getGlobalActionOffers, getLocalActionOffers, getPopupLocation, getRootHandler, getTitleIcon, getTitleIconHandling, getTitleText, getTitleToolTip, isDockableShowing, isDockableVisible, isUsedAsTitle, listBoundTitles, removeDockableListener, removeDockableStateListener, removeDockHierarchyListener, removeKeyListener, removeMouseInputListener, requestDisplayer, requestDockTitle, resetTitleIcon, setActionOffers, setComponentConfiguration, setTitleIcon, setTitleIconHandling, 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
getController
 
Methods inherited from interface bibliothek.gui.dock.DockElement
asDockable
 
Methods inherited from interface bibliothek.gui.dock.component.DockComponentRoot
getComponentConfiguration, setComponentConfiguration
 

Field Detail

WINDOW_TITLE_ID

public static final String WINDOW_TITLE_ID
This id is used to get a DockTitleVersion from the DockController which owns this station. The titles that are created for this version are used on the popup-window.

See Also:
Constant Field Values

BUTTON_TITLE_ID

public static final String BUTTON_TITLE_ID
This id is used to get a DockTitleVersion from the DockController which owns this station. The titles that are created for this version are used as buttons on this station.

See Also:
Constant Field Values

DISPLAYER_ID

public static final String DISPLAYER_ID
This id is forwarded to Extensions which load additional DisplayerFactorys.

See Also:
Constant Field Values

LAYOUT_MANAGER

public static final PropertyKey<FlapLayoutManager> LAYOUT_MANAGER
Key for the FlapLayoutManager that is used by all FlapDockStations.


BUTTON_CONTENT

public static final PropertyKey<ButtonContent> BUTTON_CONTENT
Key for all DockThemes, tells the theme what content on the buttons should be visible. Note that some themes might ignore that setting. Changing this property will call recreateTitles(), meaning all DockTitles are removed and recreated.


BUTTON_CONTENT_FILTER

public static final PropertyKey<ButtonContentFilter> BUTTON_CONTENT_FILTER
Key for all elements that depend from BUTTON_CONTENT, adds additional information to the ButtonContent.


MINIMUM_SIZE

public static final PropertyKey<Dimension> MINIMUM_SIZE
Key for the minimum size of all FlapDockStations.


WINDOW_FACTORY

public static final PropertyKey<FlapWindowFactory> WINDOW_FACTORY
Key for a factory that creates the windows of this station.

Constructor Detail

FlapDockStation

public FlapDockStation()
Defaultconstructor of a FlapDockStation


FlapDockStation

protected FlapDockStation(boolean init)
Creates a new FlapDockStation.

Parameters:
init - true if the fields of this station should be initialized, false otherwise. If false, then init() must be called by a subclass.
Method Detail

init

protected void init()
Initializes the fields of this station, hast to be called exactly once


createButtonPane

protected ButtonPane createButtonPane()
Creates the panel which will show buttons for the children of this station.

Returns:
the new panel

createHoldAction

protected ListeningDockAction createHoldAction()
Creates a DockAction that is added to all children of this station. The action should change the hold state of the associated Dockable, this can be done through the method setHold(Dockable, boolean).

Returns:
The action, or null if no action should be added to the children

createRootHandler

protected DockComponentRootHandler createRootHandler()
Description copied from class: AbstractDockable
Creates the DockComponentRootHandler which configures the Components of this dockable.

Specified by:
createRootHandler in class AbstractDockable
Returns:
the new handler, not null

setDockParent

public void setDockParent(DockStation station)
Description copied from interface: Dockable
Sets the parent property. This Dockable is shown as direct child of station.
Note: this method has to fire a DockHierarchyEvent.
Note: when using a DockHierarchyObserver, invoke DockHierarchyObserver.update() after the property has changed, it will automatically fire a DockHierarchyEvent if necessary.

Specified by:
setDockParent in interface Dockable
Overrides:
setDockParent in class AbstractDockable
Parameters:
station - the parent, may be null if this Dockable is not visible at all.

setController

public void setController(DockController controller)
Description copied from interface: Dockable
Sets the controller in whose realm this Dockable is. A value of null means that this Dockable is not managed by a controller.
Note: this method has to inform all DockHierarchyListeners about the change.
Note: when using a DockHierarchyObserver, invoke DockHierarchyObserver.controllerChanged(DockController)

Specified by:
setController in interface Dockable
Specified by:
setController in interface DockStation
Overrides:
setController in class AbstractDockable
Parameters:
controller - the owner, may be null

callDockUiUpdateTheme

protected void callDockUiUpdateTheme()
                              throws IOException
Description copied from class: AbstractDockableStation
Calls the method DockUI.DockUI.updateTheme(DockStation, DockFactory) with this as the first argument, and an appropriate factory as the second argument.

Specified by:
callDockUiUpdateTheme in class AbstractDockableStation
Throws:
IOException - if the DockUI throws an exception

getDirection

public FlapDockStation.Direction getDirection()
Gets the direction in which the popup-window is currently opened.

Returns:
The direction

setDirection

public void setDirection(FlapDockStation.Direction direction)
Sets the direction in which the popup-window points. The direction may be overridden, if the property autoDirection is set to true.

Parameters:
direction - The direction of the popup-window

orientation

protected DockTitle.Orientation orientation(FlapDockStation.Direction direction)
Determines the orientation of the DockTitles on this station.

Parameters:
direction - the direction in which the flap opens
Returns:
the orientation of the titles

updateWindowBounds

protected void updateWindowBounds()
Recalculates the size and the location of the popup-window, if there is a window.


getMinimumSize

public Dimension getMinimumSize()
Gets the minimum size this station should have.

Returns:
the minimum size, never null

setMinimumSize

public void setMinimumSize(Dimension size)
Sets the minimum size this station should have. A value of null is valid and will let this station use the property MINIMUM_SIZE.

Parameters:
size - the new minimum size or null

getDisplayerFactory

public DefaultDisplayerFactoryValue getDisplayerFactory()
Gets the factory to create new DockableDisplayer.

Returns:
the factory

getDisplayers

public DisplayerCollection getDisplayers()
Gets the set of displayers currently used on this station.

Returns:
the set of displayers

getCombiner

public StationCombinerValue getCombiner()
Gets the Combiner to merge Dockables

Returns:
the combiner

getPaint

public DefaultStationPaintValue getPaint()
Gets the StationPaint to paint on this station.

Returns:
The paint

getExpansionBounds

public Rectangle getExpansionBounds()
Gets the rectangle to which a flap-window will be attached. The default is a rectangle that lies exactly over this component. The coordinates of the result are relative to the component of this station.

Returns:
the free area near a window

isAutoDirection

public boolean isAutoDirection()
Tells whether this station can change the direction itself, or if only the user can change the direction.

Returns:
true if the station chooses the direction itself
See Also:
setAutoDirection(boolean)

setAutoDirection

public void setAutoDirection(boolean autoDirection)
Tells this station whether it can choose the direction of the popup-window itself, or if the direction remains always the same.

Parameters:
autoDirection - true if the station can choose the direction itself, false otherwise

selfSetDirection

public void selfSetDirection()
Calculates the best direction for the popup-window of this station.


getFrontDockable

public Dockable getFrontDockable()
Description copied from interface: DockStation
Gets the favorite child of this station. The favorite child is the one child which is specially designated for the user. An example: if the station behaves like a stack, and only the top child is visible, then the favorite child could the the top.
A result of null indicates that there are no children at all, or that there is no favorite child (all children are equal important).
Stations should not change this property directly, they should call DockController.setFocusedDockable(Dockable, boolean) which will then call DockStation.setFrontDockable(Dockable). Note that the DockController itself listens to the DockTitles, and maybe the station doesn't need a logic to decide which child is important.

Returns:
the most important child or null

setFrontDockable

public void setFrontDockable(Dockable dockable)
Description copied from interface: DockStation
Sets the most important child. The station should ensure that this child is visible (assuming the station itself is visible). Read the comment on DockStation.getFrontDockable() how stations can change this property.

Parameters:
dockable - the new favorite child, can be null
See Also:
DockStation.getFrontDockable()

createFlapWindow

protected FlapWindow createFlapWindow(ButtonPane buttonPane)
Creates a window for this station.

Parameters:
buttonPane - the panel needed to calculate the size of the window
Returns:
the window or null if no window could be created

isHold

public boolean isHold(Dockable dockable)
Tells the hold=property of dockable.

Parameters:
dockable - the Dockable whose property is asked
Returns:
the current state
See Also:
setHold(Dockable, boolean)

setHold

public void setHold(Dockable dockable,
                    boolean hold)
Tells whether the station should close the popup when the Dockable looses the focus, or if the popup should remain open until the user closes the popup. The value is forwarded to the layout manager of this station, the layout manager can then decide if and how it would like to react.

Parameters:
dockable - the Dockable whose settings should change
hold - true if the popup should remain open, false if it should close

updateHold

public void updateHold(Dockable dockable)
Updates the hold property of dockable. The new value is provided by the layout manager.

Parameters:
dockable - the element whose property is updated

isSmallButtons

public boolean isSmallButtons()
How the buttons are organized.

Returns:
true if the buttons are layout in a way that needs not much space.
See Also:
setSmallButtons(boolean)

setSmallButtons

public void setSmallButtons(boolean smallButtons)
Sets how the buttons are layout. If true, then the buttons have their preferred size. If false the buttons take all available space of this station.

Parameters:
smallButtons - true if the buttons should be small

getTitleVersion

public DockTitleVersion getTitleVersion()
Gets the DockTitleVersion that is used to create titles for the popup-window.

Returns:
the version of titles for the popup, can be null

getButtonVersion

public DockTitleVersion getButtonVersion()
Gets the DockTitleVersion that is used to create titles for the button-panel.

Returns:
the version of titles for buttons, can be null

getWindowBorder

public int getWindowBorder()
Gets the size of the border of the popup-window, where the user can change the size of the window itself.

Returns:
the popup-size
See Also:
setWindowBorder(int)

setWindowBorder

public void setWindowBorder(int windowBorder)
Sets the size of the draggable area on the popup-window, that is used to change the size of the window.

Parameters:
windowBorder - the border, at least 0

getWindowMinSize

public int getWindowMinSize()
Gets the minimal size the popup-window can have.

Returns:
the minimal size
See Also:
setWindowMinSize(int)

setWindowMinSize

public void setWindowMinSize(int windowMinSize)
Sets the minimal size which the popup-window can have.

Parameters:
windowMinSize - the minimal size

getWindowSize

public int getWindowSize(Dockable dockable)
Gets the current size of the popup-window

Parameters:
dockable - the element for which the size should be returned
Returns:
the current size

setWindowSize

public void setWindowSize(Dockable dockable,
                          int size)
Sets the size of the popup-window for dockable. The value will be forwarded to the layout manager of this station, the layout manager can decide if and how the new size is to be stored.

Parameters:
dockable - the element for which the size should be set
size - the size, at least 0

updateWindowSize

public void updateWindowSize(Dockable dockable)
Updates the size of the window if dockable is currently shown. The new size is provided by the layout manager.

Parameters:
dockable - the element whose size should be updated

setDefaultWindowSize

public void setDefaultWindowSize(int defaultWindowSize)
Sets the default size a window should have. This property might be overridden by the layout manager.

Parameters:
defaultWindowSize - the default size of windows

getDefaultWindowSize

public int getDefaultWindowSize()
Gets the default size of a new window.

Returns:
the default size

setFlapLayoutManager

public void setFlapLayoutManager(FlapLayoutManager manager)
Sets the layout manager which should be used by this station. The manager can be changed on a global level using LAYOUT_MANAGER.

Parameters:
manager - the manager or null when a default manager should be used

getFlapLayoutManager

public FlapLayoutManager getFlapLayoutManager()
Gets the layout manager which was explicitly set by setFlapLayoutManager(FlapLayoutManager).

Returns:
the manager or null

getCurrentFlapLayoutManager

public FlapLayoutManager getCurrentFlapLayoutManager()
Gets the currently used FlapLayoutManager.

Returns:
the current manager

getPlaceholderStrategy

public PlaceholderStrategy getPlaceholderStrategy()
Gets the PlaceholderStrategy that is currently in use.

Returns:
the current strategy, may be null

setPlaceholderStrategy

public void setPlaceholderStrategy(PlaceholderStrategy strategy)
Sets the PlaceholderStrategy to use, null will set the default strategy.

Parameters:
strategy - the new strategy, can be null

addFlapDockStationListener

public void addFlapDockStationListener(FlapDockListener listener)
Adds a listener to this station. The listener will be invoked when some properties of this station change.

Parameters:
listener - the new listener

removeFlapDockStationListener

public void removeFlapDockStationListener(FlapDockListener listener)
Removes an earlier added listener from this station.

Parameters:
listener - the listener to remove

fireHoldChanged

protected void fireHoldChanged(Dockable dockable,
                               boolean value)
Informs all registered FlapDockListeners that the hold-property of a Dockable has been changed.

Parameters:
dockable - the Dockable whose property is changed
value - the new value of the property

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
Overrides:
getDirectActionOffers in class AbstractDockableStation
Parameters:
dockable - a child of this station
Returns:
actions for dockable, can be null

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
Overrides:
changed in class AbstractDockableStation
Parameters:
dockable - the child whose title is changed
title - the changed title, may not be bound
active - the new state of the title

isFlapWindow

public boolean isFlapWindow(FlapWindow window)
Checks whether the currently used FlapWindow equals window.

Parameters:
window - a window
Returns:
true if window is currently used by this station

getFlapWindow

public FlapWindow getFlapWindow()
Gets the window which is currently used by this station. The window may or may not be shown currently. Callers should not modify the window.

Returns:
the current window, might be null

getPlaceholders

public PlaceholderMap getPlaceholders()
Description copied from interface: DockStation
Gets a snapshot of all placeholders that are currently stored in this DockStation. A DockStation is free in the format it chooses to fill the map. The map is to be created with the assumptions that DockStation.getDockableCount() is 0, meaning any existing Dockable gets replaced by its placeholder. The current PlaceholderStrategy should be used to convert Dockables to placeholders.
Clients interested in modifying the placeholders of this station should call DockStation.getPlaceholderMapping().

Returns:
the map of placeholders or null if this station does not support placeholders

getPlaceholderMapping

public PlaceholderMapping getPlaceholderMapping()
Description copied from interface: DockStation
Allows access to the placeholders that are stored on this station. Clients may use the PlaceholderMapping to add or remove placeholders from the station.
Not all stations support placeholders, and these station may return a mapping that performs no actions.

Returns:
access to the placeholders

setPlaceholders

public void setPlaceholders(PlaceholderMap placeholders)
Description copied from interface: DockStation
Sets an earlier snapshot of the placeholders of this station. This station can assume that it currently does not have any children (that DockStation.getDockableCount() is 0).
This method does nothing if it cannot handle the format or the version of placeholders.

Parameters:
placeholders - some set of placeholders

getPlaceholders

public PlaceholderMap getPlaceholders(Map<Dockable,Integer> children)
Gets the placeholders of this station using a PlaceholderListItemConverter to encode the children of this station. To be exact, the converter puts the following parameters for each Dockable into the map:

Parameters:
children - a unique identifier for each child of this station
Returns:
the map

setPlaceholders

public void setPlaceholders(PlaceholderMap map,
                            Map<Integer,Dockable> children)
Sets a new layout on this station, this method assumes that map was created using getPlaceholders(Map).

Parameters:
map - the map to read
children - the new children of this stations
Throws:
IllegalStateException - if there are children left on this station

getLayers

public DockStationDropLayer[] getLayers()
Description copied from interface: DockStation
Gets a description of all the areas of the screen where this DockStation can handle a drop event.
Everytime the mouse is moved or released during a drag & drop operation, this method is called for all DockStations. The returned DockStationDropLayers are then filtered and ordered, the resulting order defines the order in which the method DockStation.prepareDrop(StationDropItem) is called.

Specified by:
getLayers in interface DockStation
Overrides:
getLayers in class AbstractDockableStation
Returns:
all the layers of this station, must not be null, must not contain null, must not contain the same entry twice. The array or the DockStationDropLayers may be modified, hence this method should always create new objects.

setBorderSideSnapSize

public void setBorderSideSnapSize(int borderSideSnapSize)
Sets the size of the outside layer. If the mouse is outside this station, but within borderSideSnapSize, then this station may still be the target of a drag and drop operation.

Parameters:
borderSideSnapSize - the size in pixels

getBorderSideSnapSize

public int getBorderSideSnapSize()
Tells how far the layer outside the station streches.

Returns:
the size of the outside layer
See Also:
setBorderSideSnapSize(int)

prepareDrag

public StationDragOperation prepareDrag(Dockable dockable)
Description copied from interface: DockStation
Informs this station that a drag and drop operation is in progress and that dockable might be removed from this station.

Parameters:
dockable - the child that might be removed in the near future
Returns:
a callback that will be informed when the dockable was removed or the operation canceleled, can be null

prepareDrop

public StationDropOperation prepareDrop(StationDropItem item)
Description copied from interface: DockStation
Prepares this station to get the new child dockable or to move around the known child dockable. The station can refuse dockable, in this case this method just returns null. There are some constraints:

Parameters:
item - information about the dockable that is going to be dropped
Returns:
an object describing where the Dockable can be dropped or null if no drop operation is possible

drop

public void drop(Dockable dockable)
Description copied from interface: DockStation
Adds dockable to this station. The station can decide by its own where to put dockable.

Parameters:
dockable - a new child

drop

public boolean drop(Dockable dockable,
                    DockableProperty property)
Description copied from interface: DockStation
Tries to add dockable to this station such that the location given by property is matched. If property has a successor and points to another station, just call the drop-method of this child-station. Note that property can be of any type and contain invalid information.

Parameters:
dockable - the new child
property - the location of the child, may be invalid data
Returns:
true if property could be read and dockable was dropped, false otherwise.

drop

public boolean drop(Dockable dockable,
                    FlapDockProperty property)
Adds the Dockable dockable to this station or to a child of this station, according to the contents of property.

Parameters:
dockable - the new child
property - the location of the new child
Returns:
true if the new child could be added, false if the child has been rejected

getDockableProperty

public DockableProperty getDockableProperty(Dockable dockable,
                                            Dockable target)
Description copied from interface: DockStation
Gets precise information about the location of a child of this station. The result of this method could later be used to invoke DockStation.drop(Dockable, DockableProperty).

Parameters:
dockable - a child of this station, this childs location is asked
target - an optional hint telling for which dockable the location information will be used, can be null. This hint can be used to find a placeholder that should be part of the result.
Returns:
the location
See Also:
DockUtilities.getPropertyChain(DockStation, Dockable)

aside

public void aside(AsideRequest request)
Description copied from interface: DockStation
Requests this DockStation to find a DockableProperty that is "aside" another property. What exactly the meaning of "aside" is, is left to the implementation. Usually "aside" means on the same "stack" but with the next higher index.
The request object contains information about the location whose neighbor is searched, about a placeholder that should be used for the new location, and offers methods to forward the call to the next DockStation or Combiner if there is a successor.
This method should call the answer methods of request with every kind of information it finds.
If this method cannot handle request, then it just has to return without calling any of the answer methods.

Parameters:
request - information about a location and methods to create the neighbor location
See Also:
Combiner.aside(AsideRequest)

move

public void move(Dockable dockable,
                 DockableProperty property)
Description copied from interface: DockStation
Tries to move the child dockable in such a way, that DockStation.getDockableProperty(Dockable, Dockable) would return a DockableProperty that equals property.
There is no need to give a guarantee that the move successes, and clients should always be prepared for the possibility that this DockStation does nothing at all.

Parameters:
dockable - a child of this station
property - the preferred position of dockable

isOverButtons

public boolean isOverButtons(int x,
                             int y)
Tells whether the point x/y is over the buttons of this station.

Parameters:
x - the x-coordinate on the screen
y - the y-coordinate on the screen
Returns:
true if the point x/y is over the buttons

canDrag

public boolean canDrag(Dockable dockable)
Description copied from interface: DockStation
Tells whether dockable can be removed from this station or not. This method assumes that dockable is a child of this station, if not, then the behavior of this method is unspecified.
Note that the result of this method may not be respected every time, it's more a hint for the controller how to act.

Parameters:
dockable - a child of this station
Returns:
true if dockable can be dragged

drag

public void drag(Dockable dockable)
Description copied from interface: DockStation
Removes a child from this station. This method may be called even if DockStation.canDrag(Dockable) returned false.
Note: clients may need to invoke DockController.freezeLayout() and DockController.meltLayout() to ensure noone else adds or removes Dockables.

Parameters:
dockable - the child to remove

getFactoryID

public String getFactoryID()
Description copied from interface: DockElement
Gets the unique name of the DockFactory which can read and write elements of this type.

Returns:
the id of the factory

getComponent

public Component getComponent()
Description copied from interface: Dockable
Gets the Component which represents this Dockable. Note that the component should be a focus cycle root

Returns:
the visible representation

getDockableCount

public int getDockableCount()
Description copied from interface: DockStation
Gets the number of children.

Returns:
the number of children on this station

getDockable

public Dockable getDockable(int index)
Description copied from interface: DockStation
Gets the index'th child of this station.

Parameters:
index - a value between 0 (incl.) and DockStation.getDockableCount() (excl.).
Returns:
a child of this station

getButton

public DockTitle getButton(int index)
Gets the title which is used as button for the index'th dockable. Clients should not modify the result of this method.

Parameters:
index - the index of a Dockable
Returns:
the title or null

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
Overrides:
isVisible in class AbstractDockableStation
Parameters:
dockable - the child whose visibility-state is questioned
Returns:
whether dockable is visible or not
See Also:
DockStation.isStationVisible()

recreateTitles

protected void recreateTitles()
Deletes all titles of the button pane and then recreates them.


remove

public void remove(Dockable dockable)
Removes dockable from this station.
Note: clients may need to invoke DockController.freezeLayout() and DockController.meltLayout() to ensure noone else adds or removes Dockables.

Parameters:
dockable - the child to remove

remove

public void remove(int index)
Removes the child with the given index from this station.
Note: clients may need to invoke DockController.freezeLayout() and DockController.meltLayout() to ensure noone else adds or removes Dockables.

Parameters:
index - the index of the child that will be removed

add

public void add(Dockable dockable)
Adds dockable as new child to this station. The child is added at the end of all children.

Parameters:
dockable - the new child

add

public void add(Dockable dockable,
                int index)
Inserts dockable as new child in the list of children.

Parameters:
dockable - the new child
index - the location in the button-panel of the child

createHandle

protected FlapDockStation.DockableHandle createHandle(Dockable dockable)
Creates a new wrapper around dockable, the wrapper is used as internal representation of dockable.

Parameters:
dockable - the element for which a new wrapper is created
Returns:
the new wrapper, must not be null

getHandle

protected FlapDockStation.DockableHandle getHandle(Dockable dockable)
Gets the wrapper of dockable.

Parameters:
dockable - a child of this station
Returns:
the wrapper or null if not yet created or if dockable is not a child of this station

combine

public boolean combine(Dockable child,
                       Dockable append)
Creates a combination out of child, which must be a child of this station, and append which must not be a child of this station.

Parameters:
child - a child of this station
append - a Dockable that is not a child of this station
Returns:
true if the combination was successful, false otherwise (the child will remain on this station)

combine

public boolean combine(Dockable child,
                       Dockable append,
                       DockableProperty property)
Creates a combination out of child, which must be a child of this station, and append which must not be a child of this station.

Parameters:
child - a child of this station
append - a Dockable that is not a child of this station
property - location information associated with append
Returns:
true if the combination was successful, false otherwise (the child will remain on this station)

canReplace

public boolean canReplace(Dockable old,
                          Dockable next)
Description copied from interface: DockStation
Tells whether its possible to replace the child old with next where next is not a child of this station.

Parameters:
old - a child of this station
next - the replacement of next.
Returns:
true if the replacement is possible

replace

public void replace(DockStation old,
                    Dockable next)
Description copied from interface: DockStation
Replaces the child old by next which is not yet a child of this station. This method should not be called if canReplace returned false. This method can assume that next was a child of old but no longer is.

Parameters:
old - a dockable station that is a child of this station
next - the replacement of old

replace

public void replace(Dockable child,
                    Dockable append)
Description copied from interface: DockStation
Replaces the child old by next which is not yet a child of this station. This method should not be called if canReplace returned false.

Parameters:
child - a child
append - the replacement of old

indexOf

public int indexOf(Dockable dockable)
Gets the location of dockable in the button-panel.

Parameters:
dockable - the Dockable to search
Returns:
the location or -1 if the child was not found