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.fuel.FuelsEditor;
\r
21 import com.billkuker.rocketry.motorsim.visual.RememberJFrame;
\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
29 private MultiMotorThrustChart mb;
\r
30 private JFrame allBurns;
\r
32 private SettingsEditor settings = new SettingsEditor(this);
\r
34 private About about = new About(this);
\r
36 private JFrame fuelEditorFrame = new RememberJFrame(800,600){
\r
37 private static final long serialVersionUID = 1L;
\r
39 setIconImage(getIcon());
\r
41 add(fuelEditor = new FuelsEditor(this));
\r
43 setJMenuBar(b = new JMenuBar());
\r
44 b.add(fuelEditor.getMenu());
\r
45 setTitle(name + " - Fuel Editor");
\r
48 private FuelsEditor fuelEditor;
\r
50 private MotorsEditor motorsEditor;
\r
52 public static Image getIcon(){
\r
53 return Toolkit.getDefaultToolkit().getImage(MotorWorkbench.class.getResource("icon.png"));
\r
56 public MotorWorkbench() {
\r
59 setIconImage(getIcon());
\r
61 motorsEditor = new MotorsEditor(this);
\r
62 setContentPane(motorsEditor);
\r
66 mb = new MultiMotorThrustChart();
\r
67 allBurns = new JFrame();
\r
68 allBurns.setTitle("All Burns");
\r
69 allBurns.setSize(800, 600);
\r
72 setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
\r
74 addWindowListener(new WindowListener() {
\r
77 public void windowOpened(WindowEvent e) {}
\r
80 public void windowIconified(WindowEvent e) {}
\r
83 public void windowDeiconified(WindowEvent e) {}
\r
86 public void windowDeactivated(WindowEvent e) {}
\r
89 public void windowClosing(WindowEvent e) {
\r
94 public void windowClosed(WindowEvent e) {}
\r
97 public void windowActivated(WindowEvent e) {}
\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
109 JOptionPane.YES_NO_OPTION);
\r
110 if (response == JOptionPane.NO_OPTION) {
\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
120 JOptionPane.YES_NO_OPTION);
\r
121 if (response == JOptionPane.NO_OPTION) {
\r
125 MotorWorkbench.this.dispose();
\r
128 private void addMenu() {
\r
130 setJMenuBar(new JMenuBar() {
\r
131 private static final long serialVersionUID = 1L;
\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
139 addActionListener(new ActionListener() {
\r
141 public void actionPerformed(ActionEvent e) {
\r
149 add(new JMenu("Settings") {
\r
150 private static final long serialVersionUID = 1L;
\r
152 ButtonGroup units = new ButtonGroup();
\r
153 JRadioButtonMenuItem sci = new JRadioButtonMenuItem(
\r
155 JRadioButtonMenuItem nonsci = new JRadioButtonMenuItem(
\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
164 .setUnitPreference(UnitPreference.SI);
\r
167 nonsci.addActionListener(new ActionListener() {
\r
168 public void actionPerformed(ActionEvent arg0) {
\r
170 .setUnitPreference(UnitPreference.NONSI);
\r
176 add(new JSeparator());
\r
177 add(new JMenuItem("Simulation Settings"){
\r
178 private static final long serialVersionUID = 1L;
\r
180 addActionListener(new ActionListener() {
\r
182 public void actionPerformed(ActionEvent e) {
\r
183 settings.setVisible(true);
\r
190 add(new JMenu("View") {
\r
191 private static final long serialVersionUID = 1L;
\r
193 add(new JMenuItem("Detach \"All Motors\" tabs") {
\r
194 private static final long serialVersionUID = 1L;
\r
196 addActionListener(new ActionListener() {
\r
198 public void actionPerformed(ActionEvent arg0) {
\r
199 motorsEditor.detach();
\r
204 add(new JMenuItem("Show Fuel Editor") {
\r
205 private static final long serialVersionUID = 1L;
\r
207 addActionListener(new ActionListener() {
\r
209 public void actionPerformed(ActionEvent arg0) {
\r
210 fuelEditorFrame.setVisible(true);
\r
211 fuelEditorFrame.toFront();
\r
218 add(new JMenu("Help"){
\r
219 private static final long serialVersionUID = 1L;
\r
221 add(new JMenuItem("About") {
\r
222 private static final long serialVersionUID = 1L;
\r
224 addActionListener(new ActionListener() {
\r
226 public void actionPerformed(ActionEvent e) {
\r
227 about.setVisible(true);
\r