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