import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.EventObject;
import java.util.List;
import javax.swing.AbstractAction;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
import net.sf.openrocket.logging.LogHelper;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.util.Invalidator;
import net.sf.openrocket.util.MemoryManagement;
import net.sf.openrocket.util.Reflection;
+import net.sf.openrocket.util.StateChangeListener;
/**
*
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
*/
-public class BooleanModel extends AbstractAction implements ChangeListener, Invalidatable {
+public class BooleanModel extends AbstractAction implements StateChangeListener, Invalidatable {
private static final LogHelper log = Application.getLogger();
private final ChangeSource source;
}
@Override
- public void stateChanged(ChangeEvent event) {
+ public void stateChanged(EventObject event) {
checkState(true);
if (firing > 0) {
import javax.swing.BoundedRangeModel;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
+import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import net.sf.openrocket.logging.LogHelper;
checkState(true);
EventObject event = new EventObject(this);
+ ChangeEvent cevent = new ChangeEvent(this);
firing++;
// Copy the list before iterating to prevent concurrent modification exceptions.
EventListener[] ls = listeners.toArray(new EventListener[0]);
for (EventListener l : ls) {
if ( l instanceof StateChangeListener ) {
((StateChangeListener)l).stateChanged(event);
+ } else if ( l instanceof ChangeListener ) {
+ ((ChangeListener)l).stateChanged(cevent);
}
}
firing--;
package net.sf.openrocket.gui.adaptors;
+import java.util.EventObject;
+
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
import net.sf.openrocket.util.ChangeSource;
import net.sf.openrocket.util.Reflection;
+import net.sf.openrocket.util.StateChangeListener;
public class EnumModel<T extends Enum<T>> extends AbstractListModel
- implements ComboBoxModel, ChangeListener {
+ implements ComboBoxModel, StateChangeListener {
private final ChangeSource source;
private final String valueName;
@SuppressWarnings("unchecked")
@Override
- public void stateChanged(ChangeEvent e) {
+ public void stateChanged(EventObject e) {
Enum<T> value = (Enum<T>) getMethod.invoke(source);
if (value != currentValue) {
currentValue = value;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.EventListener;
+import java.util.EventObject;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import net.sf.openrocket.util.BugException;
import net.sf.openrocket.util.ChangeSource;
import net.sf.openrocket.util.Reflection;
+import net.sf.openrocket.util.StateChangeListener;
-public class IntegerModel implements ChangeListener {
+public class IntegerModel implements StateChangeListener {
private static final LogHelper log = Application.getLogger();
private final Method getMethod;
private final Method setMethod;
- private final ArrayList<ChangeListener> listeners = new ArrayList<ChangeListener>();
+ private final ArrayList<EventListener> listeners = new ArrayList<EventListener>();
private final int minValue;
private final int maxValue;
* is the first listener.
* @param l Listener to add.
*/
- public void addChangeListener(ChangeListener l) {
+ public void addChangeListener(EventListener l) {
if (listeners.isEmpty()) {
source.addChangeListener(this);
lastValue = getValue();
public void fireStateChanged() {
- Object[] l = listeners.toArray();
- ChangeEvent event = new ChangeEvent(this);
+ EventListener[] list = listeners.toArray(new EventListener[0] );
+ EventObject event = new EventObject(this);
+ ChangeEvent cevent = new ChangeEvent(this);
firing++;
- for (int i = 0; i < l.length; i++)
- ((ChangeListener) l[i]).stateChanged(event);
+ for( EventListener l : list ) {
+ if ( l instanceof ChangeListener) {
+ ((ChangeListener)l).stateChanged(cevent);
+ } else if ( l instanceof StateChangeListener ) {
+ ((StateChangeListener)l).stateChanged(event);
+ }
+ }
firing--;
}
* Called when the source changes. Checks whether the modeled value has changed, and if
* it has, updates lastValue and generates ChangeEvents for all listeners of the model.
*/
- public void stateChanged(ChangeEvent e) {
+ @Override
+ public void stateChanged(EventObject e) {
int v = getValue();
if (lastValue == v)
return;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
+import java.util.EventObject;
import java.util.List;
import javax.swing.Action;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
import net.sf.openrocket.gui.adaptors.DoubleModel;
import net.sf.openrocket.unit.Unit;
import net.sf.openrocket.unit.UnitGroup;
+import net.sf.openrocket.util.StateChangeListener;
/**
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
*/
-public class UnitSelector extends StyledLabel implements ChangeListener, MouseListener,
+public class UnitSelector extends StyledLabel implements StateChangeListener, MouseListener,
ItemSelectable {
private DoubleModel model;
/**
* Update the component when the DoubleModel changes.
*/
- public void stateChanged(ChangeEvent e) {
+ @Override
+ public void stateChanged(EventObject e) {
updateText();
}
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Ellipse2D;
+import java.util.EventObject;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JSpinner;
import javax.swing.SwingUtilities;
import javax.swing.border.BevelBorder;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.unit.UnitGroup;
import net.sf.openrocket.util.BugException;
import net.sf.openrocket.util.Coordinate;
+import net.sf.openrocket.util.StateChangeListener;
public class InnerTubeConfig extends ThicknessRingComponentConfig {
}
- private class ClusterButton extends JPanel implements ChangeListener, MouseListener,
+ private class ClusterButton extends JPanel implements StateChangeListener, MouseListener,
Resettable {
private Clusterable component;
private ClusterConfiguration config;
@Override
- public void stateChanged(ChangeEvent e) {
+ public void stateChanged(EventObject e) {
repaint();
}
}
// Notify all listeners
- for ( EventListener l : listenerList ) {
+ // Copy the list before iterating to prevent concurrent modification exceptions.
+ EventListener[] list = listenerList.toArray( new EventListener[0] );
+ for ( EventListener l : list ) {
if ( l instanceof ComponentChangeListener ) {
((ComponentChangeListener) l ).componentChanged(e);
} else if ( l instanceof StateChangeListener ) {