Fixed numerous problems introduced in previous commit which reduced dependency on swing classes ChangeListener and ChangeEvent.

This commit is contained in:
Kevin Ruland 2011-12-07 03:27:39 +00:00
parent 713bd6bab8
commit bf609aa353
7 changed files with 43 additions and 25 deletions

View File

@ -6,11 +6,10 @@ import java.beans.PropertyChangeListener;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EventObject;
import java.util.List; import java.util.List;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.logging.LogHelper;
import net.sf.openrocket.startup.Application; import net.sf.openrocket.startup.Application;
@ -20,6 +19,7 @@ import net.sf.openrocket.util.Invalidatable;
import net.sf.openrocket.util.Invalidator; import net.sf.openrocket.util.Invalidator;
import net.sf.openrocket.util.MemoryManagement; import net.sf.openrocket.util.MemoryManagement;
import net.sf.openrocket.util.Reflection; import net.sf.openrocket.util.Reflection;
import net.sf.openrocket.util.StateChangeListener;
/** /**
@ -37,7 +37,7 @@ import net.sf.openrocket.util.Reflection;
* *
* @author Sampo Niskanen <sampo.niskanen@iki.fi> * @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 static final LogHelper log = Application.getLogger();
private final ChangeSource source; private final ChangeSource source;
@ -232,7 +232,7 @@ public class BooleanModel extends AbstractAction implements ChangeListener, Inva
} }
@Override @Override
public void stateChanged(ChangeEvent event) { public void stateChanged(EventObject event) {
checkState(true); checkState(true);
if (firing > 0) { if (firing > 0) {

View File

@ -14,6 +14,7 @@ import javax.swing.Action;
import javax.swing.BoundedRangeModel; import javax.swing.BoundedRangeModel;
import javax.swing.SpinnerModel; import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel; import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.logging.LogHelper;
@ -891,12 +892,15 @@ public class DoubleModel implements StateChangeListener, ChangeSource, Invalidat
checkState(true); checkState(true);
EventObject event = new EventObject(this); EventObject event = new EventObject(this);
ChangeEvent cevent = new ChangeEvent(this);
firing++; firing++;
// Copy the list before iterating to prevent concurrent modification exceptions. // Copy the list before iterating to prevent concurrent modification exceptions.
EventListener[] ls = listeners.toArray(new EventListener[0]); EventListener[] ls = listeners.toArray(new EventListener[0]);
for (EventListener l : ls) { for (EventListener l : ls) {
if ( l instanceof StateChangeListener ) { if ( l instanceof StateChangeListener ) {
((StateChangeListener)l).stateChanged(event); ((StateChangeListener)l).stateChanged(event);
} else if ( l instanceof ChangeListener ) {
((ChangeListener)l).stateChanged(cevent);
} }
} }
firing--; firing--;

View File

@ -1,16 +1,17 @@
package net.sf.openrocket.gui.adaptors; package net.sf.openrocket.gui.adaptors;
import java.util.EventObject;
import javax.swing.AbstractListModel; import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel; 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.ChangeSource;
import net.sf.openrocket.util.Reflection; import net.sf.openrocket.util.Reflection;
import net.sf.openrocket.util.StateChangeListener;
public class EnumModel<T extends Enum<T>> extends AbstractListModel public class EnumModel<T extends Enum<T>> extends AbstractListModel
implements ComboBoxModel, ChangeListener { implements ComboBoxModel, StateChangeListener {
private final ChangeSource source; private final ChangeSource source;
private final String valueName; private final String valueName;
@ -114,7 +115,7 @@ public class EnumModel<T extends Enum<T>> extends AbstractListModel
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(EventObject e) {
Enum<T> value = (Enum<T>) getMethod.invoke(source); Enum<T> value = (Enum<T>) getMethod.invoke(source);
if (value != currentValue) { if (value != currentValue) {
currentValue = value; currentValue = value;

View File

@ -3,6 +3,8 @@ package net.sf.openrocket.gui.adaptors;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EventListener;
import java.util.EventObject;
import javax.swing.SpinnerModel; import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel; import javax.swing.SpinnerNumberModel;
@ -14,9 +16,10 @@ import net.sf.openrocket.startup.Application;
import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.BugException;
import net.sf.openrocket.util.ChangeSource; import net.sf.openrocket.util.ChangeSource;
import net.sf.openrocket.util.Reflection; 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 static final LogHelper log = Application.getLogger();
@ -95,7 +98,7 @@ public class IntegerModel implements ChangeListener {
private final Method getMethod; private final Method getMethod;
private final Method setMethod; 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 minValue;
private final int maxValue; private final int maxValue;
@ -184,7 +187,7 @@ public class IntegerModel implements ChangeListener {
* is the first listener. * is the first listener.
* @param l Listener to add. * @param l Listener to add.
*/ */
public void addChangeListener(ChangeListener l) { public void addChangeListener(EventListener l) {
if (listeners.isEmpty()) { if (listeners.isEmpty()) {
source.addChangeListener(this); source.addChangeListener(this);
lastValue = getValue(); lastValue = getValue();
@ -218,11 +221,17 @@ public class IntegerModel implements ChangeListener {
public void fireStateChanged() { public void fireStateChanged() {
Object[] l = listeners.toArray(); EventListener[] list = listeners.toArray(new EventListener[0] );
ChangeEvent event = new ChangeEvent(this); EventObject event = new EventObject(this);
ChangeEvent cevent = new ChangeEvent(this);
firing++; firing++;
for (int i = 0; i < l.length; i++) for( EventListener l : list ) {
((ChangeListener) l[i]).stateChanged(event); if ( l instanceof ChangeListener) {
((ChangeListener)l).stateChanged(cevent);
} else if ( l instanceof StateChangeListener ) {
((StateChangeListener)l).stateChanged(event);
}
}
firing--; firing--;
} }
@ -230,7 +239,8 @@ public class IntegerModel implements ChangeListener {
* Called when the source changes. Checks whether the modeled value has changed, and if * 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. * 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(); int v = getValue();
if (lastValue == v) if (lastValue == v)
return; return;

View File

@ -11,6 +11,7 @@ import java.awt.event.ItemListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EventObject;
import java.util.List; import java.util.List;
import javax.swing.Action; import javax.swing.Action;
@ -20,12 +21,11 @@ import javax.swing.border.Border;
import javax.swing.border.CompoundBorder; import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder; 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.gui.adaptors.DoubleModel;
import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.Unit;
import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.unit.UnitGroup;
import net.sf.openrocket.util.StateChangeListener;
/** /**
@ -36,7 +36,7 @@ import net.sf.openrocket.unit.UnitGroup;
* @author Sampo Niskanen <sampo.niskanen@iki.fi> * @author Sampo Niskanen <sampo.niskanen@iki.fi>
*/ */
public class UnitSelector extends StyledLabel implements ChangeListener, MouseListener, public class UnitSelector extends StyledLabel implements StateChangeListener, MouseListener,
ItemSelectable { ItemSelectable {
private DoubleModel model; private DoubleModel model;
@ -235,7 +235,8 @@ public class UnitSelector extends StyledLabel implements ChangeListener, MouseLi
/** /**
* Update the component when the DoubleModel changes. * Update the component when the DoubleModel changes.
*/ */
public void stateChanged(ChangeEvent e) { @Override
public void stateChanged(EventObject e) {
updateText(); updateText();
} }

View File

@ -13,6 +13,7 @@ import java.awt.event.ActionListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
import java.awt.geom.Ellipse2D; import java.awt.geom.Ellipse2D;
import java.util.EventObject;
import java.util.List; import java.util.List;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
@ -23,8 +24,6 @@ import javax.swing.JPanel;
import javax.swing.JSpinner; import javax.swing.JSpinner;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.border.BevelBorder; import javax.swing.border.BevelBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.document.OpenRocketDocument;
@ -43,6 +42,7 @@ import net.sf.openrocket.startup.Application;
import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.unit.UnitGroup;
import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.BugException;
import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.Coordinate;
import net.sf.openrocket.util.StateChangeListener;
public class InnerTubeConfig extends ThicknessRingComponentConfig { public class InnerTubeConfig extends ThicknessRingComponentConfig {
@ -228,7 +228,7 @@ class ClusterSelectionPanel extends JPanel {
} }
private class ClusterButton extends JPanel implements ChangeListener, MouseListener, private class ClusterButton extends JPanel implements StateChangeListener, MouseListener,
Resettable { Resettable {
private Clusterable component; private Clusterable component;
private ClusterConfiguration config; private ClusterConfiguration config;
@ -285,7 +285,7 @@ class ClusterSelectionPanel extends JPanel {
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(EventObject e) {
repaint(); repaint();
} }

View File

@ -420,7 +420,9 @@ public class Rocket extends RocketComponent {
} }
// Notify all listeners // 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 ) { if ( l instanceof ComponentChangeListener ) {
((ComponentChangeListener) l ).componentChanged(e); ((ComponentChangeListener) l ).componentChanged(e);
} else if ( l instanceof StateChangeListener ) { } else if ( l instanceof StateChangeListener ) {