Gui refinement
authorBill Kuker <bkuker@billkuker.com>
Sat, 6 Nov 2010 19:40:26 +0000 (19:40 +0000)
committerBill Kuker <bkuker@billkuker.com>
Sat, 6 Nov 2010 19:40:26 +0000 (19:40 +0000)
gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java
gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorWorkbench.java

index 9bc1a4415f5d3fb526e1c1f76c1f2132598bcb12..22d2fa4037a5ffccbd5348b27593d73abe887c76 100644 (file)
@@ -4,6 +4,8 @@ import java.awt.BorderLayout;
 import java.awt.Dimension;\r
 import java.awt.event.ActionEvent;\r
 import java.awt.event.ActionListener;\r
+import java.awt.event.ComponentEvent;\r
+import java.awt.event.ComponentListener;\r
 import java.awt.event.FocusEvent;\r
 import java.awt.event.FocusListener;\r
 import java.beans.PropertyChangeEvent;\r
@@ -242,12 +244,13 @@ public class MotorEditor extends JTabbedPane implements PropertyChangeListener {
                }\r
        }\r
 \r
-       private class CaseEditor extends JSplitPane {\r
+       private class CaseEditor extends JSplitPane implements ComponentListener {\r
                private static final long serialVersionUID = 1L;\r
 \r
                public CaseEditor(Nozzle n, Chamber c) {\r
                        super(JSplitPane.VERTICAL_SPLIT);\r
                        setName("General Parameters");\r
+                       this.addComponentListener(this);\r
                        \r
                        JPanel parts = new JPanel();\r
                        parts.setLayout(new BoxLayout(parts, BoxLayout.X_AXIS));\r
@@ -325,6 +328,27 @@ public class MotorEditor extends JTabbedPane implements PropertyChangeListener {
                                                .addPropertyChangeListener(MotorEditor.this);\r
                        }\r
                }\r
+\r
+               @Override\r
+               public void componentHidden(ComponentEvent arg0) {\r
+\r
+               }\r
+\r
+               @Override\r
+               public void componentMoved(ComponentEvent arg0) {\r
+\r
+               }\r
+\r
+               @Override\r
+               public void componentResized(ComponentEvent arg0) {\r
+                       setResizeWeight(.5);\r
+                       setDividerLocation(.5);\r
+               }\r
+\r
+               @Override\r
+               public void componentShown(ComponentEvent arg0) {\r
+\r
+               }\r
        }\r
 \r
 \r
index d8065bcca7ccea0e2bd706aa42db6a50f4da3e48..f8e0271e7974798f16000e19f99c381bf3ef517e 100644 (file)
@@ -51,6 +51,7 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
        private JSplitPane split;\r
        private JTree tree;\r
        private JTabbedPane motors;\r
+       private JTabbedPane fuels;\r
        private WorkbenchTreeModel tm;\r
        private MultiBurnChart mb;\r
        private JFrame allBurns;\r
@@ -60,6 +61,7 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
 \r
        private HashMap<Motor, MotorEditor> m2e = new HashMap<Motor, MotorEditor>();\r
 \r
+       private static final int TREE_WIDTH = 200;\r
        \r
        public MotorWorkbench() {\r
                setTitle("MotorSim 1.0 RC1");\r
@@ -76,21 +78,20 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                allBurns.add(mb);\r
 \r
                motors = new JTabbedPane();\r
+               fuels = 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
+               tree.setMinimumSize(new Dimension(TREE_WIDTH, 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 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, \r
+                               tree, motors);\r
+               split.setDividerLocation(TREE_WIDTH);\r
                split.revalidate();\r
                \r
                top.add(split, BorderLayout.CENTER);\r
@@ -330,7 +331,7 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                FuelNode fn = tm.new FuelNode(fp, f);\r
                tm.getFuels().add(fn);\r
                tm.nodeStructureChanged(tm.getFuels());\r
-               motors.addTab(f.getName(), fp);\r
+               fuels.addTab(f.getName(), fp);\r
        }\r
        \r
        private void newFuel(){\r
@@ -340,14 +341,14 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                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
+               fuels.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
+                                       for ( int i = 0; i < fuels.getTabCount(); i++ ){\r
+                                               if ( fuels.getComponent(i) == ed ){\r
+                                                       fuels.setTitleAt(i, ed.getFuel().getName());\r
                                                        tm.nodeChanged(node);\r
                                                }\r
                                        }\r
@@ -382,17 +383,23 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
        }\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
+       public void valueChanged(TreeSelectionEvent e) {\r
+               if (e.getPath().getLastPathComponent() instanceof FuelNode) {\r
+                       FuelNode fen = ((FuelNode) e.getPath().getLastPathComponent());\r
+                       fuels.setSelectedComponent(fen.getUserObject());\r
+                       split.setRightComponent(fuels);\r
+                       split.setDividerLocation(TREE_WIDTH);\r
+                       split.revalidate();\r
                }\r
-               \r
+\r
                Motor m = getMotor(e.getPath());\r
-               \r
-               if ( m == null )\r
+\r
+               if (m == null)\r
                        return;\r
 \r
+               split.setRightComponent(motors);\r
+               split.setDividerLocation(TREE_WIDTH);\r
+               split.revalidate();\r
                motors.setSelectedComponent(m2e.get(m));\r
 \r
                if (e.getPath().getLastPathComponent() instanceof DefaultMutableTreeNode) {\r
@@ -400,7 +407,6 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                                        .getLastPathComponent()).getUserObject();\r
                        m2e.get(m).focusOnObject(o);\r
                }\r
-               \r
 \r
        }\r
 \r