From 198be8fe9b11b7489bfe15fe043c050ba9fc709f Mon Sep 17 00:00:00 2001
From: Raphael Girardot <raphael.girardot@synchrotron-soleil.fr>
Date: Thu, 18 Sep 2014 15:30:25 +0000
Subject: [PATCH] Added the undocking possibility, except for VL implementation
 (JAVAAPI-213)

---
 .../fr/soleil/docking/ADockingManager.java    | 63 ++++++++++++++++++-
 1 file changed, 61 insertions(+), 2 deletions(-)

diff --git a/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java b/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java
index 5e37a33..2a72887 100644
--- a/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java
+++ b/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java
@@ -221,14 +221,37 @@ public abstract class ADockingManager implements PropertyChangeListener {
      * 
      * @param enabledDocking
      */
-    public abstract void setEnabledDocking(boolean enabledDocking);
+    public void setEnabledDocking(boolean enabledDocking) {
+        setEnabledDocking(enabledDocking, getDockingArea());
+    }
 
     /**
      * Get the Enabled Docking property
      * 
      * @return true if the docking is enabled
      */
-    public abstract boolean isEnabledDocking();
+    public boolean isEnabledDocking() {
+        return isEnabledDocking(getDockingArea());
+    }
+
+    /**
+     * Enable the docking or not in a docking area. If the docking is disable, the inherit class must disable all
+     * functionality of the docking for the docking area. I must be comparable to a JPanel composed by JtabbedPane,
+     * JSplitPane etc...
+     * 
+     * @param enabledDocking Whetehr to enable docking
+     * @param dockingArea The docking area for which to enable/disable docking
+     */
+    public abstract void setEnabledDocking(boolean enabledDocking, JComponent dockingArea);
+
+    /**
+     * Get the Enabled Docking property for a docking area
+     * 
+     * @param dockingArea The docking area to test
+     * 
+     * @return true if the docking is enabled
+     */
+    public abstract boolean isEnabledDocking(JComponent dockingArea);
 
     /**
      * Returns whether a view, once closed, is sure to be restored at the exact previous position once shown again
@@ -237,4 +260,40 @@ public abstract class ADockingManager implements PropertyChangeListener {
      */
     public abstract boolean canRestoreExactViewPosition();
 
+    /**
+     * Configures a docking area to accept or not component undocking (window creation outside of the docking area for
+     * given component)
+     * 
+     * @param enabled Whether to accept component undocking
+     * @param dockingArea The concerned docking area
+     */
+    public abstract void setUndockEnabled(boolean enabled, JComponent dockingArea);
+
+    /**
+     * Configures main docking area to accept or not component undocking
+     * 
+     * @param enabled Whether to accept component undocking
+     */
+    public void setUndockEnabled(boolean enabled) {
+        setUndockEnabled(enabled, getDockingArea());
+    }
+
+    /**
+     * Returns whether a docking area accepts component undocking (window creation outside of the docking area for
+     * given component)
+     * 
+     * @param dockingArea The concerned docking area
+     * @return A <code>boolean</code>
+     */
+    public abstract boolean isUndockEnabled(JComponent dockingArea);
+
+    /**
+     * Returns whether main docking area accepts component undocking
+     * 
+     * @return A <code>boolean</code>
+     */
+    public boolean isUndockEnabled() {
+        return isUndockEnabled(getDockingArea());
+    }
+
 }
-- 
GitLab