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()); } /**