Made chooser remember old grain
authorBill Kuker <bkuker@billkuker.com>
Tue, 8 Sep 2009 21:36:03 +0000 (21:36 +0000)
committerBill Kuker <bkuker@billkuker.com>
Tue, 8 Sep 2009 21:36:03 +0000 (21:36 +0000)
src/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java

index b4cdff10288bba8a2371e5844ba39b932d677be0..ec64bb2e2208b12bf608bb4813299bc7c8412637 100644 (file)
@@ -9,6 +9,8 @@ import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;\r
 import java.beans.PropertyVetoException;\r
 import java.io.IOException;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
 import java.util.Vector;\r
 \r
 import javax.measure.quantity.Pressure;\r
@@ -87,9 +89,12 @@ public class MotorEditor extends JTabbedPane implements PropertyChangeListener {
        private abstract class Chooser<T> extends JPanel {\r
                private static final long serialVersionUID = 1L;\r
                private Class<? extends T>[] types;\r
+               private Map<Class<? extends T>, T> old = new HashMap<Class<? extends T>, T>();\r
 \r
-               public Chooser(Class<? extends T>... ts) {\r
+               public Chooser(T initial, Class<? extends T>... ts) {\r
                        types = ts;\r
+                       if ( initial != null )\r
+                               old.put((Class<? extends T>)initial.getClass(), initial);\r
                        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));\r
                        for (final Class<? extends T> c : types) {\r
                                JButton b = new JButton(c.getSimpleName());\r
@@ -97,7 +102,13 @@ public class MotorEditor extends JTabbedPane implements PropertyChangeListener {
                                b.addActionListener(new ActionListener() {\r
                                        public void actionPerformed(ActionEvent e) {\r
                                                try {\r
-                                                       choiceMade(c.newInstance());\r
+                                                       T val = old.get(c);\r
+                                                       if ( val == null ){\r
+                                                               System.err.println("CREATED NEW =========================");\r
+                                                               val = c.newInstance();\r
+                                                               old.put(c, val);\r
+                                                       }\r
+                                                       choiceMade(val);\r
                                                } catch (InstantiationException e1) {\r
                                                        e1.printStackTrace();\r
                                                } catch (IllegalAccessException e1) {\r
@@ -184,7 +195,7 @@ public class MotorEditor extends JTabbedPane implements PropertyChangeListener {
                                p.add(new Editor(g));\r
                                for (Grain gg : ((Grain.Composite) g).getGrains()) {\r
                                        final int grainEditorIndex = p.getComponentCount() + 1;\r
-                                       p.add(new Chooser<Grain>(grainTypes) {\r
+                                       p.add(new Chooser<Grain>(gg, grainTypes) {\r
                                                private static final long serialVersionUID = 1L;\r
 \r
                                                @Override\r
@@ -237,7 +248,7 @@ public class MotorEditor extends JTabbedPane implements PropertyChangeListener {
                        final JPanel p = new JPanel();\r
                        p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));\r
 \r
-                       p.add(new Chooser<Fuel>(fuelTypes) {\r
+                       p.add(new Chooser<Fuel>(null, fuelTypes) {\r
                                private static final long serialVersionUID = 1L;\r
 \r
                                @Override\r