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
    Modifier and Type | Method and Description
    --- | ---
    `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)`