From bc9da9755559d6cae025c9611179abd6be509037 Mon Sep 17 00:00:00 2001
From: Raphael Girardot <raphael.girardot@synchrotron-soleil.fr>
Date: Mon, 2 Nov 2015 15:51:20 +0000
Subject: [PATCH] - better listeners management. Big change --> version set to
 1.1.0-SNAPSHOT - added the possibility to change IView's icon and title
 (JAVAAPI-262)

---
 dockinginfonode/pom.xml                       |   2 +-
 .../docking/infonode/view/InfoNodeView.java   | 139 ++++++------------
 2 files changed, 46 insertions(+), 95 deletions(-)

diff --git a/dockinginfonode/pom.xml b/dockinginfonode/pom.xml
index fa9a8ec..759d7bb 100644
--- a/dockinginfonode/pom.xml
+++ b/dockinginfonode/pom.xml
@@ -9,7 +9,7 @@
   </parent>
   <groupId>fr.soleil.lib</groupId>
   <artifactId>DockingInfoNode</artifactId>
-  <version>1.0.10-SNAPSHOT</version>
+  <version>1.1.0-SNAPSHOT</version>
   <name>Docking InfoNode</name>
   <description>InfoNode implementation of DockingCore</description>
   <developers>
diff --git a/dockinginfonode/src/main/java/fr/soleil/docking/infonode/view/InfoNodeView.java b/dockinginfonode/src/main/java/fr/soleil/docking/infonode/view/InfoNodeView.java
index 5ac6912..28489ac 100644
--- a/dockinginfonode/src/main/java/fr/soleil/docking/infonode/view/InfoNodeView.java
+++ b/dockinginfonode/src/main/java/fr/soleil/docking/infonode/view/InfoNodeView.java
@@ -15,12 +15,13 @@ import javax.swing.Icon;
 
 import net.infonode.docking.AbstractTabWindow;
 import net.infonode.docking.DockingWindow;
-import net.infonode.docking.DockingWindowListener;
-import net.infonode.docking.OperationAbortedException;
+import net.infonode.docking.DockingWindowAdapter;
 import net.infonode.docking.RootWindow;
 import net.infonode.docking.View;
+import fr.soleil.docking.event.DockingEvent;
+import fr.soleil.docking.listener.IViewListener;
+import fr.soleil.docking.listener.ViewListenerDelegate;
 import fr.soleil.docking.view.IView;
-import fr.soleil.docking.view.IViewListener;
 
 /**
  * A dynamically created view containing an id.
@@ -30,9 +31,10 @@ import fr.soleil.docking.view.IViewListener;
  */
 public class InfoNodeView extends View implements IView {
 
-    private static final long serialVersionUID = 1934485690520898657L;
+    private static final long serialVersionUID = 6381456606851418094L;
 
     protected Object id;
+    protected final ViewListenerDelegate delegate;
 
     /**
      * Constructor.
@@ -45,6 +47,24 @@ public class InfoNodeView extends View implements IView {
     public InfoNodeView(String title, Icon icon, Component component, Object id) {
         super(title, icon, component);
         this.id = id;
+        delegate = new ViewListenerDelegate();
+        addListener(new DockingWindowAdapter() {
+
+            @Override
+            public void windowClosed(DockingWindow window) {
+                delegate.warnListeners(new DockingEvent(InfoNodeView.this, DockingEvent.VIEW_CLOSED));
+            }
+
+            @Override
+            public void viewFocusChanged(View previouslyFocusedView, View focusedView) {
+                if (InfoNodeView.this.equals(focusedView)) {
+                    delegate.warnListeners(new DockingEvent(InfoNodeView.this, DockingEvent.FOCUS_GAINED));
+                } else {
+                    delegate.warnListeners(new DockingEvent(InfoNodeView.this, DockingEvent.FOCUS_LOST));
+                }
+            }
+        });
+
     }
 
     @Override
@@ -105,7 +125,6 @@ public class InfoNodeView extends View implements IView {
         super.update();
         super.setVisible(true);
         super.setEnabled(true);
-
     }
 
     @Override
@@ -228,98 +247,30 @@ public class InfoNodeView extends View implements IView {
 
     @Override
     public void addViewListener(final IViewListener listener) {
-        addListener(new DockingWindowListener() {
-
-            @Override
-            public void windowUndocking(DockingWindow window) throws OperationAbortedException {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowUndocked(DockingWindow window) {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowShown(DockingWindow window) {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowRestoring(DockingWindow window) throws OperationAbortedException {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowRestored(DockingWindow window) {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowRemoved(DockingWindow removedFromWindow, DockingWindow removedWindow) {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowMinimizing(DockingWindow window) throws OperationAbortedException {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowMinimized(DockingWindow window) {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowMaximizing(DockingWindow window) throws OperationAbortedException {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowMaximized(DockingWindow window) {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowHidden(DockingWindow window) {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowDocking(DockingWindow window) throws OperationAbortedException {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowDocked(DockingWindow window) {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowClosing(DockingWindow window) throws OperationAbortedException {
-                // Not used yet.
-            }
-
-            @Override
-            public void windowClosed(DockingWindow window) {
-                listener.viewClosed();
-            }
+        delegate.addViewListener(listener);
+    }
 
-            @Override
-            public void windowAdded(DockingWindow addedToWindow, DockingWindow addedWindow) {
-                // Not used yet.
-            }
+    @Override
+    public void removeViewListener(IViewListener listener) {
+        delegate.removeViewListener(listener);
+    }
 
-            @Override
-            public void viewFocusChanged(View previouslyFocusedView, View focusedView) {
-                if (InfoNodeView.this.equals(focusedView)) {
-                    listener.focusGained();
-                } else {
-                    listener.focusLost();
-                }
-            }
-        });
+    @Override
+    public void setTitle(String title) {
+        getViewProperties().setTitle(title == null ? "" : title);
+        RootWindow rootWindow = getRootWindow();
+        if (rootWindow != null) {
+            rootWindow.repaint();
+        }
+    }
 
+    @Override
+    public void setIcon(Icon icon) {
+        getViewProperties().setIcon(icon);
+        RootWindow rootWindow = getRootWindow();
+        if (rootWindow != null) {
+            rootWindow.repaint();
+        }
     }
 
 }
-- 
GitLab