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 736560f08deeb6db0733916124fae25712a5e86e..9ef55f37409bbe5991acc8a3e1ec26c2d4acf874 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 0000000000000000000000000000000000000000..d545bb3537a53568619b0766d8f1c868bcc3d625
--- /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;
+    }
+
+}