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 9dba35f70691c1427335b18f76f666d53224d144..d6b669e66cf3c856cc8650dd0d28f3ef77500b27 100644
--- a/dockinginfonode/src/main/java/fr/soleil/docking/infonode/InfoNodeDockingManager.java
+++ b/dockinginfonode/src/main/java/fr/soleil/docking/infonode/InfoNodeDockingManager.java
@@ -16,7 +16,6 @@ import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 
 import javax.swing.JComponent;
-import javax.swing.JOptionPane;
 
 import net.infonode.docking.RootWindow;
 import net.infonode.docking.View;
@@ -99,9 +98,10 @@ public class InfoNodeDockingManager extends ADockingManager {
     }
 
     @Override
-    public void loadPerspective(IPerspective perspective) throws DockingException {
+    public void applyPerspective(IPerspective perspective, JComponent dockingArea) throws DockingException {
         DockingException dockingException = null;
-        if (perspective.getByteArray().length > 0) {
+        if ((perspective != null) && (perspective.getByteArray().length > 0) && (dockingArea instanceof RootWindow)) {
+            RootWindow rootWindow = (RootWindow) dockingArea;
             ObjectInputStream ois = null;
             ByteArrayInputStream bais = null;
             try {
@@ -109,7 +109,8 @@ public class InfoNodeDockingManager extends ADockingManager {
                 ois = new ObjectInputStream(bais);
                 rootWindow.read(ois);
             } catch (Exception e) {
-                dockingException = new DockingException("Perspective.load() :" + " Unexpected Error", e);
+                dockingException = new DockingException(getClass().getSimpleName()
+                        + ".applyPerspective(): Unexpected Error", e);
             } finally {
                 try {
                     if (ois != null) {
@@ -131,26 +132,36 @@ public class InfoNodeDockingManager extends ADockingManager {
     }
 
     @Override
-    protected void savePerspective(IPerspective perspective) {
-        ByteArrayOutputStream baos = null;
-        ObjectOutputStream ous = null;
-        baos = new ByteArrayOutputStream();
-        try {
-            ous = new ObjectOutputStream(baos);
-            rootWindow.write(ous, false);
-        } catch (IOException e) {
-            e.printStackTrace();
-            JOptionPane.showMessageDialog(rootWindow, "Perspective.save() :" + " Unexpected Error (see traces)",
-                    "INFONODE Docking - Error", JOptionPane.ERROR_MESSAGE);
-        } finally {
+    public void updatePerspective(IPerspective perspective, JComponent dockingArea) throws DockingException {
+        DockingException dockingException = null;
+        if ((perspective != null) && (dockingArea instanceof RootWindow)) {
+            RootWindow rootWindow = (RootWindow) dockingArea;
+            ByteArrayOutputStream baos = null;
+            ObjectOutputStream ous = null;
+            baos = new ByteArrayOutputStream();
             try {
-                ous.close();
-                // Actually there is no effect to close baos ...
+                ous = new ObjectOutputStream(baos);
+                rootWindow.write(ous, false);
+                perspective.setByteArray(baos.toByteArray());
             } catch (IOException e) {
-                e.printStackTrace();
+                dockingException = new DockingException(getClass().getSimpleName()
+                        + ".updatePerspective(): Unexpected Error", e);
+            } finally {
+                try {
+                    ous.close();
+                    // Actually there is no effect to close baos ...
+                } catch (IOException e) {
+                    if (dockingException == null) {
+                        dockingException = new DockingException("I/O Exception", e);
+                    } else {
+                        e.printStackTrace();
+                    }
+                }
             }
         }
-        perspective.setByteArray(baos.toByteArray());
+        if (dockingException != null) {
+            throw dockingException;
+        }
     }
 
     @Override