Reduce dependency on swing ChangeListener and ChangeEvent classes. Changed the interface ChangeSource from using ChangeListener to using java.util.EventListener. Changed from using ChangeEvent object instances to using EventObject. Added marker interface StateChangeListener to declare a stateChanged method.
This commit is contained in:
parent
1eb91a2b36
commit
d30083c05b
@ -1,11 +1,10 @@
|
||||
package net.sf.openrocket.aerodynamics;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EventListener;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
|
||||
import net.sf.openrocket.models.atmosphere.AtmosphericConditions;
|
||||
import net.sf.openrocket.rocketcomponent.Configuration;
|
||||
import net.sf.openrocket.util.BugException;
|
||||
@ -13,6 +12,7 @@ import net.sf.openrocket.util.ChangeSource;
|
||||
import net.sf.openrocket.util.Coordinate;
|
||||
import net.sf.openrocket.util.MathUtil;
|
||||
import net.sf.openrocket.util.Monitorable;
|
||||
import net.sf.openrocket.util.StateChangeListener;
|
||||
import net.sf.openrocket.util.UniqueID;
|
||||
|
||||
/**
|
||||
@ -23,8 +23,8 @@ import net.sf.openrocket.util.UniqueID;
|
||||
*/
|
||||
public class FlightConditions implements Cloneable, ChangeSource, Monitorable {
|
||||
|
||||
private List<ChangeListener> listenerList = new ArrayList<ChangeListener>();
|
||||
private ChangeEvent event = new ChangeEvent(this);
|
||||
private List<EventListener> listenerList = new ArrayList<EventListener>();
|
||||
private EventObject event = new EventObject(this);
|
||||
|
||||
|
||||
/** Reference length used in calculations. */
|
||||
@ -409,8 +409,8 @@ public class FlightConditions implements Cloneable, ChangeSource, Monitorable {
|
||||
public FlightConditions clone() {
|
||||
try {
|
||||
FlightConditions cond = (FlightConditions) super.clone();
|
||||
cond.listenerList = new ArrayList<ChangeListener>();
|
||||
cond.event = new ChangeEvent(cond);
|
||||
cond.listenerList = new ArrayList<EventListener>();
|
||||
cond.event = new EventObject(cond);
|
||||
cond.atmosphericConditions = atmosphericConditions.clone();
|
||||
return cond;
|
||||
} catch (CloneNotSupportedException e) {
|
||||
@ -445,20 +445,23 @@ public class FlightConditions implements Cloneable, ChangeSource, Monitorable {
|
||||
|
||||
|
||||
@Override
|
||||
public void addChangeListener(ChangeListener listener) {
|
||||
public void addChangeListener(EventListener listener) {
|
||||
listenerList.add(0, listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChangeListener(ChangeListener listener) {
|
||||
public void removeChangeListener(EventListener listener) {
|
||||
listenerList.remove(listener);
|
||||
}
|
||||
|
||||
protected void fireChangeEvent() {
|
||||
modID = UniqueID.next();
|
||||
ChangeListener[] listeners = listenerList.toArray(new ChangeListener[0]);
|
||||
for (ChangeListener l : listeners) {
|
||||
l.stateChanged(event);
|
||||
// Copy the list before iterating to prevent concurrent modification exceptions.
|
||||
EventListener[] listeners = listenerList.toArray(new EventListener[0]);
|
||||
for (EventListener l : listeners) {
|
||||
if ( l instanceof StateChangeListener ) {
|
||||
((StateChangeListener)l).stateChanged(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,9 @@
|
||||
package net.sf.openrocket.document;
|
||||
|
||||
import java.util.EventListener;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
|
||||
import net.sf.openrocket.aerodynamics.AerodynamicCalculator;
|
||||
import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
|
||||
import net.sf.openrocket.aerodynamics.WarningSet;
|
||||
@ -28,6 +27,7 @@ import net.sf.openrocket.util.ArrayList;
|
||||
import net.sf.openrocket.util.BugException;
|
||||
import net.sf.openrocket.util.ChangeSource;
|
||||
import net.sf.openrocket.util.SafetyMutex;
|
||||
import net.sf.openrocket.util.StateChangeListener;
|
||||
|
||||
/**
|
||||
* A class defining a simulation, its conditions and simulated data.
|
||||
@ -79,7 +79,7 @@ public class Simulation implements ChangeSource, Cloneable {
|
||||
|
||||
|
||||
/** Listeners for this object */
|
||||
private List<ChangeListener> listeners = new ArrayList<ChangeListener>();
|
||||
private List<EventListener> listeners = new ArrayList<EventListener>();
|
||||
|
||||
|
||||
/** The conditions actually used in the previous simulation, or null */
|
||||
@ -386,7 +386,7 @@ public class Simulation implements ChangeSource, Cloneable {
|
||||
copy.status = Status.NOT_SIMULATED;
|
||||
copy.options = this.options.clone();
|
||||
copy.simulationListeners = this.simulationListeners.clone();
|
||||
copy.listeners = new ArrayList<ChangeListener>();
|
||||
copy.listeners = new ArrayList<EventListener>();
|
||||
copy.simulatedConditions = null;
|
||||
copy.simulatedMotors = null;
|
||||
copy.simulatedData = null;
|
||||
@ -429,34 +429,37 @@ public class Simulation implements ChangeSource, Cloneable {
|
||||
|
||||
|
||||
@Override
|
||||
public void addChangeListener(ChangeListener listener) {
|
||||
public void addChangeListener(EventListener listener) {
|
||||
mutex.verify();
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChangeListener(ChangeListener listener) {
|
||||
public void removeChangeListener(EventListener listener) {
|
||||
mutex.verify();
|
||||
listeners.remove(listener);
|
||||
}
|
||||
|
||||
protected void fireChangeEvent() {
|
||||
ChangeListener[] ls = listeners.toArray(new ChangeListener[0]);
|
||||
ChangeEvent e = new ChangeEvent(this);
|
||||
for (ChangeListener l : ls) {
|
||||
l.stateChanged(e);
|
||||
EventObject e = new EventObject(this);
|
||||
// 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(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private class ConditionListener implements ChangeListener {
|
||||
private class ConditionListener implements StateChangeListener {
|
||||
|
||||
private Status oldStatus = null;
|
||||
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
public void stateChanged(EventObject e) {
|
||||
if (getStatus() != oldStatus) {
|
||||
oldStatus = getStatus();
|
||||
fireChangeEvent();
|
||||
|
@ -6,13 +6,14 @@ import java.beans.PropertyChangeListener;
|
||||
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.AbstractAction;
|
||||
import javax.swing.Action;
|
||||
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;
|
||||
@ -26,6 +27,7 @@ import net.sf.openrocket.util.Invalidator;
|
||||
import net.sf.openrocket.util.MathUtil;
|
||||
import net.sf.openrocket.util.MemoryManagement;
|
||||
import net.sf.openrocket.util.Reflection;
|
||||
import net.sf.openrocket.util.StateChangeListener;
|
||||
|
||||
|
||||
/**
|
||||
@ -42,7 +44,7 @@ import net.sf.openrocket.util.Reflection;
|
||||
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
|
||||
*/
|
||||
|
||||
public class DoubleModel implements ChangeListener, ChangeSource, Invalidatable {
|
||||
public class DoubleModel implements StateChangeListener, ChangeSource, Invalidatable {
|
||||
private static final LogHelper log = Application.getLogger();
|
||||
|
||||
|
||||
@ -147,7 +149,7 @@ public class DoubleModel implements ChangeListener, ChangeSource, Invalidatable
|
||||
|
||||
//////////// JSlider model ////////////
|
||||
|
||||
private class ValueSliderModel implements BoundedRangeModel, ChangeListener, Invalidatable {
|
||||
private class ValueSliderModel implements BoundedRangeModel, StateChangeListener, Invalidatable {
|
||||
private static final int MAX = 1000;
|
||||
|
||||
/*
|
||||
@ -361,7 +363,7 @@ public class DoubleModel implements ChangeListener, ChangeSource, Invalidatable
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
public void stateChanged(EventObject e) {
|
||||
// Min or max range has changed.
|
||||
// Fire if not already firing
|
||||
if (firing == 0)
|
||||
@ -392,7 +394,7 @@ public class DoubleModel implements ChangeListener, ChangeSource, Invalidatable
|
||||
|
||||
//////////// Action model ////////////
|
||||
|
||||
private class AutomaticActionModel extends AbstractAction implements ChangeListener, Invalidatable {
|
||||
private class AutomaticActionModel extends AbstractAction implements StateChangeListener, Invalidatable {
|
||||
private boolean oldValue = false;
|
||||
|
||||
public AutomaticActionModel() {
|
||||
@ -453,7 +455,7 @@ public class DoubleModel implements ChangeListener, ChangeSource, Invalidatable
|
||||
|
||||
// If the value has changed, generate an event to the listeners
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
public void stateChanged(EventObject e) {
|
||||
boolean newValue = isAutomatic();
|
||||
if (oldValue == newValue)
|
||||
return;
|
||||
@ -507,7 +509,7 @@ public class DoubleModel implements ChangeListener, ChangeSource, Invalidatable
|
||||
private final Method getAutoMethod;
|
||||
private final Method setAutoMethod;
|
||||
|
||||
private final ArrayList<ChangeListener> listeners = new ArrayList<ChangeListener>();
|
||||
private final ArrayList<EventListener> listeners = new ArrayList<EventListener>();
|
||||
|
||||
private final UnitGroup units;
|
||||
private Unit currentUnit;
|
||||
@ -815,7 +817,7 @@ public class DoubleModel implements ChangeListener, ChangeSource, Invalidatable
|
||||
* @param l Listener to add.
|
||||
*/
|
||||
@Override
|
||||
public void addChangeListener(ChangeListener l) {
|
||||
public void addChangeListener(EventListener l) {
|
||||
checkState(true);
|
||||
|
||||
if (listeners.isEmpty()) {
|
||||
@ -836,7 +838,7 @@ public class DoubleModel implements ChangeListener, ChangeSource, Invalidatable
|
||||
* @param l Listener to remove.
|
||||
*/
|
||||
@Override
|
||||
public void removeChangeListener(ChangeListener l) {
|
||||
public void removeChangeListener(EventListener l) {
|
||||
checkState(false);
|
||||
|
||||
listeners.remove(l);
|
||||
@ -888,11 +890,15 @@ public class DoubleModel implements ChangeListener, ChangeSource, Invalidatable
|
||||
protected void fireStateChanged() {
|
||||
checkState(true);
|
||||
|
||||
Object[] l = listeners.toArray();
|
||||
ChangeEvent event = new ChangeEvent(this);
|
||||
EventObject event = new EventObject(this);
|
||||
firing++;
|
||||
for (int i = 0; i < l.length; i++)
|
||||
((ChangeListener) l[i]).stateChanged(event);
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
firing--;
|
||||
}
|
||||
|
||||
@ -901,7 +907,7 @@ public class DoubleModel implements ChangeListener, ChangeSource, Invalidatable
|
||||
* it has, updates lastValue and generates ChangeEvents for all listeners of the model.
|
||||
*/
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
public void stateChanged(EventObject e) {
|
||||
checkState(true);
|
||||
|
||||
double v = getValue();
|
||||
|
@ -1,13 +1,12 @@
|
||||
package net.sf.openrocket.gui.adaptors;
|
||||
|
||||
|
||||
import java.util.EventObject;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.swing.ComboBoxModel;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import javax.swing.event.EventListenerList;
|
||||
import javax.swing.event.ListDataEvent;
|
||||
import javax.swing.event.ListDataListener;
|
||||
@ -19,8 +18,9 @@ import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
|
||||
import net.sf.openrocket.rocketcomponent.Configuration;
|
||||
import net.sf.openrocket.rocketcomponent.Rocket;
|
||||
import net.sf.openrocket.startup.Application;
|
||||
import net.sf.openrocket.util.StateChangeListener;
|
||||
|
||||
public class MotorConfigurationModel implements ComboBoxModel, ChangeListener {
|
||||
public class MotorConfigurationModel implements ComboBoxModel, StateChangeListener {
|
||||
private static final Translator trans = Application.getTranslator();
|
||||
|
||||
private static final String EDIT = trans.get("MotorCfgModel.Editcfg");
|
||||
@ -121,7 +121,7 @@ public class MotorConfigurationModel implements ComboBoxModel, ChangeListener {
|
||||
|
||||
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
public void stateChanged(EventObject e) {
|
||||
if (e instanceof ComponentChangeEvent) {
|
||||
// Ignore unnecessary changes
|
||||
if (!((ComponentChangeEvent)e).isMotorChange())
|
||||
|
@ -2,14 +2,15 @@ package net.sf.openrocket.gui.scalefigure;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.util.EventListener;
|
||||
import java.util.EventObject;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
|
||||
import net.sf.openrocket.util.Prefs;
|
||||
import net.sf.openrocket.util.StateChangeListener;
|
||||
|
||||
|
||||
public abstract class AbstractScaleFigure extends JPanel implements ScaleFigure {
|
||||
@ -27,7 +28,7 @@ public abstract class AbstractScaleFigure extends JPanel implements ScaleFigure
|
||||
protected int borderPixelsWidth = DEFAULT_BORDER_PIXELS_WIDTH;
|
||||
protected int borderPixelsHeight = DEFAULT_BORDER_PIXELS_HEIGHT;
|
||||
|
||||
protected final List<ChangeListener> listeners = new LinkedList<ChangeListener>();
|
||||
protected final List<EventListener> listeners = new LinkedList<EventListener>();
|
||||
|
||||
|
||||
public AbstractScaleFigure() {
|
||||
@ -106,23 +107,26 @@ public abstract class AbstractScaleFigure extends JPanel implements ScaleFigure
|
||||
|
||||
|
||||
@Override
|
||||
public void addChangeListener(ChangeListener listener) {
|
||||
public void addChangeListener(EventListener listener) {
|
||||
listeners.add(0, listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChangeListener(ChangeListener listener) {
|
||||
public void removeChangeListener(EventListener listener) {
|
||||
listeners.remove(listener);
|
||||
}
|
||||
|
||||
private ChangeEvent changeEvent = null;
|
||||
private EventObject changeEvent = null;
|
||||
|
||||
protected void fireChangeEvent() {
|
||||
ChangeListener[] list = listeners.toArray(new ChangeListener[0]);
|
||||
for (ChangeListener l : list) {
|
||||
if (changeEvent == null)
|
||||
changeEvent = new ChangeEvent(this);
|
||||
l.stateChanged(changeEvent);
|
||||
if (changeEvent == null)
|
||||
changeEvent = new EventObject(this);
|
||||
// Copy the list before iterating to prevent concurrent modification exceptions.
|
||||
EventListener[] list = listeners.toArray(new EventListener[0]);
|
||||
for (EventListener l : list) {
|
||||
if ( l instanceof StateChangeListener ) {
|
||||
((StateChangeListener)l).stateChanged(changeEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9,6 +9,8 @@ import java.awt.event.InputEvent;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.EventListener;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.Executors;
|
||||
@ -23,8 +25,6 @@ import javax.swing.JSlider;
|
||||
import javax.swing.JToggleButton;
|
||||
import javax.swing.JViewport;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import javax.swing.event.TreeSelectionEvent;
|
||||
import javax.swing.event.TreeSelectionListener;
|
||||
import javax.swing.tree.TreePath;
|
||||
@ -68,6 +68,7 @@ import net.sf.openrocket.util.Chars;
|
||||
import net.sf.openrocket.util.Coordinate;
|
||||
import net.sf.openrocket.util.MathUtil;
|
||||
import net.sf.openrocket.util.Prefs;
|
||||
import net.sf.openrocket.util.StateChangeListener;
|
||||
|
||||
/**
|
||||
* A JPanel that contains a RocketFigure and buttons to manipulate the figure.
|
||||
@ -110,7 +111,7 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
||||
|
||||
private SimulationWorker backgroundSimulationWorker = null;
|
||||
|
||||
private List<ChangeListener> listeners = new ArrayList<ChangeListener>();
|
||||
private List<EventListener> listeners = new ArrayList<EventListener>();
|
||||
|
||||
|
||||
/**
|
||||
@ -158,9 +159,9 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
||||
|
||||
createPanel();
|
||||
|
||||
configuration.addChangeListener(new ChangeListener() {
|
||||
configuration.addChangeListener(new StateChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
public void stateChanged(EventObject e) {
|
||||
System.out.println("Configuration changed, calling updateFigure");
|
||||
updateExtras();
|
||||
figure.updateFigure();
|
||||
@ -374,20 +375,21 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
||||
|
||||
|
||||
@Override
|
||||
public void addChangeListener(ChangeListener listener) {
|
||||
public void addChangeListener(EventListener listener) {
|
||||
listeners.add(0, listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChangeListener(ChangeListener listener) {
|
||||
public void removeChangeListener(EventListener listener) {
|
||||
listeners.remove(listener);
|
||||
}
|
||||
|
||||
protected void fireChangeEvent() {
|
||||
ChangeEvent e = new ChangeEvent(this);
|
||||
ChangeListener[] list = listeners.toArray(new ChangeListener[0]);
|
||||
for (ChangeListener l : list) {
|
||||
l.stateChanged(e);
|
||||
EventObject e = new EventObject(this);
|
||||
for (EventListener l : listeners) {
|
||||
if ( l instanceof StateChangeListener ) {
|
||||
((StateChangeListener)l).stateChanged(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -711,7 +713,7 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
||||
*
|
||||
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
|
||||
*/
|
||||
private class FigureTypeAction extends AbstractAction implements ChangeListener {
|
||||
private class FigureTypeAction extends AbstractAction implements StateChangeListener {
|
||||
private final int type;
|
||||
|
||||
public FigureTypeAction(int type) {
|
||||
@ -732,7 +734,7 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
public void stateChanged(EventObject e) {
|
||||
putValue(Action.SELECTED_KEY, figure.getType() == type);
|
||||
}
|
||||
}
|
||||
|
@ -1,16 +1,16 @@
|
||||
package net.sf.openrocket.optimization.rocketoptimization.modifiers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EventListener;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
|
||||
import net.sf.openrocket.document.Simulation;
|
||||
import net.sf.openrocket.optimization.general.OptimizationException;
|
||||
import net.sf.openrocket.optimization.rocketoptimization.SimulationModifier;
|
||||
import net.sf.openrocket.unit.UnitGroup;
|
||||
import net.sf.openrocket.util.MathUtil;
|
||||
import net.sf.openrocket.util.StateChangeListener;
|
||||
|
||||
/**
|
||||
* An abstract implementation of the SimulationModifier interface. An implementation
|
||||
@ -29,7 +29,7 @@ public abstract class AbstractSimulationModifier implements SimulationModifier {
|
||||
private double minValue = 0.0;
|
||||
private double maxValue = 1.0;
|
||||
|
||||
private final List<ChangeListener> listeners = new ArrayList<ChangeListener>();
|
||||
private final List<EventListener> listeners = new ArrayList<EventListener>();
|
||||
|
||||
|
||||
/**
|
||||
@ -148,12 +148,12 @@ public abstract class AbstractSimulationModifier implements SimulationModifier {
|
||||
|
||||
|
||||
@Override
|
||||
public void addChangeListener(ChangeListener listener) {
|
||||
public void addChangeListener(EventListener listener) {
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChangeListener(ChangeListener listener) {
|
||||
public void removeChangeListener(EventListener listener) {
|
||||
listeners.remove(listener);
|
||||
}
|
||||
|
||||
@ -162,10 +162,13 @@ public abstract class AbstractSimulationModifier implements SimulationModifier {
|
||||
* Fire a change event to the listeners.
|
||||
*/
|
||||
protected void fireChangeEvent() {
|
||||
ChangeListener[] array = listeners.toArray(new ChangeListener[0]);
|
||||
ChangeEvent event = new ChangeEvent(this);
|
||||
for (ChangeListener l : array) {
|
||||
l.stateChanged(event);
|
||||
EventObject event = new EventObject(this);
|
||||
// Copy the list before iterating to prevent concurrent modification exceptions.
|
||||
EventListener[] list = listeners.toArray(new EventListener[0]);
|
||||
for (EventListener l : list) {
|
||||
if ( l instanceof StateChangeListener ) {
|
||||
((StateChangeListener)l).stateChanged(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
package net.sf.openrocket.rocketcomponent;
|
||||
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import java.util.EventObject;
|
||||
|
||||
public class ComponentChangeEvent extends ChangeEvent {
|
||||
public class ComponentChangeEvent extends EventObject {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
|
@ -3,20 +3,19 @@ package net.sf.openrocket.rocketcomponent;
|
||||
import java.util.BitSet;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.EventListener;
|
||||
import java.util.EventObject;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import javax.swing.event.EventListenerList;
|
||||
|
||||
import net.sf.openrocket.util.ArrayList;
|
||||
import net.sf.openrocket.util.BugException;
|
||||
import net.sf.openrocket.util.ChangeSource;
|
||||
import net.sf.openrocket.util.Coordinate;
|
||||
import net.sf.openrocket.util.MathUtil;
|
||||
import net.sf.openrocket.util.Monitorable;
|
||||
import net.sf.openrocket.util.StateChangeListener;
|
||||
|
||||
|
||||
/**
|
||||
@ -34,7 +33,7 @@ public class Configuration implements Cloneable, ChangeSource, ComponentChangeLi
|
||||
|
||||
private String motorConfiguration = null;
|
||||
|
||||
private EventListenerList listenerList = new EventListenerList();
|
||||
private List<EventListener> listenerList = new ArrayList<EventListener>();
|
||||
|
||||
|
||||
/* Cached data */
|
||||
@ -199,26 +198,27 @@ public class Configuration implements Cloneable, ChangeSource, ComponentChangeLi
|
||||
//////////////// Listeners ////////////////
|
||||
|
||||
@Override
|
||||
public void addChangeListener(ChangeListener listener) {
|
||||
listenerList.add(ChangeListener.class, listener);
|
||||
public void addChangeListener(EventListener listener) {
|
||||
listenerList.add(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChangeListener(ChangeListener listener) {
|
||||
listenerList.remove(ChangeListener.class, listener);
|
||||
public void removeChangeListener(EventListener listener) {
|
||||
listenerList.remove(listener);
|
||||
}
|
||||
|
||||
protected void fireChangeEvent() {
|
||||
Object[] listeners = listenerList.getListenerList();
|
||||
ChangeEvent e = new ChangeEvent(this);
|
||||
EventObject e = new EventObject(this);
|
||||
|
||||
this.modID++;
|
||||
boundsModID = -1;
|
||||
refLengthModID = -1;
|
||||
|
||||
for (int i = listeners.length - 2; i >= 0; i -= 2) {
|
||||
if (listeners[i] == ChangeListener.class) {
|
||||
((ChangeListener) listeners[i + 1]).stateChanged(e);
|
||||
|
||||
// Copy the list before iterating to prevent concurrent modification exceptions.
|
||||
EventListener[] listeners = listenerList.toArray(new EventListener[0]);
|
||||
for (EventListener l : listeners) {
|
||||
if ( l instanceof StateChangeListener ) {
|
||||
((StateChangeListener)l).stateChanged(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -340,7 +340,7 @@ public class Configuration implements Cloneable, ChangeSource, ComponentChangeLi
|
||||
public Configuration clone() {
|
||||
try {
|
||||
Configuration config = (Configuration) super.clone();
|
||||
config.listenerList = new EventListenerList();
|
||||
config.listenerList = new ArrayList<EventListener>();
|
||||
config.stages = (BitSet) this.stages.clone();
|
||||
config.cachedBounds = new ArrayList<Coordinate>();
|
||||
config.boundsModID = -1;
|
||||
|
@ -2,15 +2,13 @@ package net.sf.openrocket.rocketcomponent;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.EventListener;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.swing.event.ChangeListener;
|
||||
import javax.swing.event.EventListenerList;
|
||||
|
||||
import net.sf.openrocket.gui.main.ExceptionHandler;
|
||||
import net.sf.openrocket.l10n.Translator;
|
||||
import net.sf.openrocket.logging.LogHelper;
|
||||
@ -20,6 +18,7 @@ import net.sf.openrocket.util.ArrayList;
|
||||
import net.sf.openrocket.util.Chars;
|
||||
import net.sf.openrocket.util.Coordinate;
|
||||
import net.sf.openrocket.util.MathUtil;
|
||||
import net.sf.openrocket.util.StateChangeListener;
|
||||
import net.sf.openrocket.util.UniqueID;
|
||||
|
||||
|
||||
@ -43,7 +42,7 @@ public class Rocket extends RocketComponent {
|
||||
/**
|
||||
* List of component change listeners.
|
||||
*/
|
||||
private EventListenerList listenerList = new EventListenerList();
|
||||
private List<EventListener> listenerList = new ArrayList<EventListener>();
|
||||
|
||||
/**
|
||||
* When freezeList != null, events are not dispatched but stored in the list.
|
||||
@ -341,46 +340,48 @@ public class Rocket extends RocketComponent {
|
||||
*/
|
||||
public void resetListeners() {
|
||||
// System.out.println("RESETTING LISTENER LIST of Rocket "+this);
|
||||
listenerList = new EventListenerList();
|
||||
listenerList = new ArrayList<EventListener>();
|
||||
}
|
||||
|
||||
|
||||
public void printListeners() {
|
||||
System.out.println("" + this + " has " + listenerList.getListenerCount() + " listeners:");
|
||||
Object[] list = listenerList.getListenerList();
|
||||
for (int i = 1; i < list.length; i += 2)
|
||||
System.out.println(" " + ((i + 1) / 2) + ": " + list[i]);
|
||||
System.out.println("" + this + " has " + listenerList.size() + " listeners:");
|
||||
int i =0;
|
||||
for( EventListener l : listenerList ) {
|
||||
System.out.println(" " + (i) + ": " + l);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addComponentChangeListener(ComponentChangeListener l) {
|
||||
checkState();
|
||||
listenerList.add(ComponentChangeListener.class, l);
|
||||
listenerList.add(l);
|
||||
log.verbose("Added ComponentChangeListener " + l + ", current number of listeners is " +
|
||||
listenerList.getListenerCount());
|
||||
listenerList.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeComponentChangeListener(ComponentChangeListener l) {
|
||||
listenerList.remove(ComponentChangeListener.class, l);
|
||||
listenerList.remove(l);
|
||||
log.verbose("Removed ComponentChangeListener " + l + ", current number of listeners is " +
|
||||
listenerList.getListenerCount());
|
||||
listenerList.size());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addChangeListener(ChangeListener l) {
|
||||
public void addChangeListener(EventListener l) {
|
||||
checkState();
|
||||
listenerList.add(ChangeListener.class, l);
|
||||
listenerList.add(l);
|
||||
log.verbose("Added ChangeListener " + l + ", current number of listeners is " +
|
||||
listenerList.getListenerCount());
|
||||
listenerList.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChangeListener(ChangeListener l) {
|
||||
listenerList.remove(ChangeListener.class, l);
|
||||
public void removeChangeListener(EventListener l) {
|
||||
listenerList.remove(l);
|
||||
log.verbose("Removed ChangeListener " + l + ", current number of listeners is " +
|
||||
listenerList.getListenerCount());
|
||||
listenerList.size());
|
||||
}
|
||||
|
||||
|
||||
@ -419,12 +420,11 @@ public class Rocket extends RocketComponent {
|
||||
}
|
||||
|
||||
// Notify all listeners
|
||||
Object[] listeners = listenerList.getListenerList();
|
||||
for (int i = listeners.length - 2; i >= 0; i -= 2) {
|
||||
if (listeners[i] == ComponentChangeListener.class) {
|
||||
((ComponentChangeListener) listeners[i + 1]).componentChanged(e);
|
||||
} else if (listeners[i] == ChangeListener.class) {
|
||||
((ChangeListener) listeners[i + 1]).stateChanged(e);
|
||||
for ( EventListener l : listenerList ) {
|
||||
if ( l instanceof ComponentChangeListener ) {
|
||||
((ComponentChangeListener) l ).componentChanged(e);
|
||||
} else if ( l instanceof StateChangeListener ) {
|
||||
((StateChangeListener) l ).stateChanged(e);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
|
@ -1,5 +1,14 @@
|
||||
package net.sf.openrocket.rocketcomponent;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Collection;
|
||||
import java.util.Deque;
|
||||
import java.util.EventListener;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
import net.sf.openrocket.l10n.Translator;
|
||||
import net.sf.openrocket.logging.LogHelper;
|
||||
import net.sf.openrocket.preset.ComponentPreset;
|
||||
@ -14,15 +23,6 @@ import net.sf.openrocket.util.MathUtil;
|
||||
import net.sf.openrocket.util.SafetyMutex;
|
||||
import net.sf.openrocket.util.UniqueID;
|
||||
|
||||
import javax.swing.event.ChangeListener;
|
||||
import java.awt.*;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Collection;
|
||||
import java.util.Deque;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
|
||||
public abstract class RocketComponent implements ChangeSource, Cloneable, Iterable<RocketComponent> {
|
||||
private static final LogHelper log = Application.getLogger();
|
||||
@ -1470,7 +1470,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
|
||||
* @throws IllegalStateException - if the root component is not a <code>Rocket</code>
|
||||
*/
|
||||
@Override
|
||||
public void addChangeListener(ChangeListener l) {
|
||||
public void addChangeListener(EventListener l) {
|
||||
checkState();
|
||||
getRocket().addChangeListener(l);
|
||||
}
|
||||
@ -1484,7 +1484,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab
|
||||
* @param l Listener to remove
|
||||
*/
|
||||
@Override
|
||||
public void removeChangeListener(ChangeListener l) {
|
||||
public void removeChangeListener(EventListener l) {
|
||||
if (this.parent != null) {
|
||||
getRoot().removeChangeListener(l);
|
||||
}
|
||||
|
@ -1,12 +1,11 @@
|
||||
package net.sf.openrocket.simulation;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EventListener;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
|
||||
import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
|
||||
import net.sf.openrocket.masscalc.BasicMassCalculator;
|
||||
import net.sf.openrocket.models.atmosphere.AtmosphericModel;
|
||||
@ -19,6 +18,7 @@ import net.sf.openrocket.util.BugException;
|
||||
import net.sf.openrocket.util.ChangeSource;
|
||||
import net.sf.openrocket.util.GeodeticComputationStrategy;
|
||||
import net.sf.openrocket.util.MathUtil;
|
||||
import net.sf.openrocket.util.StateChangeListener;
|
||||
import net.sf.openrocket.util.Utils;
|
||||
import net.sf.openrocket.util.WorldCoordinate;
|
||||
|
||||
@ -85,7 +85,7 @@ public class SimulationOptions implements ChangeSource, Cloneable {
|
||||
private boolean calculateExtras = true;
|
||||
|
||||
|
||||
private List<ChangeListener> listeners = new ArrayList<ChangeListener>();
|
||||
private List<EventListener> listeners = new ArrayList<EventListener>();
|
||||
|
||||
|
||||
|
||||
@ -386,7 +386,7 @@ public class SimulationOptions implements ChangeSource, Cloneable {
|
||||
public SimulationOptions clone() {
|
||||
try {
|
||||
SimulationOptions copy = (SimulationOptions) super.clone();
|
||||
copy.listeners = new ArrayList<ChangeListener>();
|
||||
copy.listeners = new ArrayList<EventListener>();
|
||||
return copy;
|
||||
} catch (CloneNotSupportedException e) {
|
||||
throw new BugException(e);
|
||||
@ -477,22 +477,25 @@ public class SimulationOptions implements ChangeSource, Cloneable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChangeListener(ChangeListener listener) {
|
||||
public void addChangeListener(EventListener listener) {
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChangeListener(ChangeListener listener) {
|
||||
public void removeChangeListener(EventListener listener) {
|
||||
listeners.remove(listener);
|
||||
}
|
||||
|
||||
private final ChangeEvent event = new ChangeEvent(this);
|
||||
private final EventObject event = new EventObject(this);
|
||||
|
||||
private void fireChangeEvent() {
|
||||
ChangeListener[] array = listeners.toArray(new ChangeListener[0]);
|
||||
|
||||
for (int i = array.length - 1; i >= 0; i--) {
|
||||
array[i].stateChanged(event);
|
||||
// Copy the list before iterating to prevent concurrent modification exceptions.
|
||||
EventListener[] list = listeners.toArray(new EventListener[0]);
|
||||
for (EventListener l : list) {
|
||||
if ( l instanceof StateChangeListener ) {
|
||||
((StateChangeListener)l).stateChanged(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,9 @@
|
||||
package net.sf.openrocket.util;
|
||||
|
||||
import java.util.EventListener;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
|
||||
import net.sf.openrocket.logging.LogHelper;
|
||||
import net.sf.openrocket.startup.Application;
|
||||
|
||||
@ -16,19 +15,19 @@ import net.sf.openrocket.startup.Application;
|
||||
public abstract class AbstractChangeSource implements ChangeSource {
|
||||
private static final LogHelper log = Application.getLogger();
|
||||
|
||||
private final List<ChangeListener> listeners = new ArrayList<ChangeListener>();
|
||||
private final List<EventListener> listeners = new ArrayList<EventListener>();
|
||||
|
||||
private final ChangeEvent event = new ChangeEvent(this);
|
||||
private final EventObject event = new EventObject(this);
|
||||
|
||||
|
||||
@Override
|
||||
public final void addChangeListener(ChangeListener listener) {
|
||||
public final void addChangeListener(EventListener listener) {
|
||||
listeners.add(listener);
|
||||
log.verbose(1, "Adding change listeners, listener count is now " + listeners.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void removeChangeListener(ChangeListener listener) {
|
||||
public final void removeChangeListener(EventListener listener) {
|
||||
listeners.remove(listener);
|
||||
log.verbose(1, "Removing change listeners, listener count is now " + listeners.size());
|
||||
}
|
||||
@ -38,10 +37,12 @@ public abstract class AbstractChangeSource implements ChangeSource {
|
||||
* Fire a change event to all listeners.
|
||||
*/
|
||||
protected void fireChangeEvent() {
|
||||
ChangeListener[] array = listeners.toArray(new ChangeListener[0]);
|
||||
|
||||
for (ChangeListener l : array) {
|
||||
l.stateChanged(event);
|
||||
// Copy the list before iterating to prevent concurrent modification exceptions.
|
||||
EventListener[] list = listeners.toArray(new EventListener[0]);
|
||||
for (EventListener l : list) {
|
||||
if ( l instanceof StateChangeListener ) {
|
||||
((StateChangeListener)l).stateChanged(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package net.sf.openrocket.util;
|
||||
|
||||
import javax.swing.event.ChangeListener;
|
||||
import java.util.EventListener;
|
||||
|
||||
/**
|
||||
* An interface defining an object firing ChangeEvents. Why isn't this included in the Java API??
|
||||
@ -9,7 +9,7 @@ import javax.swing.event.ChangeListener;
|
||||
*/
|
||||
public interface ChangeSource {
|
||||
|
||||
public void addChangeListener(ChangeListener listener);
|
||||
public void removeChangeListener(ChangeListener listener);
|
||||
public void addChangeListener(EventListener listener);
|
||||
public void removeChangeListener(EventListener listener);
|
||||
|
||||
}
|
||||
|
10
src/net/sf/openrocket/util/StateChangeListener.java
Normal file
10
src/net/sf/openrocket/util/StateChangeListener.java
Normal file
@ -0,0 +1,10 @@
|
||||
package net.sf.openrocket.util;
|
||||
|
||||
import java.util.EventListener;
|
||||
import java.util.EventObject;
|
||||
|
||||
public interface StateChangeListener extends EventListener {
|
||||
|
||||
public void stateChanged( EventObject e );
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user