/* ****************************************************************************** * Copyright (c) 2006-2012 XMind Ltd. and others. * * This file is a part of XMind 3. XMind releases 3 and * above are dual-licensed under the Eclipse Public License (EPL), * which is available at http://www.eclipse.org/legal/epl-v10.html * and the GNU Lesser General Public License (LGPL), * which is available at http://www.gnu.org/licenses/lgpl.html * See http://www.xmind.net/license.html for details. * * Contributors: * XMind Ltd. - initial API and implementation *******************************************************************************/ package org.xmind.gef.status; import java.util.ArrayList; import java.util.List; /** * @author Brian Sun * @version 2005 */ public abstract class AbstractStatusMachine implements IStatusMachine { private Object source = null; private List<IStatusListener> listeners = null; public AbstractStatusMachine() { } public AbstractStatusMachine(Object source) { this.source = source; } protected void fireStatusChanged(int key, boolean newValue) { if (listeners != null) { StatusEvent event = new StatusEvent(source == null ? this : source, key, newValue); for (Object l : listeners.toArray()) { ((IStatusListener) l).statusChanged(event); } } } /** * @see org.xmind.gef.status.IStatusMachine#addStatusListener(org.xmind.gef.status.IStatusListener) */ public void addStatusListener(IStatusListener listener) { if (listeners == null) { listeners = new ArrayList<IStatusListener>(); } listeners.add(listener); } /** * @see org.xmind.gef.status.IStatusMachine#removeStatusListener(org.xmind.gef.status.IStatusListener) */ public void removeStatusListener(IStatusListener listener) { if (listeners != null) { listeners.remove(listener); } } // /** // * @see org.xmind.framework.Disposable#dispose() // */ // @Override // public void dispose() { // if (listeners != null) { // listeners.clear(); // listeners = null; // } // super.dispose(); // } }