import java.beans.PropertyChangeListener;\r
import java.beans.PropertyVetoException;\r
import java.io.IOException;\r
+import java.util.Collection;\r
import java.util.HashMap;\r
import java.util.List;\r
import java.util.Map;\r
import javax.measure.unit.SI;\r
import javax.swing.Box;\r
import javax.swing.BoxLayout;\r
-import javax.swing.ComboBoxModel;\r
+import javax.swing.DefaultComboBoxModel;\r
import javax.swing.JButton;\r
import javax.swing.JComboBox;\r
import javax.swing.JFrame;\r
Burn burn;\r
\r
private Vector<BurnWatcher> burnWatchers = new Vector<BurnWatcher>();\r
- private ComboBoxModel availableFuels;\r
+ private DefaultComboBoxModel availableFuels = new DefaultComboBoxModel();\r
+ \r
+ public void addFuel(Fuel f){\r
+ availableFuels.addElement(f);\r
+ }\r
\r
//private static final int XML_TAB = 0;\r
private static final int CASING_TAB = 0;\r
\r
}\r
\r
- public MotorEditor(Motor m, ComboBoxModel fuels) {\r
+ public MotorEditor(Motor m, Collection<Fuel> fuels) {\r
super(JTabbedPane.BOTTOM);\r
- this.availableFuels = fuels;\r
+ for ( Fuel f : fuels )\r
+ addFuel(f);\r
text.setName("XML");\r
text.setEditable(false);\r
//add(text, XML_TAB);\r
import java.beans.PropertyChangeListener;\r
import java.io.File;\r
import java.util.HashMap;\r
-import java.util.List;\r
import java.util.Vector;\r
\r
import javax.swing.ButtonGroup;\r
-import javax.swing.DefaultComboBoxModel;\r
import javax.swing.JFrame;\r
import javax.swing.JMenu;\r
import javax.swing.JMenuBar;\r
import com.billkuker.rocketry.motorsim.Fuel;\r
import com.billkuker.rocketry.motorsim.Motor;\r
import com.billkuker.rocketry.motorsim.RocketScience.UnitPreference;\r
-import com.billkuker.rocketry.motorsim.fuel.KNDX;\r
-import com.billkuker.rocketry.motorsim.fuel.KNER;\r
-import com.billkuker.rocketry.motorsim.fuel.KNSB;\r
-import com.billkuker.rocketry.motorsim.fuel.KNSU;\r
+import com.billkuker.rocketry.motorsim.fuel.FuelResolver;\r
import com.billkuker.rocketry.motorsim.io.ENGExporter;\r
import com.billkuker.rocketry.motorsim.io.MotorIO;\r
import com.billkuker.rocketry.motorsim.visual.FuelPanel;\r
public class MotorWorkbench extends JFrame implements TreeSelectionListener {\r
private static final long serialVersionUID = 1L;\r
\r
- private List<Class<? extends Fuel>> fuelTypes = new Vector<Class<? extends Fuel>>();\r
- {\r
- fuelTypes.add(KNSB.class);\r
- fuelTypes.add(KNSU.class);\r
- fuelTypes.add(KNER.class);\r
- fuelTypes.add(KNDX.class);\r
- }\r
- \r
private JPanel top;\r
private JSplitPane split;\r
private JTree tree;\r
private HashMap<File, MotorEditor> f2e = new HashMap<File, MotorEditor>();\r
\r
private HashMap<Motor, MotorEditor> m2e = new HashMap<Motor, MotorEditor>();\r
- \r
- private DefaultComboBoxModel fuels = new DefaultComboBoxModel();\r
+\r
\r
public MotorWorkbench() {\r
setTitle("MotorSim 1.0 RC1");\r
\r
top.add(split, BorderLayout.CENTER);\r
\r
- for ( Class<? extends Fuel> f : fuelTypes){\r
- try {\r
- addFuel(f.newInstance());\r
- } catch (InstantiationException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (IllegalAccessException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- }\r
+ for ( Fuel f : FuelResolver.getFuelMap().values() ){\r
+ addFuel(f);\r
}\r
\r
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);\r
}\r
\r
private void addFuel(Fuel f){\r
- \r
- fuels.addElement(f);\r
+ for ( MotorEditor e : m2e.values() )\r
+ e.addFuel(f);\r
FuelPanel fp = new FuelPanel(f);\r
FuelNode fn = tm.new FuelNode(fp, f);\r
tm.getFuels().add(fn);\r
\r
private void newFuel(){\r
final SRFuelEditor ed = new SRFuelEditor();\r
- fuels.addElement(ed.getFuel());\r
+ for ( MotorEditor e : m2e.values() )\r
+ e.addFuel(ed.getFuel());\r
final FuelEditNode node = tm.new FuelEditNode(ed);\r
tm.getFuels().add(node);\r
tm.nodeStructureChanged(tm.getFuels());\r
\r
public void addMotor(Motor m, File f) {\r
tm.addMotor(m);\r
- MotorEditor e = new MotorEditor(m, fuels);\r
+ MotorEditor e = new MotorEditor(m, FuelResolver.getFuelMap().values());\r
e.addBurnWatcher(mb);\r
String title;\r
if (f == null) {\r