
org.monte.media.beans.AbstractStateModel Maven / Gradle / Ivy
/*
* @(#)AbstractStateModel.java 1.1 2002-05-09
*
* Copyright (c) 2002-05-09 Werner Randelshofer, Goldau, Switzerland.
* All rights reserved.
*
* You may not use, copy or modify this file, except in compliance with the
* license agreement you entered into with Werner Randelshofer.
* For details see accompanying license terms.
*/
package org.monte.media.beans;
import javax.swing.event.*;
/**
* Abstract superclass of models that fire state change
* events to registered ChangeListener's, when their
* state changes.
*
* @author Werner Randelshofer
* @version 1.0 2002-05-09 Created.
*/
public class AbstractStateModel {
protected EventListenerList listenerList;
protected ChangeEvent changeEvent;
/** Creates a new instance of AbstractChangeModel */
public AbstractStateModel() {
}
public void addChangeListener(ChangeListener l) {
if (listenerList == null) {
listenerList = new EventListenerList();
}
listenerList.add(ChangeListener.class, l);
}
public void removeChangeListener(ChangeListener l) {
if (listenerList == null) {
listenerList = new EventListenerList();
}
listenerList.remove(ChangeListener.class, l);
}
/**
* Notify all listeners that have registered interest for
* notification on this event type.
*/
protected void fireStateChanged() {
if (listenerList != null) {
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]==ChangeListener.class) {
// Lazily create the event:
if (changeEvent == null) {
changeEvent = new ChangeEvent(this);
}
((ChangeListener)listeners[i+1]).stateChanged(changeEvent);
}
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy