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 b6c063b1300abb397f04ec681aeed78c5eea90a3..63c84884f99ea63fa27437322f3d806842882704 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 d2baff9e081ac55f0fc87e9a08896c36d538b7d6..cbd60374b36194b4c49f28cabecd56ddbf3cb12c 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); /**