001 package nl.cwi.sen1.gui.plugin;
002
003 import javax.swing.event.EventListenerList;
004
005 /**
006 * A default implementation of a StudioPlugin for your convenience.
007 * This class simply provides the implementation of the Observer
008 * design pattern already. The other methods of StudioPlugin need
009 * still to be implemented.
010 */
011 public abstract class DefaultStudioPlugin implements StudioPlugin {
012 private EventListenerList listenerList = new EventListenerList();
013
014 public void addStudioPluginListener(StudioPluginListener l) {
015 listenerList.add(StudioPluginListener.class, l);
016 }
017
018 public void removeStudioPluginListener(StudioPluginListener l) {
019 listenerList.remove(StudioPluginListener.class, l);
020 }
021
022 protected void fireStudioPluginClosed() {
023 Object[] listeners = listenerList.getListenerList();
024 for (int i = listeners.length - 2; i >= 0; i -= 2) {
025 if (listeners[i] == StudioPluginListener.class) {
026 ((StudioPluginListener) listeners[i + 1])
027 .studioPluginClosed(this);
028 }
029 }
030 }
031 }