From 35f6c0a60b7da8b5e7489ec2076a428876402f07 Mon Sep 17 00:00:00 2001 From: Raphael Girardot <raphael.girardot@synchrotron-soleil.fr> Date: Mon, 2 Nov 2015 15:51:20 +0000 Subject: [PATCH] - better listeners management. Big change --> version set to 1.1.0-SNAPSHOT - added the possibility to change IView's icon and title (JAVAAPI-262) --- dockingvl/pom.xml | 2 +- .../fr/soleil/docking/vl/view/VlDockView.java | 49 ++++++++++++------- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/dockingvl/pom.xml b/dockingvl/pom.xml index 9e204d5..6680a90 100644 --- a/dockingvl/pom.xml +++ b/dockingvl/pom.xml @@ -9,7 +9,7 @@ </parent> <groupId>fr.soleil.lib</groupId> <artifactId>DockingVl</artifactId> - <version>1.0.8-SNAPSHOT</version> + <version>1.1.0-SNAPSHOT</version> <name>Docking VL</name> <description>VL Docking implementation of DockingCore</description> <developers> diff --git a/dockingvl/src/main/java/fr/soleil/docking/vl/view/VlDockView.java b/dockingvl/src/main/java/fr/soleil/docking/vl/view/VlDockView.java index 27c892f..ca1d81a 100644 --- a/dockingvl/src/main/java/fr/soleil/docking/vl/view/VlDockView.java +++ b/dockingvl/src/main/java/fr/soleil/docking/vl/view/VlDockView.java @@ -25,11 +25,14 @@ import com.vldocking.swing.docking.event.DockingActionCloseEvent; import com.vldocking.swing.docking.event.DockingActionEvent; import com.vldocking.swing.docking.event.DockingActionListener; +import fr.soleil.docking.event.DockingEvent; +import fr.soleil.docking.listener.IViewListener; +import fr.soleil.docking.listener.ViewListenerDelegate; import fr.soleil.docking.view.IView; -import fr.soleil.docking.view.IViewListener; import fr.soleil.docking.vl.SoleilDockingDesktop; public class VlDockView implements IView, Dockable, DockingActionListener, FocusListener { + protected Object id; protected boolean enabled; protected String title; @@ -37,7 +40,7 @@ public class VlDockView implements IView, Dockable, DockingActionListener, Focus protected Icon icon; protected DockKey key; protected SoleilDockingDesktop dockingDesktop; - protected List<IViewListener> viewListeners; + protected final ViewListenerDelegate delegate; public VlDockView(String title, Icon icon, Component component, Object id) { this.title = title; @@ -51,7 +54,7 @@ public class VlDockView implements IView, Dockable, DockingActionListener, Focus this.key = new DockKey(title, title, title, icon); } - this.viewListeners = new ArrayList<IViewListener>(); + delegate = new ViewListenerDelegate(); this.component.addFocusListener(this); } @@ -107,7 +110,7 @@ public class VlDockView implements IView, Dockable, DockingActionListener, Focus @Override public void select() { setVisible(true); - // TODO marche pas !!!!!! + // TODO Doesn't work !!!!!! focus(component); focusGained(new FocusEvent(component, FocusEvent.FOCUS_GAINED)); } @@ -139,11 +142,21 @@ public class VlDockView implements IView, Dockable, DockingActionListener, Focus return title; } + @Override + public void setTitle(String title) { + this.title = title; + } + @Override public Icon getIcon() { return icon; } + @Override + public void setIcon(Icon icon) { + this.icon = icon; + } + @Override public Color getViewBackground() { return component.getBackground(); @@ -168,11 +181,10 @@ public class VlDockView implements IView, Dockable, DockingActionListener, Focus component.setForeground(fg); } - /* + /** * Sets the background of all {@link Component}s in a given {@link List} * * @param components The {@link List} - * * @param bg The background to set */ protected void setComponentsBackground(List<?> components, Color bg) { @@ -216,12 +228,16 @@ public class VlDockView implements IView, Dockable, DockingActionListener, Focus @Override public void setClosable(boolean closable) { key.setCloseEnabled(closable); - } @Override public void addViewListener(final IViewListener listener) { - viewListeners.add(listener); + delegate.addViewListener(listener); + } + + @Override + public void removeViewListener(IViewListener listener) { + delegate.removeViewListener(listener); } @Override @@ -235,26 +251,23 @@ public class VlDockView implements IView, Dockable, DockingActionListener, Focus } @Override - public void dockingActionPerformed(DockingActionEvent event) { - if (event.getActionType() == DockingActionEvent.ACTION_CLOSE) { - Dockable closedDockable = ((DockingActionCloseEvent) event).getDockable(); + public void dockingActionPerformed(DockingActionEvent e) { + if (e.getActionType() == DockingActionEvent.ACTION_CLOSE) { + Dockable closedDockable = ((DockingActionCloseEvent) e).getDockable(); if (getDockKey().getKey().equals(closedDockable.getDockKey().getKey())) { - for (IViewListener listener : viewListeners) { - listener.viewClosed(); - } + delegate.warnListeners(new DockingEvent(this, DockingEvent.VIEW_CLOSED)); } } } @Override public void focusGained(FocusEvent e) { - for (IViewListener listener : viewListeners) { - listener.focusGained(); - } + delegate.warnListeners(new DockingEvent(this, DockingEvent.FOCUS_GAINED)); } @Override public void focusLost(FocusEvent e) { - // Not managed. + delegate.warnListeners(new DockingEvent(this, DockingEvent.FOCUS_LOST)); } + } -- GitLab