X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix_swing%2Fgui%2Futils%2FListenerPanel.java;h=9e321fd972f163a5dd781943bdada94486380e1b;hb=62c7e07ef88c8f809b46f4e4525aa0d3f8a9cb14;hp=98202b2da42108c44beee3119fb32a2b4bf1cec1;hpb=d6c8579cb5debbdf7657d405e6529ba324903fcd;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix_swing/gui/utils/ListenerPanel.java b/src/be/nikiroo/fanfix_swing/gui/utils/ListenerPanel.java index 98202b2..9e321fd 100644 --- a/src/be/nikiroo/fanfix_swing/gui/utils/ListenerPanel.java +++ b/src/be/nikiroo/fanfix_swing/gui/utils/ListenerPanel.java @@ -14,7 +14,7 @@ import be.nikiroo.fanfix_swing.gui.SearchBar; * methods. *

* Note that it will queue all events until at least one listener comes (or - * comes back!); this first (or at least curently unique) listener will drain + * comes back!); this first (or at least currently unique) listener will drain * the queue. * * @author niki @@ -22,6 +22,7 @@ import be.nikiroo.fanfix_swing.gui.SearchBar; public class ListenerPanel extends JPanel { private static final long serialVersionUID = 1L; + /** Waiting queue until at least one listener is here to get the events. */ private final Queue waitingQueue; /** @@ -32,8 +33,8 @@ public class ListenerPanel extends JPanel { } /** - * Check that this {@link ListenerPanel} currently has {@link ActionListener}s - * that listen on it. + * Check that this {@link ListenerPanel} currently has + * {@link ActionListener}s that listen on it. * * @return TRUE if it has */ @@ -42,7 +43,8 @@ public class ListenerPanel extends JPanel { } /** - * Check how many events are currently waiting for an {@link ActionListener}. + * Check how many events are currently waiting for an + * {@link ActionListener}. * * @return the number of waiting events (can be 0) */ @@ -54,7 +56,8 @@ public class ListenerPanel extends JPanel { * Adds the specified action listener to receive action events from this * {@link SearchBar}. * - * @param listener the action listener to be added + * @param listener + * the action listener to be added */ public synchronized void addActionListener(ActionListener listener) { if (!hasListeners()) { @@ -67,10 +70,11 @@ public class ListenerPanel extends JPanel { } /** - * Removes the specified action listener so that it no longer receives action - * events from this {@link SearchBar}. + * Removes the specified action listener so that it no longer receives + * action events from this {@link SearchBar}. * - * @param listener the action listener to be removed + * @param listener + * the action listener to be removed */ public synchronized void removeActionListener(ActionListener listener) { listenerList.remove(ActionListener.class, listener); @@ -79,17 +83,18 @@ public class ListenerPanel extends JPanel { /** * Notify the listeners of an action. * - * @param listenerCommand A string that may specify a command (possibly one of - * several) associated with the event + * @param listenerCommand + * A string that may specify a command (possibly one of several) + * associated with the event */ protected synchronized void fireActionPerformed(String listenerCommand) { - ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, listenerCommand); - if (hasListeners()) { - Object[] listeners = listenerList.getListenerList(); - for (int i = listeners.length - 2; i >= 0; i -= 2) { - if (listeners[i] == ActionListener.class) { - ((ActionListener) listeners[i + 1]).actionPerformed(e); - } + ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, + listenerCommand); + + ActionListener[] listeners = getListeners(ActionListener.class); + if (listeners.length > 0) { + for (ActionListener action : listeners) { + action.actionPerformed(e); } } else { waitingQueue.add(e);