From bf2577604aae9b416b467371325ae37f2485320b Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Tue, 8 Sep 2009 21:36:03 +0000 Subject: [PATCH] Made chooser remember old grain --- .../visual/workbench/MotorEditor.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java b/src/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java index b4cdff1..ec64bb2 100644 --- a/src/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java +++ b/src/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java @@ -9,6 +9,8 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyVetoException; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import java.util.Vector; import javax.measure.quantity.Pressure; @@ -87,9 +89,12 @@ public class MotorEditor extends JTabbedPane implements PropertyChangeListener { private abstract class Chooser extends JPanel { private static final long serialVersionUID = 1L; private Class[] types; + private Map, T> old = new HashMap, T>(); - public Chooser(Class... ts) { + public Chooser(T initial, Class... ts) { types = ts; + if ( initial != null ) + old.put((Class)initial.getClass(), initial); setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); for (final Class c : types) { JButton b = new JButton(c.getSimpleName()); @@ -97,7 +102,13 @@ public class MotorEditor extends JTabbedPane implements PropertyChangeListener { b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { - choiceMade(c.newInstance()); + T val = old.get(c); + if ( val == null ){ + System.err.println("CREATED NEW ========================="); + val = c.newInstance(); + old.put(c, val); + } + choiceMade(val); } catch (InstantiationException e1) { e1.printStackTrace(); } catch (IllegalAccessException e1) { @@ -184,7 +195,7 @@ public class MotorEditor extends JTabbedPane implements PropertyChangeListener { p.add(new Editor(g)); for (Grain gg : ((Grain.Composite) g).getGrains()) { final int grainEditorIndex = p.getComponentCount() + 1; - p.add(new Chooser(grainTypes) { + p.add(new Chooser(gg, grainTypes) { private static final long serialVersionUID = 1L; @Override @@ -237,7 +248,7 @@ public class MotorEditor extends JTabbedPane implements PropertyChangeListener { final JPanel p = new JPanel(); p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); - p.add(new Chooser(fuelTypes) { + p.add(new Chooser(null, fuelTypes) { private static final long serialVersionUID = 1L; @Override -- 2.47.2