org.flexdock.docking.defaults

## Class StandardBorderManager

- java.lang.Object
- - org.flexdock.docking.defaults.StandardBorderManager

All Implemented Interfaces:
  BorderManager

    public class StandardBorderManager
    extends java.lang.Object
    implements BorderManager

This class provides a standard implementation of the `BorderManager` interface. It is designed to avoid the negative visual effects caused by nesting docked components that have individual borders. It accomplishes this by establishing and maintaining a single border for all docked components This class encapsulates a `javax.swing.border.Border` instance, or a `null` border reference, for application to a `DefaultDockingPort` and its child components. If the `DefaultDockingPort` has no child component, then `managePortNullChild()` will apply the encapsulated border to the `DefaultDockingPort` itself, rendering the visible outline of an empty `DockingPort`. If the `DefaultDockingPort` has a generic `Component` as its child, excluding a `JTabbedPane` or `JSplitPane`, then the border for that component is set to `null` and the encapsulated border is applied to the `DockingPort` via `managePortSimpleChild()`. If the `DefaultDockingPort` has a `JTabbedPane` as its child, then a `null` border is set for the `JTabbedPane` and all of its child components, and the encapsulated border is applied to the `DockingPort`. This is accomplished by calling `managePortTabbedChild()`. Finally, `managePortSplitChild()` will manage the border for a `DefaultDockingPort` whose docked component is a `JSplitPane`. This method removes all borders from the `DefaultDockingPort` and the split pane divider and applies the encapsulated border to both left and right child components of the `JSplitPane`.

Author:
  Christopher Butler

### Constructor Summary

Constructors
Constructor and Description
`StandardBorderManager()` Creates a new `StandardBorderManager` with a `null` assigned border.
`StandardBorderManager(javax.swing.border.Border border)` Creates a new `StandardBorderManager` with the specified assigned border.

### Method Summary

Methods
`javax.swing.border.Border` `getBorder()` Returns the currently assigned border.
`void` `managePortNullChild(DockingPort port)` Set the border on the supplied `DockingPort` to the currently assigned border.
`void` `managePortSimpleChild(DockingPort port)` Removes any border from the `DockingPort's` docked component and set the border on the `DockingPort` itself to the currently assigned border.
`void` `managePortSplitChild(DockingPort port)` Removes any border from the `DockingPort` itself and places the currently assigned border on the two child components of the `DockingPort's</code JSplitPane` child.
`void` `managePortTabbedChild(DockingPort port)` Removes any border from the `DockingPort's` docked `JTabbedPane` component and sets the border on the `DockingPort` itself to the currently assigned border.
`void` `setBorder(javax.swing.border.Border border)` Sets the assigned border.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### StandardBorderManager

    public StandardBorderManager()

Creates a new `StandardBorderManager` with a `null` assigned border.

#### StandardBorderManager

    public StandardBorderManager(javax.swing.border.Border border)

Creates a new `StandardBorderManager` with the specified assigned border.

Parameters:
  `border` - the currently assigned border.

### Method Detail

#### getBorder

    public javax.swing.border.Border getBorder()

Returns the currently assigned border.

Returns:
  the currently assigned border.

#### setBorder

    public void setBorder(javax.swing.border.Border border)

Sets the assigned border. Null values are acceptable.

Parameters:
  `border` - the assigned border.

#### managePortNullChild

    public void managePortNullChild(DockingPort port)

Set the border on the supplied `DockingPort` to the currently assigned border.

Specified by:
  `managePortNullChild` in interface `BorderManager`
Parameters:
  `port` - the `DockingPort` whose layout borders are to be managed
See Also:
  `BorderManager.managePortNullChild(DockingPort)`

#### managePortSimpleChild

    public void managePortSimpleChild(DockingPort port)

Removes any border from the `DockingPort's` docked component and set the border on the `DockingPort` itself to the currently assigned border.

Specified by:
  `managePortSimpleChild` in interface `BorderManager`
Parameters:
  `port` - the `DockingPort` whose layout borders are to be managed
See Also:
  `BorderManager.managePortSimpleChild(DockingPort)`

#### managePortSplitChild

    public void managePortSplitChild(DockingPort port)

Removes any border from the `DockingPort` itself and places the currently assigned border on the two child components of the `DockingPort's</code JSplitPane` child.

Specified by:
  `managePortSplitChild` in interface `BorderManager`
Parameters:
  `port` - the `DockingPort` whose layout borders are to be managed
See Also:
  `BorderManager.managePortSplitChild(DockingPort)`

#### managePortTabbedChild

    public void managePortTabbedChild(DockingPort port)

Removes any border from the `DockingPort's` docked `JTabbedPane` component and sets the border on the `DockingPort` itself to the currently assigned border.

Specified by:
  `managePortTabbedChild` in interface `BorderManager`
Parameters:
  `port` - the `DockingPort` whose layout borders are to be managed
See Also:
  `BorderManager.managePortTabbedChild(DockingPort)`