]> git.gag.com Git - debian/openrocket/commitdiff
Fixed numerous problems introduced in previous commit which reduced dependency on...
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Wed, 7 Dec 2011 03:27:39 +0000 (03:27 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Wed, 7 Dec 2011 03:27:39 +0000 (03:27 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@216 180e2498-e6e9-4542-8430-84ac67f01cd8

src/net/sf/openrocket/gui/adaptors/BooleanModel.java
src/net/sf/openrocket/gui/adaptors/DoubleModel.java
src/net/sf/openrocket/gui/adaptors/EnumModel.java
src/net/sf/openrocket/gui/adaptors/IntegerModel.java
src/net/sf/openrocket/gui/components/UnitSelector.java
src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java
src/net/sf/openrocket/rocketcomponent/Rocket.java

index 4e877affe84c8454cfc68da3b6cc17a6f9102f97..a2f95ed3c45ceffe48cc9c1e771f2a9f4c381edb 100644 (file)
@@ -6,11 +6,10 @@ import java.beans.PropertyChangeListener;
 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;
@@ -20,6 +19,7 @@ import net.sf.openrocket.util.Invalidatable;
 import net.sf.openrocket.util.Invalidator;
 import net.sf.openrocket.util.MemoryManagement;
 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>
  */
-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;
@@ -232,7 +232,7 @@ public class BooleanModel extends AbstractAction implements ChangeListener, Inva
        }
        
        @Override
-       public void stateChanged(ChangeEvent event) {
+       public void stateChanged(EventObject event) {
                checkState(true);
                
                if (firing > 0) {
index 3b5174593300acabe87537def8497afd7ae83855..820a54a66c4508d3f9f67ac3afd79c50106bb42c 100644 (file)
@@ -14,6 +14,7 @@ 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;
@@ -891,12 +892,15 @@ public class DoubleModel implements StateChangeListener, ChangeSource, Invalidat
                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--;
index 20c459e78b61ec6fc1fa939f536b519332811249..a6757a3805372583b605c76a8369cd486137c42a 100644 (file)
@@ -1,16 +1,17 @@
 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;
@@ -114,7 +115,7 @@ public class EnumModel<T extends Enum<T>> extends AbstractListModel
 
        @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;
index 8cf103652359ad4ab83bd925c7581b8e172bfc60..e948918af86246bc02c60015bdf2145226eea4f9 100644 (file)
@@ -3,6 +3,8 @@ package net.sf.openrocket.gui.adaptors;
 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;
@@ -14,9 +16,10 @@ import net.sf.openrocket.startup.Application;
 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();
        
        
@@ -95,7 +98,7 @@ public class IntegerModel implements ChangeListener {
        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;
@@ -184,7 +187,7 @@ public class IntegerModel implements ChangeListener {
         * 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();
@@ -218,11 +221,17 @@ public class IntegerModel implements ChangeListener {
        
        
        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--;
        }
        
@@ -230,7 +239,8 @@ public class IntegerModel implements ChangeListener {
         * 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;
index 498d5f8d83751cb25a27a4d7df26c258f1d0816e..1bdef68e5d30578d58fd4cd20aa39d0032b1374b 100644 (file)
@@ -11,6 +11,7 @@ import java.awt.event.ItemListener;
 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;
@@ -20,12 +21,11 @@ import javax.swing.border.Border;
 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;
 
 
 /**
@@ -36,7 +36,7 @@ import net.sf.openrocket.unit.UnitGroup;
  * @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;
@@ -235,7 +235,8 @@ public class UnitSelector extends StyledLabel implements ChangeListener, MouseLi
        /**
         * Update the component when the DoubleModel changes.
         */
-       public void stateChanged(ChangeEvent e) {
+       @Override
+       public void stateChanged(EventObject e) {
                updateText();
        }
 
index a1c6993814fc9eee9e7148cb12bec9414a925e46..b7c0afeaa5bf3ac5d73901a4ba155dbf08939ef0 100644 (file)
@@ -13,6 +13,7 @@ import java.awt.event.ActionListener;
 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;
@@ -23,8 +24,6 @@ import javax.swing.JPanel;
 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;
@@ -43,6 +42,7 @@ import net.sf.openrocket.startup.Application;
 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 {
@@ -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 {
                private Clusterable component;
                private ClusterConfiguration config;
@@ -285,7 +285,7 @@ class ClusterSelectionPanel extends JPanel {
                
                
                @Override
-               public void stateChanged(ChangeEvent e) {
+               public void stateChanged(EventObject e) {
                        repaint();
                }
                
index d9dac38adecd313c961ff16242a29ae988d22561..62d2c08040b36a1fdace813bbeb2156e1c121b27 100644 (file)
@@ -420,7 +420,9 @@ public class Rocket extends RocketComponent {
                        }
                        
                        // 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 ) {