1 package com.billkuker.rocketry.motorsim.visual.workbench;
\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
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
19 import com.billkuker.rocketry.motorsim.RocketScience.UnitPreference;
\r
20 import com.billkuker.rocketry.motorsim.debug.DebugFrame;
\r
21 import com.billkuker.rocketry.motorsim.fuel.FuelsEditor;
\r
22 import com.billkuker.rocketry.motorsim.visual.RememberJFrame;
\r
25 public class MotorWorkbench extends RememberJFrame {
\r
26 public static final String version = "2.0 BETA3";
\r
27 public static final String name = "MotorSim " + version;
\r
28 private static final long serialVersionUID = 1L;
\r
30 private MultiMotorThrustChart mb;
\r
31 private JFrame allBurns;
\r
33 private SettingsEditor settings = new SettingsEditor(this);
\r
35 private About about = new About(this);
\r
37 private JFrame fuelEditorFrame = new RememberJFrame(800,600){
\r
38 private static final long serialVersionUID = 1L;
\r
40 setIconImage(getIcon());
\r
42 add(fuelEditor = new FuelsEditor(this));
\r
44 setJMenuBar(b = new JMenuBar());
\r
45 b.add(fuelEditor.getMenu());
\r
46 setTitle(name + " - Fuel Editor");
\r
49 private FuelsEditor fuelEditor;
\r
51 private MotorsEditor motorsEditor;
\r
53 public static Image getIcon(){
\r
54 return Toolkit.getDefaultToolkit().getImage(MotorWorkbench.class.getResource("icon.png"));
\r
57 public MotorWorkbench() {
\r
60 setIconImage(getIcon());
\r
62 motorsEditor = new MotorsEditor(this);
\r
63 setContentPane(motorsEditor);
\r
67 mb = new MultiMotorThrustChart();
\r
68 allBurns = new JFrame();
\r
69 allBurns.setTitle("All Burns");
\r
70 allBurns.setSize(800, 600);
\r
73 setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
\r
75 addWindowListener(new WindowListener() {
\r
78 public void windowOpened(WindowEvent e) {}
\r
81 public void windowIconified(WindowEvent e) {}
\r
84 public void windowDeiconified(WindowEvent e) {}
\r
87 public void windowDeactivated(WindowEvent e) {}
\r
90 public void windowClosing(WindowEvent e) {
\r
95 public void windowClosed(WindowEvent e) {}
\r
98 public void windowActivated(WindowEvent e) {}
\r
103 private void maybeQuit(){
\r
104 if (motorsEditor.hasDirty()) {
\r
105 int response = JOptionPane
\r
106 .showConfirmDialog(
\r
107 MotorWorkbench.this,
\r
108 "There are unsaved Motors.\nExit Anyway?",
\r
110 JOptionPane.YES_NO_OPTION);
\r
111 if (response == JOptionPane.NO_OPTION) {
\r
115 if (fuelEditor.hasDirty()) {
\r
116 int response = JOptionPane
\r
117 .showConfirmDialog(
\r
118 MotorWorkbench.this,
\r
119 "There are unsaved Fuels.\nExit Anyway?",
\r
121 JOptionPane.YES_NO_OPTION);
\r
122 if (response == JOptionPane.NO_OPTION) {
\r
126 MotorWorkbench.this.dispose();
\r
129 private void addMenu() {
\r
131 setJMenuBar(new JMenuBar() {
\r
132 private static final long serialVersionUID = 1L;
\r
135 JMenu file = motorsEditor.getMenu();
\r
136 file.add(new JSeparator());
\r
137 file.add(new JMenuItem("Quit") {
\r
138 private static final long serialVersionUID = 1L;
\r
140 addActionListener(new ActionListener() {
\r
142 public void actionPerformed(ActionEvent e) {
\r
150 add(new JMenu("Settings") {
\r
151 private static final long serialVersionUID = 1L;
\r
153 ButtonGroup units = new ButtonGroup();
\r
154 JRadioButtonMenuItem sci = new JRadioButtonMenuItem(
\r
156 JRadioButtonMenuItem nonsci = new JRadioButtonMenuItem(
\r
160 sci.setSelected(UnitPreference.getUnitPreference() == UnitPreference.SI);
\r
161 nonsci.setSelected(UnitPreference.getUnitPreference() == UnitPreference.NONSI);
\r
162 sci.addActionListener(new ActionListener() {
\r
163 public void actionPerformed(ActionEvent arg0) {
\r
165 .setUnitPreference(UnitPreference.SI);
\r
168 nonsci.addActionListener(new ActionListener() {
\r
169 public void actionPerformed(ActionEvent arg0) {
\r
171 .setUnitPreference(UnitPreference.NONSI);
\r
177 add(new JSeparator());
\r
178 add(new JMenuItem("Simulation Settings"){
\r
179 private static final long serialVersionUID = 1L;
\r
181 addActionListener(new ActionListener() {
\r
183 public void actionPerformed(ActionEvent e) {
\r
184 settings.setVisible(true);
\r
191 add(new JMenu("View") {
\r
192 private static final long serialVersionUID = 1L;
\r
194 add(new JMenuItem("Detach \"All Motors\" tabs") {
\r
195 private static final long serialVersionUID = 1L;
\r
197 addActionListener(new ActionListener() {
\r
199 public void actionPerformed(ActionEvent arg0) {
\r
200 motorsEditor.detach();
\r
205 add(new JMenuItem("Show Fuel Editor") {
\r
206 private static final long serialVersionUID = 1L;
\r
208 addActionListener(new ActionListener() {
\r
210 public void actionPerformed(ActionEvent arg0) {
\r
211 fuelEditorFrame.setVisible(true);
\r
212 fuelEditorFrame.toFront();
\r
219 add(new JMenu("Help"){
\r
220 private static final long serialVersionUID = 1L;
\r
222 add(new JMenuItem("About") {
\r
223 private static final long serialVersionUID = 1L;
\r
225 addActionListener(new ActionListener() {
\r
227 public void actionPerformed(ActionEvent e) {
\r
228 about.setVisible(true);
\r
233 add(new JMenuItem("Debug") {
\r
234 private static final long serialVersionUID = 1L;
\r
236 addActionListener(new ActionListener() {
\r
238 public void actionPerformed(ActionEvent e) {
\r