From 5aa1064b81ff888b51a25367de4f130bec2808a5 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

---
 ...ViewFactory.java => AbstractViewFactory.java} |  4 ++--
 .../fr/soleil/docking/view/IViewFactory.java     | 16 ++++++++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)
 rename dockingcore/src/main/java/fr/soleil/docking/view/{ViewFactory.java => AbstractViewFactory.java} (97%)

diff --git a/dockingcore/src/main/java/fr/soleil/docking/view/ViewFactory.java b/dockingcore/src/main/java/fr/soleil/docking/view/AbstractViewFactory.java
similarity index 97%
rename from dockingcore/src/main/java/fr/soleil/docking/view/ViewFactory.java
rename to dockingcore/src/main/java/fr/soleil/docking/view/AbstractViewFactory.java
index b6c063b..63c8488 100644
--- a/dockingcore/src/main/java/fr/soleil/docking/view/ViewFactory.java
+++ b/dockingcore/src/main/java/fr/soleil/docking/view/AbstractViewFactory.java
@@ -22,12 +22,12 @@ import fr.soleil.docking.action.ViewAction;
  * 
  * @author girardot
  */
-public class ViewFactory implements IViewFactory {
+public abstract class AbstractViewFactory implements IViewFactory {
 
     protected final Map<Object, IView> views;
     protected final PropertyChangeSupport support;
 
-    public ViewFactory() {
+    public AbstractViewFactory() {
         super();
         views = new ConcurrentHashMap<Object, IView>();
         support = new PropertyChangeSupport(this);
diff --git a/dockingcore/src/main/java/fr/soleil/docking/view/IViewFactory.java b/dockingcore/src/main/java/fr/soleil/docking/view/IViewFactory.java
index d2baff9..cbd6037 100644
--- a/dockingcore/src/main/java/fr/soleil/docking/view/IViewFactory.java
+++ b/dockingcore/src/main/java/fr/soleil/docking/view/IViewFactory.java
@@ -1,5 +1,6 @@
 package fr.soleil.docking.view;
 
+import java.awt.Component;
 import java.beans.PropertyChangeListener;
 import java.io.IOException;
 import java.io.ObjectInputStream;
@@ -9,6 +10,8 @@ import java.util.List;
 import java.util.prefs.Preferences;
 
 import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JComponent;
 
 /**
  * A factory that takes care of initializing dockable components and transmitting models.
@@ -75,6 +78,19 @@ public interface IViewFactory {
 
     public IView addView(IView view);
 
+    /**
+     * Creates an {@link IView} for a given {@link Component}, adds it in the list of views, and
+     * tries to put it in a docking area
+     * 
+     * @param title The {@link IView} title
+     * @param icon The {@link IView} {@link Icon}
+     * @param component The concerned {@link Component}
+     * @param id The {@link IView} id
+     * @param dockingArea The docking area
+     * @return The {@link IView} if it was successfully created and added, <code>null</code> otherwise
+     */
+    public IView addView(String title, Icon icon, Component component, Object id, JComponent dockingArea);
+
     public boolean removeView(IView view);
 
     /**
-- 
GitLab