From 420193805d27f57b8366cf0be06f3de554733597 Mon Sep 17 00:00:00 2001
From: Raphael Girardot <raphael.girardot@synchrotron-soleil.fr>
Date: Wed, 9 Oct 2013 13:02:20 +0000
Subject: [PATCH] IViewFactory can customize view icons, title, etc...
 ViewFactory becomes AbstractViewFactory

---
 .../infonode/{ => view}/InfoNodeView.java     |  2 +-
 .../infonode/view/InfoNodeViewFactory.java    | 55 +++++++++++++++++++
 2 files changed, 56 insertions(+), 1 deletion(-)
 rename dockinginfonode/src/main/java/fr/soleil/docking/infonode/{ => view}/InfoNodeView.java (99%)
 create mode 100644 dockinginfonode/src/main/java/fr/soleil/docking/infonode/view/InfoNodeViewFactory.java

diff --git a/dockinginfonode/src/main/java/fr/soleil/docking/infonode/InfoNodeView.java b/dockinginfonode/src/main/java/fr/soleil/docking/infonode/view/InfoNodeView.java
similarity index 99%
rename from dockinginfonode/src/main/java/fr/soleil/docking/infonode/InfoNodeView.java
rename to dockinginfonode/src/main/java/fr/soleil/docking/infonode/view/InfoNodeView.java
index 736560f..9ef55f3 100644
--- a/dockinginfonode/src/main/java/fr/soleil/docking/infonode/InfoNodeView.java
+++ b/dockinginfonode/src/main/java/fr/soleil/docking/infonode/view/InfoNodeView.java
@@ -1,4 +1,4 @@
-package fr.soleil.docking.infonode;
+package fr.soleil.docking.infonode.view;
 
 import java.awt.Color;
 import java.awt.Component;
diff --git a/dockinginfonode/src/main/java/fr/soleil/docking/infonode/view/InfoNodeViewFactory.java b/dockinginfonode/src/main/java/fr/soleil/docking/infonode/view/InfoNodeViewFactory.java
new file mode 100644
index 0000000..d545bb3
--- /dev/null
+++ b/dockinginfonode/src/main/java/fr/soleil/docking/infonode/view/InfoNodeViewFactory.java
@@ -0,0 +1,55 @@
+package fr.soleil.docking.infonode.view;
+
+import java.awt.Component;
+
+import javax.swing.Icon;
+import javax.swing.JComponent;
+
+import net.infonode.docking.RootWindow;
+import net.infonode.docking.util.DockingUtil;
+import fr.soleil.docking.view.AbstractViewFactory;
+import fr.soleil.docking.view.IView;
+
+/**
+ * InfoNode implementation of {@link AbstractViewFactory}
+ * 
+ * @author girardot
+ */
+public class InfoNodeViewFactory extends AbstractViewFactory {
+
+    public InfoNodeViewFactory() {
+        super();
+    }
+
+    @Override
+    public IView addView(String title, Icon icon, Component component, Object id, JComponent dockingArea) {
+        IView addedView = null;
+        boolean added = false;
+        if (id != null) {
+            synchronized (views) {
+                if (!views.containsKey(id)) {
+                    addedView = new InfoNodeView(title, icon, component, id);
+                    views.put(id, addedView);
+                    added = true;
+                }
+                addedView = views.get(id);
+            }
+        }
+        if ((addedView != null) && added) {
+            InfoNodeView view = (InfoNodeView) addedView;
+            if (dockingArea instanceof RootWindow) {
+                view.getWindowProperties().getTabProperties().getNormalButtonProperties().getCloseButtonProperties()
+                        .setVisible(false);
+                view.getWindowProperties().getTabProperties().getHighlightedButtonProperties()
+                        .getCloseButtonProperties().setVisible(false);
+                DockingUtil.addWindow(view, (RootWindow) dockingArea);
+            } else {
+                synchronized (support) {
+                    support.firePropertyChange(VIEWS, null, addedView);
+                }
+            }
+        }
+        return addedView;
+    }
+
+}
-- 
GitLab