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