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
}\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
.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
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
\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
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
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
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
}\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
.getLastPathComponent()).getUserObject();\r
m2e.get(m).focusOnObject(o);\r
}\r
- \r
\r
}\r
\r