Package org.flexdock.docking
Interface DockingStrategy
- All Known Implementing Classes:
DefaultDockingStrategy
public interface DockingStrategy
This interface defines an API used by
DockingManager and
DockingPort to support customizable behaviors during docking
operations. DockingManager will associate a DockingStrategy
with a particular DockingPort or Dockable class type. Calls
to DockingManager.dock() and DockingManager.undock() will be
deferred to the DockingStrategy associated with the parameters
supplied in the respective method calls. DockingStrategies are also
responsible for creating sub-DockingPorts and split panes for nested
DockingPorts
Implementations of DockingStrategy are responsible for managing
component relationships between Dockables and parent containers. This
includes making determinations as to whether a particular docking operation
will be allowed for the specified parameters and the specifics of how a
particular Dockable may be removed from one parent
Container or DockingPort and added to another.
DockingStrategy may determine whether a call to dock()
implies an attempt to float a Dockable in a separate window.
Because of the potentially large scope of responsibilities associated with a
DockingStrategy, implementations may range from being very simple to
highly complex. Although custom implementations of DockingStrategy
are not discouraged, the recommeded path is to subclass
DefaultDockingStrategy for consistency of behavior.
DockingStrategies are associated with a particular type of
Dockable or DockingPort by calling
DockingManager.setDockingStrategy(Class c, DockingStrategy strategy).
DefaultDockingStrategy is the default implementation used for all
classes that do not have a custom DockingStrategy registered.- Author:
- Christopher Butler
-
Method Summary
Modifier and TypeMethodDescriptioncreateDockingPort(DockingPort base) Creates and returns a newDockingPortinstance based upon the suppliedDockingPortparameter.createSplitPane(DockingPort base, String region) Creates and returns a newJSplitPaneinstance based upon the supplied parameters.createSplitPane(DockingPort base, String region, float percent) Creates and returns a newJSplitPaneinstance based upon the supplied parameters.booleandock(Dockable dockable, DockingPort dockingPort, String dockingRegion) Attempts to dock the specifiedDockableinto the suppliedDockingPortin the specified region.booleandock(Dockable dockable, DockingPort dockingPort, String dockingRegion, DragOperation operation) Attempts to dock the specifiedDockableinto the suppliedDockingPortin the specified region based upon the semantics of the specifiedDragOperation.doublegetDividerProportion(DockingPort dockingPort, JSplitPane splitPane) Returns the desired divider proportion of the specifiedJSplitPaneafter rendering.intgetInitialDividerLocation(DockingPort dockingPort, JSplitPane splitPane) Returns the initial divider location to be used by the specifiedJSplitPane.booleanUndocks the specifiedDockableinstance from its containingDockingPort.
-
Method Details
-
dock
Attempts to dock the specifiedDockableinto the suppliedDockingPortin the specified region. If docking is not possible for the specified parameters, then the method returnsfalseand no action is taken. Since there is noDragOperationparameter present, this method implies programmatic docking as opposed to docking as a result of drag-events.- Parameters:
dockable- theDockablewe wish to dockdockingPort- theDockingPortinto which we wish to dockdockingRegion- the region of the specifiedDockingPortinto which we wish to dock.- Returns:
- whether or not the docking operation was successful.
-
dock
boolean dock(Dockable dockable, DockingPort dockingPort, String dockingRegion, DragOperation operation) Attempts to dock the specifiedDockableinto the suppliedDockingPortin the specified region based upon the semantics of the specifiedDragOperation. If docking is not possible for the specified parameters, then the method returnsfalseand no action is taken.- Parameters:
dockable- theDockablewe wish to dockdockingPort- theDockingPortinto which we wish to dockdockingRegion- the region of the specifiedDockingPortinto which we wish to dock.operation- theDragOperationdescribing the state of the application/mouse at the point in time in which we're attempting to dock.- Returns:
- whether or not the docking operation was successful.
-
undock
Undocks the specifiedDockableinstance from its containingDockingPort.- Parameters:
dockable- theDockablewe wish to undock- Returns:
trueif theDockablewas successfully undocked. Otherwise, returnsfalse.
-
createDockingPort
Creates and returns a newDockingPortinstance based upon the suppliedDockingPortparameter. For layouts that support nestedDockingPorts, this method is useful for creating childDockingPortssuitable for embedding within the baseDockingPort- Parameters:
base- theDockingPortoff of which the returned instance will be based.- Returns:
- a new
DockingPortinstance based upon the supplied parameter.
-
createSplitPane
Creates and returns a newJSplitPaneinstance based upon the supplied parameters. The returnedJSplitPaneshould be suitable for embedding within the baseDockingPortand its orientation should reflect the suppliedregionparameter.- Parameters:
base- theDockingPortoff of which the returnedJSplitPanewill be based.region- the region within the baseDockingPortused to determine the orientation of the returnedJSplitPane.- Returns:
- a new
JSplitPanesuitable for embedding within the baseDockingPortparameter.
-
createSplitPane
Creates and returns a newJSplitPaneinstance based upon the supplied parameters. The returnedJSplitPaneshould be suitable for embedding within the baseDockingPortand its orientation should reflect the suppliedregionparameter.- Parameters:
base- theDockingPortoff of which the returnedJSplitPanewill be based.region- the region within the baseDockingPortused to determine the orientation of the returnedJSplitPane.percent- the percentage used in the split.- Returns:
- a new
JSplitPanesuitable for embedding within the baseDockingPortparameter.
-
getInitialDividerLocation
Returns the initial divider location to be used by the specifiedJSplitPane. This method assumes that theJSplitPaneparameter is embedded within the specifiedDockingPortand that is has been validated and its current dimensions are non-zero.- Parameters:
dockingPort- theDockingPortthat contains, or will contain the specifiedJSplitPane.splitPane- theJSplitPanewhose initial divider location is to be determined.- Returns:
- the desired divider location of the supplied
JSplitPane.
-
getDividerProportion
Returns the desired divider proportion of the specifiedJSplitPaneafter rendering. This method assumes that theJSplitPaneparameter is, or will be embedded within the specifiedDockingPort. This method does not assume that theJSplitPanehas been validated and that it's current dimensions are non-zero.- Parameters:
dockingPort- theDockingPortthat contains, or will contain the specifiedJSplitPane.splitPane- theJSplitPanewhose initial divider location is to be determined.- Returns:
- the desired divider proportion of the supplied
JSplitPane.
-