org.flexdock.docking.defaults
Class DockingSplitPane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JSplitPane
                  extended by org.flexdock.docking.defaults.DockingSplitPane
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, DockingConstants

public class DockingSplitPane
extends JSplitPane
implements DockingConstants

Author:
Christopher Butler
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JSplitPane
JSplitPane.AccessibleJSplitPane
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  boolean controllerInTopLeft
           
protected  boolean dividerLocDetermined
           
protected  DockingPort dockingPort
           
protected  double initialDividerRatio
           
protected  double percent
           
protected  String region
           
 
Fields inherited from class javax.swing.JSplitPane
BOTTOM, CONTINUOUS_LAYOUT_PROPERTY, continuousLayout, DIVIDER, DIVIDER_LOCATION_PROPERTY, DIVIDER_SIZE_PROPERTY, dividerSize, HORIZONTAL_SPLIT, LAST_DIVIDER_LOCATION_PROPERTY, lastDividerLocation, LEFT, leftComponent, ONE_TOUCH_EXPANDABLE_PROPERTY, oneTouchExpandable, orientation, ORIENTATION_PROPERTY, RESIZE_WEIGHT_PROPERTY, RIGHT, rightComponent, TOP, VERTICAL_SPLIT
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface org.flexdock.docking.DockingConstants
ACTIVE_WINDOW, BOTTOM, CENTER, CENTER_REGION, CLOSE_ACTION, DEFAULT_PERSISTENCE_KEY, DOCKING_ID, EAST_REGION, HEAVYWEIGHT_DOCKABLES, HORIZONTAL, LEFT, MOUSE_PRESSED, NORTH_REGION, PERMANENT_FOCUS_OWNER, PIN_ACTION, REGION, RIGHT, SOUTH_REGION, TOP, UNINITIALIZED, UNINITIALIZED_RATIO, UNKNOWN_REGION, UNSPECIFIED_SIBLING_PREF, VERTICAL, WEST_REGION
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
DockingSplitPane(DockingPort port, String region)
          Creates a new DockingSplitPane for the specified DockingPort with the understanding that the resulting DockingSplitPane will be used for docking a Dockable into the DockingPort's specified region.
 
Method Summary
 void cleanup()
          Releases any internal references to external objects to aid garbage collection.
 void doLayout()
          Overridden to ensure proper divider location on initial rendering.
protected  void finalize()
           
 Component getElderComponent()
          Returns the 'oldest' Component to have been added to this DockingSplitPane as a result of a docking operation.
 double getPercent()
           
 String getRegion()
          Returns the docking region for which this DockingSplitPane was created.
protected  boolean isDividerSizeProperlyDetermined()
           
 boolean isElderTopLeft()
          Indicates whether the 'oldest' Component to have been added to this DockingSplitPane as a result of a docking operation is in the TOP or LEFT side of the split pane.
 void resetToPreferredSizes()
           
 void setConstantPercent(boolean cstPercent)
           
 void setDividerLocation(double percent)
           
 void setInitialDividerRatio(double ratio)
          Sets the initial divider ration for creating split panes.
 
Methods inherited from class javax.swing.JSplitPane
addImpl, getAccessibleContext, getBottomComponent, getDividerLocation, getDividerSize, getLastDividerLocation, getLeftComponent, getMaximumDividerLocation, getMinimumDividerLocation, getOrientation, getResizeWeight, getRightComponent, getTopComponent, getUI, getUIClassID, isContinuousLayout, isOneTouchExpandable, isValidateRoot, paintChildren, paramString, remove, remove, removeAll, setBottomComponent, setContinuousLayout, setDividerLocation, setDividerSize, setLastDividerLocation, setLeftComponent, setOneTouchExpandable, setOrientation, setResizeWeight, setRightComponent, setTopComponent, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

dockingPort

protected DockingPort dockingPort

region

protected String region

dividerLocDetermined

protected boolean dividerLocDetermined

controllerInTopLeft

protected boolean controllerInTopLeft

initialDividerRatio

protected double initialDividerRatio

percent

protected double percent
Constructor Detail

DockingSplitPane

public DockingSplitPane(DockingPort port,
                        String region)
Creates a new DockingSplitPane for the specified DockingPort with the understanding that the resulting DockingSplitPane will be used for docking a Dockable into the DockingPort's specified region. Neither port or region may be null. region must be a valid docking region as defined by isValidDockingRegion(String region).

Parameters:
port - the DockingPort for which this DockingSplitPane is to be created.
region - the region within the specified DockingPort for which this DockingSplitPane is to be created.
Throws:
{@code - IllegalArgumentException} if either port is null or }region} is null or invalid.
See Also:
DockingManager.isValidDockingRegion(String)
Method Detail

setConstantPercent

public void setConstantPercent(boolean cstPercent)

resetToPreferredSizes

public void resetToPreferredSizes()
Overrides:
resetToPreferredSizes in class JSplitPane

setDividerLocation

public void setDividerLocation(double percent)
Overrides:
setDividerLocation in class JSplitPane

getPercent

public double getPercent()

isDividerSizeProperlyDetermined

protected boolean isDividerSizeProperlyDetermined()

getElderComponent

public Component getElderComponent()
Returns the 'oldest' Component to have been added to this DockingSplitPane as a result of a docking operation. A DockingSplitPane is created based upon the need to share space within a DockingPort between two Dockables. This happens when a new Dockable is introduced into an outer region of a DockingPort that already contains a Dockable. The Dockable that was in the DockingPort prior to splitting the layout is the 'elder' Component and, in many circumstances, may be used to control initial divider location and resize weight.

If this split pane contains DockingPorts as its child components, then this method will return the Component determined by calling getDockedComponent() for the DockingPort in this split pane's elder region.

The elder region of this DockingSplitPane is determined using the value returned from getRegion(), where getRegion() indicates the docking region of the 'new' Dockable for this DockingSplitPane.

Returns:
the 'oldest' Component to have been added to this DockingSplitPane as a result of a docking operation.
See Also:
getRegion(), DockingPort.getDockedComponent()

getRegion

public String getRegion()
Returns the docking region for which this DockingSplitPane was created. A DockingSplitPane is created based upon the need to share space within a DockingPort between two Dockables. This happens when a new Dockable is introduced into an outer region of a DockingPort that already contains a Dockable. This method returns that outer region for which this DockingSplitPane was created and may be used to control the orientation of the split pane. The region returned by this method will be the same passed into the DockingSplitPane constructor on instantiation.

Returns:
the docking region for which this DockingSplitPane was created.
See Also:
DockingSplitPane(DockingPort, String)

isElderTopLeft

public boolean isElderTopLeft()
Indicates whether the 'oldest' Component to have been added to this DockingSplitPane as a result of a docking operation is in the TOP or LEFT side of the split pane. A DockingSplitPane is created based upon the need to share space within a DockingPort between two Dockables. This happens when a new Dockable is introduced into an outer region of a DockingPort that already contains a Dockable. The Dockable that was in the DockingPort prior to splitting the layout is the 'elder' Component and is returned by getElderComponent(). This method indicates whether or not that Component is in the TOP or LEFT side of this DockingSplitPane.

The elder region of this DockingSplitPane is determined using the value returned from getRegion(), where getRegion() indicates the docking region of the 'new' Dockable for this DockingSplitPane.

Returns:
true if the 'oldest' Component to have been added to this DockingSplitPane is in the TOP or LEFT side of the split pane; false otherwise.
See Also:
getElderComponent(), getRegion()

doLayout

public void doLayout()
Overridden to ensure proper divider location on initial rendering. Sometimes, a split divider location is set as a proportion before the split pane itself has been fully realized in the container hierarchy. This results in a layout calculation based on a proportion of zero width or height, rather than the desired proportion of width or height after the split pane has been fully rendered. This method ensures that default JSplitPane layout behavior is deferred until after the initial dimensions of this split pane have been properly determined.

Overrides:
doLayout in class Container
See Also:
Container.doLayout(), JSplitPane.setDividerLocation(double)

cleanup

public void cleanup()
Releases any internal references to external objects to aid garbage collection. This method is public and may be invoked manually for proactive memory management. Otherwise, this method is invoked by this DockingSplitPane's finalize() method.


setInitialDividerRatio

public void setInitialDividerRatio(double ratio)
Sets the initial divider ration for creating split panes. The default value is 0.5.

Parameters:
ratio - a ratio for determining weighting between the two sides of a split pane.
Throws:
IllegalArgumentException - if ratio is less than 0.0 or greater than 1.0.

finalize

protected void finalize()
                 throws Throwable
Overrides:
finalize in class Object
Throws:
Throwable