// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea // Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/ package graphtea.platform.attribute; import java.util.Collection; /** * An Interface which is an AttributeSet and also it * is notifiable<br> * as an example see NotifiableAttributeSetImpl * <br/> * The difference between a NotifiableAttributeSet and a BlackBoard is that, NotifiableAttributeSet is designed * for a small set of attributes, so for example getAttributeListeners() will return all listeners of all attributes, * but BlackBoard is for a bigger set of attributes, and there you can give listeners for just one key at a time. * * @see NotifiableAttributeSetImpl * * @author Azin Azadi */ public interface NotifiableAttributeSet extends AttributeSet { /** * Add a listener to changes of an AttributeSet. <br> * It's better to use a <code>List</code> because of * <code>getAttributeListeners()</code> method. * * @param attributeListener the listener! */ void addAttributeListener(AttributeListener attributeListener); /** * @return List of listeners */ Collection<AttributeListener> getAttributeListeners(); /** * Remove a listener from list of listeners. * * @param attributeListener The attribute listener */ void removeAttributeListener(AttributeListener attributeListener); }