From d6f76916eb0f61bb944c5c4a8222ea63d41f23e3 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Sat, 25 Apr 2020 17:51:13 +0200 Subject: [PATCH] separate ListenerPanel in interface and class --- src/be/nikiroo/utils/ui/BreadCrumbsBar.java | 1 - src/be/nikiroo/utils/ui/ListenerItem.java | 53 +++++++++++++++++++++ src/be/nikiroo/utils/ui/ListenerPanel.java | 42 +++------------- 3 files changed, 60 insertions(+), 36 deletions(-) create mode 100644 src/be/nikiroo/utils/ui/ListenerItem.java diff --git a/src/be/nikiroo/utils/ui/BreadCrumbsBar.java b/src/be/nikiroo/utils/ui/BreadCrumbsBar.java index 8b993e64..a0e205c9 100644 --- a/src/be/nikiroo/utils/ui/BreadCrumbsBar.java +++ b/src/be/nikiroo/utils/ui/BreadCrumbsBar.java @@ -3,7 +3,6 @@ package be.nikiroo.utils.ui; import java.awt.BorderLayout; import java.awt.Dimension; -import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; diff --git a/src/be/nikiroo/utils/ui/ListenerItem.java b/src/be/nikiroo/utils/ui/ListenerItem.java new file mode 100644 index 00000000..3fa41c83 --- /dev/null +++ b/src/be/nikiroo/utils/ui/ListenerItem.java @@ -0,0 +1,53 @@ +package be.nikiroo.utils.ui; + +import java.awt.event.ActionListener; + +/** + * The default {@link ActionListener} add/remove/fire methods. + * + * @author niki + */ +public interface ListenerItem { + /** + * Check that this {@link ListenerItem} currently has + * {@link ActionListener}s that listen on it. + * + * @return TRUE if it has + */ + public boolean hasListeners(); + + /** + * Check how many events are currently waiting for an + * {@link ActionListener}. + * + * @return the number of waiting events (can be 0) + */ + public int getWaitingEventCount(); + + /** + * Adds the specified action listener to receive action events from this + * {@link ListenerItem}. + * + * @param listener + * the action listener to be added + */ + public void addActionListener(ActionListener listener); + + /** + * Removes the specified action listener so that it no longer receives + * action events from this {@link ListenerItem}. + * + * @param listener + * the action listener to be removed + */ + public void removeActionListener(ActionListener listener); + + /** + * Notify the listeners of an action. + * + * @param listenerCommand + * A string that may specify a command (possibly one of several) + * associated with the event + */ + public void fireActionPerformed(String listenerCommand); +} diff --git a/src/be/nikiroo/utils/ui/ListenerPanel.java b/src/be/nikiroo/utils/ui/ListenerPanel.java index 144cdd24..ada07960 100644 --- a/src/be/nikiroo/utils/ui/ListenerPanel.java +++ b/src/be/nikiroo/utils/ui/ListenerPanel.java @@ -17,7 +17,7 @@ import javax.swing.JPanel; * * @author niki */ -public class ListenerPanel extends JPanel { +public class ListenerPanel extends JPanel implements ListenerItem { private static final long serialVersionUID = 1L; /** Waiting queue until at least one listener is here to get the events. */ @@ -30,33 +30,17 @@ public class ListenerPanel extends JPanel { waitingQueue = new LinkedList(); } - /** - * Check that this {@link ListenerPanel} currently has - * {@link ActionListener}s that listen on it. - * - * @return TRUE if it has - */ + @Override public synchronized boolean hasListeners() { return listenerList.getListenerList().length > 1; } - /** - * Check how many events are currently waiting for an - * {@link ActionListener}. - * - * @return the number of waiting events (can be 0) - */ + @Override public synchronized int getWaitingEventCount() { return waitingQueue.size(); } - /** - * Adds the specified action listener to receive action events from this - * {@link ListenerPanel}. - * - * @param listener - * the action listener to be added - */ + @Override public synchronized void addActionListener(ActionListener listener) { if (!hasListeners()) { while (!waitingQueue.isEmpty()) { @@ -67,25 +51,13 @@ public class ListenerPanel extends JPanel { listenerList.add(ActionListener.class, listener); } - /** - * Removes the specified action listener so that it no longer receives - * action events from this {@link ListenerPanel}. - * - * @param listener - * the action listener to be removed - */ + @Override public synchronized void removeActionListener(ActionListener listener) { listenerList.remove(ActionListener.class, listener); } - /** - * Notify the listeners of an action. - * - * @param listenerCommand - * A string that may specify a command (possibly one of several) - * associated with the event - */ - protected synchronized void fireActionPerformed(String listenerCommand) { + @Override + public synchronized void fireActionPerformed(String listenerCommand) { ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, listenerCommand); -- 2.27.0