org.flexdock.docking.defaults

## Class DockingSplitPane

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.JSplitPane
        - - org.flexdock.docking.defaults.DockingSplitPane

All Implemented Interfaces:
  java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, DockingConstants

    public class DockingSplitPane
    extends javax.swing.JSplitPane
    implements DockingConstants

Author:
  Christopher Butler
See Also:
  Serialized Form

### Nested Class Summary

### Nested classes/interfaces inherited from class javax.swing.JSplitPane

`javax.swing.JSplitPane.AccessibleJSplitPane`

### Nested classes/interfaces inherited from class javax.swing.JComponent

`javax.swing.JComponent.AccessibleJComponent`

### Nested classes/interfaces inherited from class java.awt.Container

`java.awt.Container.AccessibleAWTContainer`

### Nested classes/interfaces inherited from class java.awt.Component

`java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

### Field Summary

Fields
`protected boolean` `controllerInTopLeft`
`protected boolean` `dividerLocDetermined`
`protected DockingPort` `dockingPort`
`protected double` `initialDividerRatio`
`protected double` `percent`
`protected java.lang.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

Constructors
Constructor and Description
`DockingSplitPane(DockingPort port, java.lang.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

Methods
`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()`
`java.awt.Component` `getElderComponent()` Returns the 'oldest' `Component` to have been added to this `DockingSplitPane` as a result of a docking operation.
`double` `getPercent()`
`java.lang.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 java.lang.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,
                    java.lang.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 `javax.swing.JSplitPane`

#### setDividerLocation

    public void setDividerLocation(double percent)

Overrides:
  `setDividerLocation` in class `javax.swing.JSplitPane`

#### getPercent

    public double getPercent()

#### isDividerSizeProperlyDetermined

    protected boolean isDividerSizeProperlyDetermined()

#### getElderComponent

    public java.awt.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 java.lang.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 `java.awt.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:
  `java.lang.IllegalArgumentException` - if `ratio` is less than 0.0 or greater than 1.0.

#### finalize

    protected void finalize()
                     throws java.lang.Throwable

Overrides:
  `finalize` in class `java.lang.Object`
Throws:
  `java.lang.Throwable`