## org.flexdock.docking.floating.policy
Class DefaultFloatPolicy

    java.lang.Object
      org.flexdock.docking.floating.policy.FloatPolicy.NullFloatPolicy
          org.flexdock.docking.floating.policy.DefaultFloatPolicy

All Implemented Interfaces:
  FloatPolicy

    public class DefaultFloatPolicy

extends FloatPolicy.NullFloatPolicy

This class provides an implementation of the `FloatPolicy` interface to provide default behavior for the framework. It blocks floating operations for `Dockables` without any frame drag sources, for already floating `Dockables` that cannot be reparented within a new dialog, or if global floating support has been disabled.

Author:
  Christopher Butler

Nested Class Summary

Nested classes/interfaces inherited from interface org.flexdock.docking.floating.policy.FloatPolicy
`FloatPolicy.NullFloatPolicy`

Constructor Summary
`DefaultFloatPolicy()`

Method Summary
`static DefaultFloatPolicy` `getInstance()` Returns a singleton instance of `DefaultFloatPolicy`.
`boolean` `isFloatDropAllowed(DockingEvent evt)` Checks the previous `DockingPort` for the specified `DockingEvent` and returns `false` if it is in a floating dialog and contains less than two `Dockables`.
`boolean` `isFloatingAllowed(Dockable dockable)` Blocks floating support (returns false) if `dockable` is `null`, if `FloatPolicyManager.isGlobalFloatingEnabled()` returns `false`, or if there are no entries within the `Set` returned by `dockable.getFrameDragSources()`.

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

Constructor Detail

### DefaultFloatPolicy

    public DefaultFloatPolicy()

Method Detail

### getInstance

    public static DefaultFloatPolicy getInstance()

  Returns a singleton instance of `DefaultFloatPolicy`.

  Returns:
    a singleton instance of `DefaultFloatPolicy`.

### isFloatDropAllowed

    public boolean isFloatDropAllowed(DockingEvent evt)

  Checks the previous `DockingPort` for the specified `DockingEvent` and returns `false` if it is in a floating dialog and contains less than two `Dockables`. A floating dialog may contain multiple `Dockables`, each of which may be dragged out of the current dialog to float in their own dialog. However, if a floating dialog only contains a single `Dockable`, it makes no sense to remove the `Dockable` only to float it within another dialog. This situation is caught by this method and the docking operation is blocked.

  Specified by:
    `isFloatDropAllowed` in interface `FloatPolicy`
  Overrides:
    `isFloatDropAllowed` in class `FloatPolicy.NullFloatPolicy`
  Parameters:
    `evt` - the `DockingEvent` to be checked for drop-to-float support
  Returns:
    `false` if the `DockingEvent` is attempting to float an already floating `Dockable` with no other `Dockables` in its current dialog; `true` otherwise.
  See Also:
    `FloatPolicy.isFloatDropAllowed(DockingEvent)`, `DockingEvent.getOldDockingPort()`, `FloatingDockingPort.getDockableCount()`, `DockingEvent.consume()`

### isFloatingAllowed

    public boolean isFloatingAllowed(Dockable dockable)

  Blocks floating support (returns false) if `dockable` is `null`, if `FloatPolicyManager.isGlobalFloatingEnabled()` returns `false`, or if there are no entries within the `Set` returned by `dockable.getFrameDragSources()`. Otherwise, this method returns `true`.

  Specified by:
    `isFloatingAllowed` in interface `FloatPolicy`
  Overrides:
    `isFloatingAllowed` in class `FloatPolicy.NullFloatPolicy`
  Parameters:
    `dockable` - the `Dockable` to be checked for floating support
  Returns:
    `false` if floating is blocked for the specified `Dockable`; `true` otherwise.
  See Also:
    `Dockable.getFrameDragSources()`, `FloatPolicyManager.isGlobalFloatingEnabled()`