diff --git a/dockingcore/pom.xml b/dockingcore/pom.xml index 183b542861c10662106cd0f1eac8070181eace0a..d3206632d08d61360a013edc72291fb736f3ebc6 100644 --- a/dockingcore/pom.xml +++ b/dockingcore/pom.xml @@ -69,6 +69,10 @@ <groupId>org.swinglabs</groupId> <artifactId>swingx</artifactId> </dependency> + <dependency> + <groupId>fr.soleil.lib</groupId> + <artifactId>BasicUtilities</artifactId> + </dependency> </dependencies> </project> diff --git a/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java b/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java index 38790bdacbcc6e22fd526c0aaf5a5ea4dd76832e..1cd45a0efa229d04ce59011a2a794e093bccde62 100644 --- a/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java +++ b/dockingcore/src/main/java/fr/soleil/docking/ADockingManager.java @@ -14,6 +14,7 @@ import fr.soleil.docking.exception.DockingException; import fr.soleil.docking.perspective.IPerspective; import fr.soleil.docking.perspective.IPerspectiveFactory; import fr.soleil.docking.view.IViewFactory; +import fr.soleil.lib.project.ObjectUtils; /** * A class that prepares docking. Obtain your RootWindow from this class. @@ -133,25 +134,26 @@ public abstract class ADockingManager implements PropertyChangeListener { @Override public void propertyChange(PropertyChangeEvent evt) { - if (evt.getSource().equals(perspectiveFactory)) { - if (evt.getPropertyName().equals(IPerspectiveFactory.SELECTED_PERSPECTIVE)) { - IPerspective oldd = (IPerspective) evt.getOldValue(); - IPerspective neww = (IPerspective) evt.getNewValue(); - try { - if (automaticallySavePerspective) { - this.savePerspective(oldd); + if (evt != null) { + if (ObjectUtils.sameObject(perspectiveFactory, evt.getSource())) { + if (IPerspectiveFactory.SELECTED_PERSPECTIVE.equals(evt.getPropertyName())) { + IPerspective oldd = (IPerspective) evt.getOldValue(); + IPerspective neww = (IPerspective) evt.getNewValue(); + try { + if (automaticallySavePerspective) { + this.savePerspective(oldd); + } + this.loadPerspective(neww); + } catch (DockingException e) { + e.printStackTrace(); } - this.loadPerspective(neww); - } catch (DockingException e) { - e.printStackTrace(); } - } - } else if (evt.getSource().equals(viewFactory)) { - if (evt.getPropertyName().equals(IViewFactory.VIEWS)) { - this.updateViews(evt); + } else if (ObjectUtils.sameObject(viewFactory, evt.getSource())) { + if (IViewFactory.VIEWS.equals(evt.getPropertyName())) { + this.updateViews(evt); + } } } - } protected abstract void updateViews(PropertyChangeEvent evt); diff --git a/dockingcore/src/main/java/fr/soleil/docking/action/NewPerspectiveAction.java b/dockingcore/src/main/java/fr/soleil/docking/action/NewPerspectiveAction.java index eabdf290600b619818572a03e2131a08eb10451f..cb959f88ec9e5e6d04a928c653874693a75e3adc 100644 --- a/dockingcore/src/main/java/fr/soleil/docking/action/NewPerspectiveAction.java +++ b/dockingcore/src/main/java/fr/soleil/docking/action/NewPerspectiveAction.java @@ -55,7 +55,7 @@ public class NewPerspectiveAction extends AbstractAction { public void actionPerformed(ActionEvent e) { IPerspective current = factory.getSelectedPerspective(); String result = JOptionPane.showInputDialog("Enter the name of the new perspective"); - if (!result.equals("")) { + if ((result != null) && (!result.trim().isEmpty())) { IPerspective p = factory.createPerspective(result); byte[] array = current.getByteArray(); byte[] copy = (array == null ? null : array.clone()); diff --git a/dockingcore/src/main/java/fr/soleil/docking/action/SelectPerspectiveAction.java b/dockingcore/src/main/java/fr/soleil/docking/action/SelectPerspectiveAction.java index ecbf614ebdff858f99eee9c01f089ae9bc330343..518d731e7f2fb0316bd156ef7dcf1f8cbbc171ad 100644 --- a/dockingcore/src/main/java/fr/soleil/docking/action/SelectPerspectiveAction.java +++ b/dockingcore/src/main/java/fr/soleil/docking/action/SelectPerspectiveAction.java @@ -13,6 +13,7 @@ import javax.swing.KeyStroke; import fr.soleil.docking.perspective.IPerspective; import fr.soleil.docking.perspective.IPerspectiveFactory; +import fr.soleil.lib.project.ObjectUtils; public class SelectPerspectiveAction extends AbstractAction implements PropertyChangeListener { @@ -65,11 +66,13 @@ public class SelectPerspectiveAction extends AbstractAction implements PropertyC @Override public void propertyChange(PropertyChangeEvent evt) { - if (evt.getPropertyName().equals(IPerspectiveFactory.SELECTED_PERSPECTIVE)) { - if (evt.getNewValue().equals(this.perspective)) { - putValue(SELECTED_KEY, true); - } else { - putValue(SELECTED_KEY, false); + if (evt != null) { + if (IPerspectiveFactory.SELECTED_PERSPECTIVE.equals(evt.getPropertyName())) { + if (ObjectUtils.sameObject(evt.getNewValue(), this.perspective)) { + putValue(SELECTED_KEY, true); + } else { + putValue(SELECTED_KEY, false); + } } } } diff --git a/dockingcore/src/main/java/fr/soleil/docking/component/PerspectiveMenu.java b/dockingcore/src/main/java/fr/soleil/docking/component/PerspectiveMenu.java index bba0fbb221e29b9edc87391631d4e176dfecaaa7..f569661ab9349c57640ee02157b04130bf8d21b3 100644 --- a/dockingcore/src/main/java/fr/soleil/docking/component/PerspectiveMenu.java +++ b/dockingcore/src/main/java/fr/soleil/docking/component/PerspectiveMenu.java @@ -27,9 +27,11 @@ public class PerspectiveMenu extends javax.swing.JMenu implements PropertyChange @Override public void propertyChange(PropertyChangeEvent evt) { - if (evt.getSource() instanceof IPerspectiveFactory) { - if (evt.getPropertyName().equals(IPerspectiveFactory.PERSPECTIVES)) { - + if (evt != null) { + if (evt.getSource() instanceof IPerspectiveFactory) { + if (IPerspectiveFactory.PERSPECTIVES.equals(evt.getPropertyName())) { + // TODO + } } } } diff --git a/dockingcore/src/main/java/fr/soleil/docking/perspective/PerspectiveFactory.java b/dockingcore/src/main/java/fr/soleil/docking/perspective/PerspectiveFactory.java index 84d207898b540624ff51f6c7531939a332e5e2de..3e28a778854e1ed700b7236f9fcbf19f0f7dfbe5 100644 --- a/dockingcore/src/main/java/fr/soleil/docking/perspective/PerspectiveFactory.java +++ b/dockingcore/src/main/java/fr/soleil/docking/perspective/PerspectiveFactory.java @@ -15,6 +15,7 @@ import fr.soleil.docking.action.NewPerspectiveAction; import fr.soleil.docking.action.RemovePerspectiveAction; import fr.soleil.docking.action.SelectPerspectiveAction; import fr.soleil.docking.exception.DockingException; +import fr.soleil.lib.project.ObjectUtils; public class PerspectiveFactory implements IPerspectiveFactory { @@ -63,12 +64,15 @@ public class PerspectiveFactory implements IPerspectiveFactory { } @Override - public IPerspective getPerspective(Object name) { + public IPerspective getPerspective(Object id) { IPerspective result = null; - for (IPerspective perspective : perspectives) { - if (perspective.getName().equalsIgnoreCase((String) name)) { - result = perspective; - break; + if (id instanceof String) { + String name = (String) id; + for (IPerspective perspective : perspectives) { + if (name.equalsIgnoreCase(perspective.getName())) { + result = perspective; + break; + } } } return result; @@ -81,7 +85,8 @@ public class PerspectiveFactory implements IPerspectiveFactory { @Override public void setSelectedPerspective(IPerspective selectedPerspective) { - if (!this.selectedPerspective.equals(selectedPerspective) && this.perspectives.contains(selectedPerspective)) { + if ((selectedPerspective != null) && (!selectedPerspective.equals(this.selectedPerspective)) + && perspectives.contains(selectedPerspective)) { IPerspective old = this.selectedPerspective; this.selectedPerspective = selectedPerspective; support.firePropertyChange(SELECTED_PERSPECTIVE, old, this.selectedPerspective); @@ -219,8 +224,14 @@ public class PerspectiveFactory implements IPerspectiveFactory { @Override public IPerspective removePerspective(final IPerspective p) { - int index = perspectives.indexOf(p); - if (index != -1 && !(p instanceof ResourcePerspective) && !p.getName().equals(defaultPerspectiveName)) { + int index; + if (p == null) { + index = -1; + } else { + index = perspectives.indexOf(p); + } + if ((index > -1) && (!(p instanceof ResourcePerspective)) + && (!ObjectUtils.sameObject(p.getName(), defaultPerspectiveName))) { // Exist and it's not the default perspective perspectives.remove(index); support.fireIndexedPropertyChange(PERSPECTIVES, index, p, null); diff --git a/dockingcore/src/main/java/fr/soleil/docking/view/ViewFactory.java b/dockingcore/src/main/java/fr/soleil/docking/view/ViewFactory.java index 513458f8ff71d98583f30bc2bb6fed0fa3217d74..c7856bf6be2a6086e1187302fef05fbf67645d81 100644 --- a/dockingcore/src/main/java/fr/soleil/docking/view/ViewFactory.java +++ b/dockingcore/src/main/java/fr/soleil/docking/view/ViewFactory.java @@ -16,6 +16,7 @@ import java.util.prefs.Preferences; import javax.swing.Action; import fr.soleil.docking.action.ViewAction; +import fr.soleil.lib.project.ObjectUtils; public class ViewFactory implements IViewFactory { @@ -32,7 +33,7 @@ public class ViewFactory implements IViewFactory { public IView getView(Object id) { IView result = null; for (IView view : views) { - if (view.getId().equals(id)) { + if (ObjectUtils.sameObject(id, view.getId())) { result = view; break; }