diff --git a/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java b/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java
index 8ac64288fd1071d330b7b61bb36d8c2747e42efa..7da92677b0db822217edebeb1104addc502815e7 100644
--- a/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java
+++ b/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java
@@ -16,6 +16,7 @@ import java.util.prefs.Preferences;
 
 import javax.swing.Action;
 import javax.swing.JComponent;
+import javax.swing.JOptionPane;
 
 import fr.soleil.docking.action.SaveDefaultPerspertiveAction;
 import fr.soleil.docking.exception.DockingException;
@@ -116,21 +117,35 @@ public abstract class ADockingManager implements PropertyChangeListener {
     public void loadPreferences(Preferences prefs) throws DockingException {
         this.perspectiveFactory.loadPreferences(prefs);
         this.viewFactory.loadPreferences(prefs);
-        this.loadPerspective(perspectiveFactory.getSelectedPerspective());
+        this.applyPerspective(perspectiveFactory.getSelectedPerspective());
     }
 
     public void resetLayout() throws DockingException {
-        loadPerspective(perspectiveFactory.getDefault());
+        applyPerspective(perspectiveFactory.getDefault());
     }
 
     /**
-     * @param is
+     * Applies a perspective to the main docking area
+     * 
+     * @param perspective The perspective to apply
+     * @throws DockingException If a problem occurred while trying to apply the perspective
+     */
+    public void applyPerspective(IPerspective perspective) throws DockingException {
+        applyPerspective(perspective, getDockingArea());
+    }
+
+    /**
+     * Applies a perspective to a docking area
+     * 
+     * @param perspective The perspective to apply
+     * @param dockingArea The docking area
+     * @throws DockingException If a problem occurred while trying to apply the perspective
      */
-    public abstract void loadPerspective(IPerspective perspective) throws DockingException;
+    public abstract void applyPerspective(IPerspective perspective, JComponent dockingArea) throws DockingException;
 
     public void savePreferences(Preferences prefs) throws DockingException {
         // Save current Perspective
-        this.savePerspective(this.perspectiveFactory.getSelectedPerspective());
+        this.updatePerspective(this.perspectiveFactory.getSelectedPerspective());
 
         // Save Preferences of perspective Factory
         this.perspectiveFactory.savePreferences(prefs);
@@ -141,14 +156,31 @@ public abstract class ADockingManager implements PropertyChangeListener {
     }
 
     /**
-     * @param perspective
-     * @param out
-     * @throws DockingException
+     * Writes main docking area layout in a perspective
+     * 
+     * @param perspective The perspective
+     */
+    protected void updatePerspective(IPerspective perspective) {
+        try {
+            updatePerspective(perspective, getDockingArea());
+        } catch (DockingException e) {
+            JOptionPane.showMessageDialog(getDockingArea(), e.getMessage() + " (see traces)", getClass()
+                    .getSimpleName() + " Docking - Error", JOptionPane.ERROR_MESSAGE);
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Writes a docking area layout in a perspective
+     * 
+     * @param perspective The perspective
+     * @param dockingArea The docking area
+     * @throws DockingException If a problem occurred while writing the layout
      */
-    protected abstract void savePerspective(IPerspective perspective) throws DockingException;
+    public abstract void updatePerspective(IPerspective perspective, JComponent dockingArea) throws DockingException;
 
     public void saveDefault(File file) throws DockingException {
-        this.savePerspective(this.perspectiveFactory.getSelectedPerspective());
+        this.updatePerspective(this.perspectiveFactory.getSelectedPerspective());
         this.perspectiveFactory.saveSelected(file);
     }
 
@@ -161,9 +193,9 @@ public abstract class ADockingManager implements PropertyChangeListener {
                     IPerspective neww = (IPerspective) evt.getNewValue();
                     try {
                         if (automaticallySavePerspective) {
-                            this.savePerspective(oldd);
+                            this.updatePerspective(oldd);
                         }
-                        this.loadPerspective(neww);
+                        this.applyPerspective(neww);
                     } catch (DockingException e) {
                         e.printStackTrace();
                     }
@@ -179,7 +211,7 @@ public abstract class ADockingManager implements PropertyChangeListener {
     protected abstract void updateViews(PropertyChangeEvent evt);
 
     public void saveSelectedPerspective() throws DockingException {
-        this.savePerspective(this.perspectiveFactory.getSelectedPerspective());
+        this.updatePerspective(this.perspectiveFactory.getSelectedPerspective());
     }
 
     /**