From df72aa34a9e178c6ff4837002886634f86430944 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)

---
 .../infonode/InfoNodeDockingManager.java      | 47 +++++++++++++++----
 1 file changed, 38 insertions(+), 9 deletions(-)

diff --git a/dockinginfonode/src/main/java/fr/soleil/docking/infonode/InfoNodeDockingManager.java b/dockinginfonode/src/main/java/fr/soleil/docking/infonode/InfoNodeDockingManager.java
index 0bff908..84b43bc 100644
--- a/dockinginfonode/src/main/java/fr/soleil/docking/infonode/InfoNodeDockingManager.java
+++ b/dockinginfonode/src/main/java/fr/soleil/docking/infonode/InfoNodeDockingManager.java
@@ -176,19 +176,48 @@ public class InfoNodeDockingManager extends ADockingManager {
     }
 
     @Override
-    public void setEnabledDocking(boolean enabledDocking) {
-        RootWindow rootWindow = (RootWindow) getDockingArea();
-        rootWindow.getRootWindowProperties().getDockingWindowProperties().setCloseEnabled(enabledDocking);
-        rootWindow.getRootWindowProperties().getDockingWindowProperties().setDragEnabled(enabledDocking);
-        rootWindow.getRootWindowProperties().getDockingWindowProperties().setMaximizeEnabled(enabledDocking);
-        rootWindow.getRootWindowProperties().getDockingWindowProperties().setMinimizeEnabled(enabledDocking);
+    public void setEnabledDocking(boolean enabledDocking, JComponent dockingArea) {
+        if (dockingArea instanceof RootWindow) {
+            RootWindow rootWindow = (RootWindow) dockingArea;
+            rootWindow.getRootWindowProperties().getDockingWindowProperties().setCloseEnabled(enabledDocking);
+            rootWindow.getRootWindowProperties().getDockingWindowProperties().setDragEnabled(enabledDocking);
+            rootWindow.getRootWindowProperties().getDockingWindowProperties().setMaximizeEnabled(enabledDocking);
+            rootWindow.getRootWindowProperties().getDockingWindowProperties().setMinimizeEnabled(enabledDocking);
+        }
     }
 
     @Override
-    public boolean isEnabledDocking() {
-        DockingWindowProperties dwp = this.rootWindow.getRootWindowProperties().getDockingWindowProperties();
+    public boolean isEnabledDocking(JComponent dockingArea) {
+        boolean enabled;
+        if (dockingArea instanceof RootWindow) {
+            RootWindow rootWindow = (RootWindow) dockingArea;
+            DockingWindowProperties dwp = rootWindow.getRootWindowProperties().getDockingWindowProperties();
+            enabled = dwp.getCloseEnabled() && dwp.getDragEnabled() && dwp.getMaximizeEnabled()
+                    && dwp.getMinimizeEnabled();
+        } else {
+            enabled = false;
+        }
+        return enabled;
+    }
 
-        return dwp.getCloseEnabled() && dwp.getDragEnabled() && dwp.getMaximizeEnabled() && dwp.getMinimizeEnabled();
+    @Override
+    public void setUndockEnabled(boolean enabled, JComponent dockingArea) {
+        if (dockingArea instanceof RootWindow) {
+            RootWindow rootWindow = (RootWindow) dockingArea;
+            rootWindow.getRootWindowProperties().getDockingWindowProperties().setUndockEnabled(enabled);
+        }
+    }
+
+    @Override
+    public boolean isUndockEnabled(JComponent dockingArea) {
+        boolean enabled;
+        if (dockingArea instanceof RootWindow) {
+            RootWindow rootWindow = (RootWindow) dockingArea;
+            enabled = rootWindow.getRootWindowProperties().getDockingWindowProperties().getUndockEnabled();
+        } else {
+            enabled = false;
+        }
+        return enabled;
     }
 
     @Override
-- 
GitLab