diff --git a/dockingcore/src/main/java/fr/soleil/docking/view/AbstractViewFactory.java b/dockingcore/src/main/java/fr/soleil/docking/view/AbstractViewFactory.java index 63c84884f99ea63fa27437322f3d806842882704..bcfbb063e1159f255018feaf72b3dbbe226c880c 100644 --- a/dockingcore/src/main/java/fr/soleil/docking/view/AbstractViewFactory.java +++ b/dockingcore/src/main/java/fr/soleil/docking/view/AbstractViewFactory.java @@ -14,6 +14,8 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.prefs.Preferences; import javax.swing.Action; +import javax.swing.Icon; +import javax.swing.JComponent; import fr.soleil.docking.action.ViewAction; @@ -111,6 +113,22 @@ public abstract class AbstractViewFactory implements IViewFactory { return toRemove; } + @Override + public IView addView(String title, Icon icon, Component component, Object id) { + return addView(title, icon, component, id, null); + } + + @Override + public IView addView(String title, Icon icon, Component component, Object id, JComponent dockingArea) { + IView view = createView(title, icon, component, id); + updateViewForDockingArea(view, dockingArea); + return addView(view); + } + + protected abstract IView createView(String title, Icon icon, Component component, Object id); + + protected abstract void updateViewForDockingArea(IView view, JComponent dockingArea); + @Override public boolean removeView(IView view) { boolean result; 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 cbd60374b36194b4c49f28cabecd56ddbf3cb12c..b3d59f701d1de31914603a6a8a432ab283c3eede 100644 --- a/dockingcore/src/main/java/fr/soleil/docking/view/IViewFactory.java +++ b/dockingcore/src/main/java/fr/soleil/docking/view/IViewFactory.java @@ -78,6 +78,18 @@ 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 the 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 + * @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); + /** * 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