Removed stupid tree
[sw/motorsim] / gui / com / billkuker / rocketry / motorsim / visual / workbench / MotorWorkbench.java
index a0320f5fe688a4513f2bd576085e6e96eb760e45..5e9652f1ed4f4e59a07ce53cddc8059fb8180297 100644 (file)
@@ -1,19 +1,16 @@
 package com.billkuker.rocketry.motorsim.visual.workbench;\r
 \r
 import java.awt.BorderLayout;\r
-import java.awt.Dimension;\r
 import java.awt.FileDialog;\r
 import java.awt.event.ActionEvent;\r
 import java.awt.event.ActionListener;\r
-import java.beans.PropertyChangeEvent;\r
-import java.beans.PropertyChangeListener;\r
 import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.FileOutputStream;\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
@@ -21,58 +18,46 @@ import javax.swing.JMenuItem;
 import javax.swing.JOptionPane;\r
 import javax.swing.JPanel;\r
 import javax.swing.JRadioButtonMenuItem;\r
-import javax.swing.JScrollPane;\r
 import javax.swing.JSeparator;\r
-import javax.swing.JSplitPane;\r
 import javax.swing.JTabbedPane;\r
-import javax.swing.JTree;\r
 import javax.swing.WindowConstants;\r
-import javax.swing.event.TreeSelectionEvent;\r
-import javax.swing.event.TreeSelectionListener;\r
-import javax.swing.tree.DefaultMutableTreeNode;\r
-import javax.swing.tree.TreePath;\r
-import javax.swing.tree.TreeSelectionModel;\r
 \r
 import com.billkuker.rocketry.motorsim.Burn;\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
-import com.billkuker.rocketry.motorsim.visual.workbench.WorkbenchTreeModel.FuelEditNode;\r
-import com.billkuker.rocketry.motorsim.visual.workbench.WorkbenchTreeModel.FuelNode;\r
 \r
-public class MotorWorkbench extends JFrame implements TreeSelectionListener {\r
+import fuel.FuelsEditor;\r
+\r
+public class MotorWorkbench extends JFrame {\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 JTabbedPane motors;\r
-       private WorkbenchTreeModel tm;\r
        private MultiBurnChart mb;\r
        private JFrame allBurns;\r
+       \r
+       private JFrame fuelEditorFrame = new JFrame(){\r
+               private static final long serialVersionUID = 1L;\r
+               {\r
+                       setSize(1024, 768);\r
+                       add(fuelEditor = new FuelsEditor(this));\r
+                       JMenuBar b;\r
+                       setJMenuBar(b = new JMenuBar());\r
+                       b.add(fuelEditor.getMenu());\r
+                       setTitle("MotorSim - Fuel Editor");\r
+               }\r
+       };\r
+       private FuelsEditor fuelEditor;\r
 \r
        private HashMap<MotorEditor, File> e2f = new HashMap<MotorEditor, File>();\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
        public MotorWorkbench() {\r
                setTitle("MotorSim 1.0 RC1");\r
                addMenu();\r
@@ -88,35 +73,11 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                allBurns.add(mb);\r
 \r
                motors = new JTabbedPane();\r
-\r
-               tree = new JTree(tm = new WorkbenchTreeModel());\r
-               tree.setCellRenderer(new WorkbenchTreeCellRenderer());\r
-               tree.getSelectionModel().setSelectionMode(\r
-                               TreeSelectionModel.SINGLE_TREE_SELECTION);\r
-               tree.setMinimumSize(new Dimension(200, 100));\r
-\r
-               // Listen for when the selection changes.\r
-               tree.addTreeSelectionListener(this);\r
-\r
-               split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new JScrollPane(\r
-                               tree), motors);\r
-               split.setDividerLocation(200);\r
-               split.setResizeWeight(0);\r
-               split.resetToPreferredSizes();\r
-               split.revalidate();\r
                \r
-               top.add(split, BorderLayout.CENTER);\r
+               top.add(motors, 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
@@ -141,8 +102,7 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
 \r
                                                                        @Override\r
                                                                        public void actionPerformed(ActionEvent arg0) {\r
-                                                                               addMotor(MotorEditor.defaultMotor(),\r
-                                                                                               null);\r
+                                                                               addMotor(MotorEditor.defaultMotor(), null);\r
                                                                        }\r
                                                                });\r
 \r
@@ -166,8 +126,7 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                                                                                        }\r
                                                                                        try {\r
                                                                                                Motor m = MotorIO\r
-                                                                                                               .readMotor(file);\r
-                                                                                               addFuel(m.getFuel());\r
+                                                                                                               .readMotor(new FileInputStream(file));\r
                                                                                                addMotor(m, file);\r
                                                                                                \r
                                                                                        } catch (Exception e) {\r
@@ -191,7 +150,6 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                                                                        public void actionPerformed(ActionEvent ev) {\r
                                                                                MotorEditor e = (MotorEditor) motors\r
                                                                                                .getSelectedComponent();\r
-                                                                               tm.removeMotor(e.getMotor());\r
                                                                                motors.remove(e);\r
                                                                                f2e.remove(e2f.get(e));\r
                                                                                e2f.remove(e);\r
@@ -251,22 +209,6 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                                                });\r
                                                \r
 \r
-                                               add(new JSeparator());\r
-                                               add(new JMenuItem("New Fuel") {\r
-                                                       private static final long serialVersionUID = 1L;\r
-                                                       {\r
-                                                               addActionListener(new ActionListener() {\r
-                                                                       @Override\r
-                                                                       public void actionPerformed(ActionEvent arg0) {\r
-                                                                               newFuel();\r
-                                                                       }\r
-                                                               });\r
-\r
-                                                       }\r
-                                               });\r
-                                               add(new JMenuItem("Save Fuel") {\r
-                                                       private static final long serialVersionUID = 1L;\r
-                                               });\r
                                                add(new JSeparator());\r
                                                add(new JMenuItem("Export .ENG"){\r
                                                        private static final long serialVersionUID = 1L;\r
@@ -327,7 +269,7 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                                add(new JMenu("View") {\r
                                        private static final long serialVersionUID = 1L;\r
                                        {\r
-                                               add(new JMenuItem("Show All Motors Graph") {\r
+                                               add(new JMenuItem("All Motors Graph") {\r
                                                        private static final long serialVersionUID = 1L;\r
                                                        {\r
                                                                addActionListener(new ActionListener() {\r
@@ -339,6 +281,18 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                                                                });\r
                                                        }\r
                                                });\r
+                                               add(new JMenuItem("Fuel Editor") {\r
+                                                       private static final long serialVersionUID = 1L;\r
+                                                       {\r
+                                                               addActionListener(new ActionListener() {\r
+                                                                       @Override\r
+                                                                       public void actionPerformed(ActionEvent arg0) {\r
+                                                                               fuelEditorFrame.setVisible(true);\r
+                                                                               fuelEditorFrame.toFront();\r
+                                                                       }\r
+                                                               });\r
+                                                       }\r
+                                               });\r
                                        }\r
                                });\r
                        }\r
@@ -346,47 +300,23 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
        }\r
        \r
        private void addFuel(Fuel f){\r
-               \r
-               fuels.addElement(f);\r
-               FuelPanel fp = new FuelPanel(f);\r
-               FuelNode fn = tm.new FuelNode(fp, f);\r
-               tm.getFuels().add(fn);\r
-               tm.nodeStructureChanged(tm.getFuels());\r
-               motors.addTab(f.getName(), fp);\r
+               for ( MotorEditor e : m2e.values() )\r
+                       e.addFuel(f);\r
        }\r
        \r
-       private void newFuel(){\r
-               final SRFuelEditor ed = new SRFuelEditor();\r
-               fuels.addElement(ed.getFuel());\r
-               final FuelEditNode node = tm.new FuelEditNode(ed);\r
-               tm.getFuels().add(node);\r
-               tm.nodeStructureChanged(tm.getFuels());\r
-               motors.addTab(ed.getFuel().getName(), ed);\r
-               ed.getFuel().addPropertyChangeListener(new PropertyChangeListener(){\r
-                       @Override\r
-                       public void propertyChange(PropertyChangeEvent evt) {\r
-                               if ( evt.getPropertyName().equals("Name")){\r
-                                       for ( int i = 0; i < motors.getTabCount(); i++ ){\r
-                                               if ( motors.getComponent(i) == ed ){\r
-                                                       motors.setTitleAt(i, ed.getFuel().getName());\r
-                                                       tm.nodeChanged(node);\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }});\r
-       }\r
 \r
        private void save(Motor m, File f) {\r
                try {\r
-                       MotorIO.writeMotor(m, f);\r
+                       FileOutputStream fo;\r
+                       MotorIO.writeMotor(m, fo = new FileOutputStream(f));\r
+                       fo.close();\r
                } catch (Throwable t) {\r
                        JOptionPane.showMessageDialog(MotorWorkbench.this, t.getMessage());\r
                }\r
        }\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
@@ -400,35 +330,5 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                motors.addTab(title, e);\r
        }\r
 \r
-       @Override\r
-       public void valueChanged(TreeSelectionEvent e) {                \r
-               if ( e.getPath().getLastPathComponent() instanceof FuelNode ){\r
-                       FuelNode fen = ((FuelNode)e.getPath().getLastPathComponent());\r
-                               motors.setSelectedComponent(fen.getUserObject());                       \r
-               }\r
-               \r
-               Motor m = getMotor(e.getPath());\r
-               \r
-               if ( m == null )\r
-                       return;\r
-\r
-               motors.setSelectedComponent(m2e.get(m));\r
-\r
-               if (e.getPath().getLastPathComponent() instanceof DefaultMutableTreeNode) {\r
-                       Object o = ((DefaultMutableTreeNode) e.getPath()\r
-                                       .getLastPathComponent()).getUserObject();\r
-                       m2e.get(m).focusOnObject(o);\r
-               }\r
-               \r
-\r
-       }\r
-\r
-       private Motor getMotor(TreePath p) {\r
-               if (p.getLastPathComponent() instanceof WorkbenchTreeModel.MotorNode) {\r
-                       return ((WorkbenchTreeModel.MotorNode) p.getLastPathComponent())\r
-                                       .getUserObject();\r
-               } else if (p.getPath().length > 1)\r
-                       return getMotor(p.getParentPath());\r
-               return null;\r
-       }\r
+       \r
 }\r