## org.flexdock.docking.state
Class FloatingGroup

    java.lang.Object
      org.flexdock.docking.state.FloatingGroup

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable

    public class FloatingGroup

extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable

This class models a grouping of `Dockables` within a floating `DockingFrame`. The `FloatingGroup` tracks the current screen bounds of the `DockingFrame` and the ID for each `Dockable` within the group. The `FloatingGroup` may be persisted to external storage and recreated across JVM sessions. This allows the `DockingFrame` to be recreated and displayed with the previous screen bounds and all of the `Dockables` contained within the group to be restored to their previous state within the `DockingFrame`.
In addition to providing persistent state across application sessions, the `FloatingGroup` allows for a floating `Dockable` to be closed and then later restored to its original floating state within the same JVM session. The currently installed `FloatManager` may use `FloatingGroups` to determine which visible `DockingFrame` into which to restore a closed `Dockable`, or to create and display a new `DockingFrame` to the same end on an as-needed basis.

Author:
  Christopher Butler
See Also:
  Serialized Form

Constructor Summary
`FloatingGroup(java.lang.String groupName)` Creates a new `FloatingGroup` with the specified `groupName`.

Method Summary
`void` `addDockable(java.lang.String dockableId)`
`java.lang.Object` `clone()`
`void` `destroy()`
`java.awt.Rectangle` `getBounds()` Returns the cached screen bounds of the `DockingFrame` associated with this `FloatingGroup`.
`int` `getDockableCount()`
`java.util.Iterator` `getDockableIterator()`
`DockingFrame` `getFrame()` Returns a reference to the `DockingFrame` associated with this `FloatingGroup`.
`java.lang.String` `getName()` Returns the name of this `FloatingGroup`.
`void` `removeDockable(java.lang.String dockableId)`
`void` `setBounds(java.awt.Rectangle rect)` Sets the screen bounds representing the `DockingFrame` associated with this `FloatingGroup`.
`void` `setFrame(DockingFrame frame)` Sets a reference to the `DockingFrame` associated with this `FloatingGroup`.

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### FloatingGroup

    public FloatingGroup(java.lang.String groupName)

  Creates a new `FloatingGroup` with the specified `groupName`. This group may be looked up from the currently installed `FloatManager` using this `groupName`. `groupName` should be unique to this group.

  Parameters:
    `groupName` - the unique identifier for this `FloatingGroup`
  See Also:
    `FloatManager.getGroup(String)`

Method Detail

### getBounds

    public java.awt.Rectangle getBounds()

  Returns the cached screen bounds of the `DockingFrame` associated with this `FloatingGroup`. If no screen bounds have been previously cached, this method returns `null`. Otherwise, this method returns a clone of the cached `Rectangle` so that its fields may not be directly modified.

  Returns:
    the cached screen bounds of the `DockingFrame` associated with this `FloatingGroup`.
  See Also:
    `setBounds(Rectangle)`

### setBounds

    public void setBounds(java.awt.Rectangle rect)

  Sets the screen bounds representing the `DockingFrame` associated with this `FloatingGroup`. If `rect` is `null`, then the cached screen bounds are set to `null`. Otherwise, the field values are copied from the specified `Rectangle` into the cached screen bounds rather than updating the internal object reference. This is done to prevent the cached screen bounds' fields from subsequently being modified directly.

  Parameters:
    `rect` - the new screen bounds representing the `DockingFrame` associated with this `FloatingGroup`.
  See Also:
    `getBounds()`

### getName

    public java.lang.String getName()

  Returns the name of this `FloatingGroup`. This value may be used as a key to lookup this `FloatingGroup` from the currently installed `FloatManager` by invoking its `getGroup(String groupName)` method.

  Returns:
    the name of this `FloatingGroup`.
  See Also:
    `FloatingGroup(String)`, `FloatManager.getGroup(String)`

### getFrame

    public DockingFrame getFrame()

  Returns a reference to the `DockingFrame` associated with this `FloatingGroup`. This method allows easy lookup to establish an association with a `Dockable` and a `DockingFrame`. When attempting to find an existing `DockingFrame` into which to restore a hidden `Dockable`, the `Dockable's` `FloatingGroup` may be looked up by the currently installed `FloatManager` by calling its `getGroup(Dockable dockable)` method. Once the group has been resolved, the actual `DockingFrame` reference may be obtained by this method and the `Dockable` may be restored to the screen. Or, this method may return `null` and the `DockingFrame` will have to be recreated before the `Dockable` can be restored.

  Returns:
    a reference to the `DockingFrame` associated with this `FloatingGroup`.
  See Also:
    `setFrame(DockingFrame)`, `FloatManager.getGroup(Dockable)`

### setFrame

    public void setFrame(DockingFrame frame)

  Sets a reference to the `DockingFrame` associated with this `FloatingGroup`. This method allows help enable easy lookup to establish an association with a `Dockable` and a `DockingFrame`. When attempting to find an existing `DockingFrame` into which to restore a hidden `Dockable`, the `Dockable's` `FloatingGroup` may be looked up by the currently installed `FloatManager` by calling its `getGroup(Dockable dockable)` method. Once the group has been resolved, the actual `DockingFrame` reference may be obtained by calling `getFrame()` and the `Dockable` may be restored to the screen. Or, `getFrame()`may return `null` and the `DockingFrame` will have to be recreated before the `Dockable` can be restored. This method establishes the association between `FloatingGroup` and `DockingFrame`.

  Parameters:
    `frame` - the `DockingFrame` to be associated with this `FloatingGroup`.
  See Also:
    `getFrame()`, `FloatManager.getGroup(Dockable)`

### addDockable

    public void addDockable(java.lang.String dockableId)

### getDockableIterator

    public java.util.Iterator getDockableIterator()

### removeDockable

    public void removeDockable(java.lang.String dockableId)

### getDockableCount

    public int getDockableCount()

### destroy

    public void destroy()

### clone

    public java.lang.Object clone()

  Overrides:
    `clone` in class `java.lang.Object`