/* * Tiled Map Editor, (c) 2004-2006 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Adam Turk <aturk@biggeruniverse.com> * Bjorn Lindeijer <bjorn@lindeijer.nl> */ package tiled.mapeditor.util; import java.awt.Component; import java.util.LinkedList; import java.util.ListIterator; public class MapEventAdapter { public static final int ME_MAPACTIVE = 1; public static final int ME_MAPINACTIVE = 2; private LinkedList<Component> listeners; public MapEventAdapter() { listeners = new LinkedList<Component>(); } /** * Adds a Component to the list of listeners of map events. Checks that * the component is not already in the list. * * @param obj the listener to add */ public void addListener(Component obj) { /* Small sanity check - don't add it if it's already there. * Really only useful to the removeListener() func, as * LinkedList.remove() only removes the first instance of a given * object. */ if (listeners.indexOf(obj) == -1) { listeners.add(obj); } } /** * Removes a component from the list of listeners. * * @param obj the Component to remove */ public void removeListener(Component obj) { listeners.remove(obj); } /** * Fires an event to notify all listeners. * * @param type the event type */ public void fireEvent(int type) { //TODO: the idea is to extend this to allow for a multitude of // different event types at some point... if (type == ME_MAPACTIVE) { enableEvent(); } else if (type == ME_MAPINACTIVE) { disableEvent(); } } private void enableEvent() { Component c; ListIterator<Component> li = listeners.listIterator(); while (li.hasNext()) { c = li.next(); c.setEnabled(true); } } private void disableEvent(){ Component c; ListIterator<Component> li = listeners.listIterator(); while (li.hasNext()) { c = li.next(); c.setEnabled(false); } } }