Version->BETA1
[sw/motorsim] / gui / com / billkuker / rocketry / motorsim / visual / workbench / MotorWorkbench.java
1 package com.billkuker.rocketry.motorsim.visual.workbench;\r
2 \r
3 import java.awt.event.ActionEvent;\r
4 import java.awt.event.ActionListener;\r
5 import java.awt.event.WindowEvent;\r
6 import java.awt.event.WindowListener;\r
7 \r
8 import javax.swing.ButtonGroup;\r
9 import javax.swing.JFrame;\r
10 import javax.swing.JMenu;\r
11 import javax.swing.JMenuBar;\r
12 import javax.swing.JMenuItem;\r
13 import javax.swing.JOptionPane;\r
14 import javax.swing.JRadioButtonMenuItem;\r
15 import javax.swing.JSeparator;\r
16 \r
17 import com.billkuker.rocketry.motorsim.RocketScience.UnitPreference;\r
18 import com.billkuker.rocketry.motorsim.fuel.FuelsEditor;\r
19 import com.billkuker.rocketry.motorsim.visual.RememberJFrame;\r
20 \r
21 \r
22 public class MotorWorkbench extends RememberJFrame {\r
23         public static final String version = "2.0 BETA1";\r
24         public static final String name = "MotorSim " + version;\r
25         private static final long serialVersionUID = 1L;\r
26         \r
27         private MultiMotorThrustChart mb;\r
28         private JFrame allBurns;\r
29         \r
30         private JFrame fuelEditorFrame = new RememberJFrame(800,600){\r
31                 private static final long serialVersionUID = 1L;\r
32                 {\r
33                         setSize(800, 600);\r
34                         add(fuelEditor = new FuelsEditor(this));\r
35                         JMenuBar b;\r
36                         setJMenuBar(b = new JMenuBar());\r
37                         b.add(fuelEditor.getMenu());\r
38                         setTitle(name + " - Fuel Editor");\r
39                 }\r
40         };\r
41         private FuelsEditor fuelEditor;\r
42         \r
43         private MotorsEditor motorsEditor;\r
44 \r
45         \r
46         public MotorWorkbench() {\r
47                 super(1024, 768);\r
48                 setTitle(name);\r
49 \r
50                 motorsEditor = new MotorsEditor(this);\r
51                 setContentPane(motorsEditor);\r
52                 \r
53                 addMenu();\r
54                 \r
55                 mb = new MultiMotorThrustChart();\r
56                 allBurns = new JFrame();\r
57                 allBurns.setTitle("All Burns");\r
58                 allBurns.setSize(800, 600);\r
59                 allBurns.add(mb);\r
60 \r
61                 setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);\r
62 \r
63                 addWindowListener(new WindowListener() {\r
64                         \r
65                         @Override\r
66                         public void windowOpened(WindowEvent e) {}\r
67                         \r
68                         @Override\r
69                         public void windowIconified(WindowEvent e) {}\r
70                         \r
71                         @Override\r
72                         public void windowDeiconified(WindowEvent e) {}\r
73                         \r
74                         @Override\r
75                         public void windowDeactivated(WindowEvent e) {}\r
76                         \r
77                         @Override\r
78                         public void windowClosing(WindowEvent e) {\r
79                                 maybeQuit();\r
80                         }\r
81                         \r
82                         @Override\r
83                         public void windowClosed(WindowEvent e) {}\r
84                         \r
85                         @Override\r
86                         public void windowActivated(WindowEvent e) {}\r
87                 });\r
88 \r
89         }\r
90         \r
91         private void maybeQuit(){\r
92                 if (motorsEditor.hasDirty()) {\r
93                         int response = JOptionPane\r
94                                         .showConfirmDialog(\r
95                                                         MotorWorkbench.this,\r
96                                                         "There are unsaved Motors.\nExit Anyway?",\r
97                                                         "Confirm",\r
98                                                         JOptionPane.YES_NO_OPTION);\r
99                         if (response == JOptionPane.NO_OPTION) {\r
100                                 return;\r
101                         }\r
102                 }\r
103                 if (fuelEditor.hasDirty()) {\r
104                         int response = JOptionPane\r
105                                         .showConfirmDialog(\r
106                                                         MotorWorkbench.this,\r
107                                                         "There are unsaved Fuels.\nExit Anyway?",\r
108                                                         "Confirm",\r
109                                                         JOptionPane.YES_NO_OPTION);\r
110                         if (response == JOptionPane.NO_OPTION) {\r
111                                 return;\r
112                         }\r
113                 }\r
114                 MotorWorkbench.this.dispose();\r
115         }\r
116 \r
117         private void addMenu() {\r
118 \r
119                 setJMenuBar(new JMenuBar() {\r
120                         private static final long serialVersionUID = 1L;\r
121 \r
122                         {\r
123                                 JMenu file = motorsEditor.getMenu();\r
124                                 file.add(new JSeparator());\r
125                                 file.add(new JMenuItem("Quit") {\r
126                                         private static final long serialVersionUID = 1L;\r
127                                         {\r
128                                                 addActionListener(new ActionListener() {\r
129                                                         @Override\r
130                                                         public void actionPerformed(ActionEvent e) {\r
131                                                                 maybeQuit();\r
132                                                         }\r
133                                                 });\r
134                                         }\r
135                                 });\r
136                                 add(file);\r
137                                 \r
138                                 add(new JMenu("Settings") {\r
139                                         private static final long serialVersionUID = 1L;\r
140                                         {\r
141                                                 ButtonGroup units = new ButtonGroup();\r
142                                                 JRadioButtonMenuItem sci = new JRadioButtonMenuItem(\r
143                                                                 "SI");\r
144                                                 JRadioButtonMenuItem nonsci = new JRadioButtonMenuItem(\r
145                                                                 "NonSI");\r
146                                                 units.add(sci);\r
147                                                 units.add(nonsci);\r
148                                                 sci.setSelected(UnitPreference.getUnitPreference() == UnitPreference.SI);\r
149                                                 nonsci.setSelected(UnitPreference.getUnitPreference() == UnitPreference.NONSI);\r
150                                                 sci.addActionListener(new ActionListener() {\r
151                                                         public void actionPerformed(ActionEvent arg0) {\r
152                                                                 UnitPreference\r
153                                                                                 .setUnitPreference(UnitPreference.SI);\r
154                                                         }\r
155                                                 });\r
156                                                 nonsci.addActionListener(new ActionListener() {\r
157                                                         public void actionPerformed(ActionEvent arg0) {\r
158                                                                 UnitPreference\r
159                                                                                 .setUnitPreference(UnitPreference.NONSI);\r
160                                                         }\r
161                                                 });\r
162                                                 add(sci);\r
163                                                 add(nonsci);\r
164                                         }\r
165                                 });\r
166                                 add(new JMenu("View") {\r
167                                         private static final long serialVersionUID = 1L;\r
168                                         {\r
169                                                 add(new JMenuItem("Detach \"All Motors\" tabs") {\r
170                                                         private static final long serialVersionUID = 1L;\r
171                                                         {\r
172                                                                 addActionListener(new ActionListener() {\r
173                                                                         @Override\r
174                                                                         public void actionPerformed(ActionEvent arg0) {\r
175                                                                                 motorsEditor.detach();\r
176                                                                         }\r
177                                                                 });\r
178                                                         }\r
179                                                 });\r
180                                                 add(new JMenuItem("Show Fuel Editor") {\r
181                                                         private static final long serialVersionUID = 1L;\r
182                                                         {\r
183                                                                 addActionListener(new ActionListener() {\r
184                                                                         @Override\r
185                                                                         public void actionPerformed(ActionEvent arg0) {\r
186                                                                                 fuelEditorFrame.setVisible(true);\r
187                                                                                 fuelEditorFrame.toFront();\r
188                                                                         }\r
189                                                                 });\r
190                                                         }\r
191                                                 });\r
192                                         }\r
193                                 });\r
194                         }\r
195                 });\r
196         }\r
197 \r
198         \r
199 \r
200 \r
201         \r
202 }\r