1 package com.billkuker.rocketry.motorsim.visual.workbench;
\r
3 import java.awt.FileDialog;
\r
4 import java.awt.event.ActionEvent;
\r
6 import java.io.FileInputStream;
\r
7 import java.io.FileOutputStream;
\r
8 import java.io.IOException;
\r
9 import java.util.Vector;
\r
11 import javax.swing.JFrame;
\r
12 import javax.swing.JMenu;
\r
13 import javax.swing.JMenuItem;
\r
14 import javax.swing.JScrollPane;
\r
15 import javax.swing.JSeparator;
\r
16 import java.awt.event.ActionListener;
\r
18 import com.billkuker.rocketry.motorsim.Burn;
\r
19 import com.billkuker.rocketry.motorsim.Motor;
\r
20 import com.billkuker.rocketry.motorsim.io.ENGExporter;
\r
21 import com.billkuker.rocketry.motorsim.io.MotorIO;
\r
22 import com.billkuker.rocketry.motorsim.visual.MultiObjectEditor;
\r
24 public class MotorsEditor extends MultiObjectEditor<Motor, MotorEditor> {
\r
25 private static final long serialVersionUID = 1L;
\r
27 MultiMotorThrustChart mbc = new MultiMotorThrustChart();
\r
28 MultiMotorPressureChart mpc = new MultiMotorPressureChart();
\r
29 MultiMotorTable mmt = new MultiMotorTable();
\r
31 public MotorsEditor(JFrame f) {
\r
34 addTab("All Motors", new JScrollPane(mmt));
\r
35 addTab("All Thrust", mbc);
\r
36 addTab("All Pressure", mpc);
\r
38 addCreator(new ObjectCreator() {
\r
40 public Motor newObject() {
\r
41 return MotorEditor.defaultMotor();
\r
45 public String getName() {
\r
52 protected void objectAdded(Motor m, MotorEditor e){
\r
53 e.addBurnWatcher(mbc);
\r
54 e.addBurnWatcher(mpc);
\r
55 e.addBurnWatcher(mmt);
\r
59 protected void objectRemoved(Motor m, MotorEditor e){
\r
60 mbc.removeBurn(e.burn);
\r
61 mpc.removeBurn(e.burn);
\r
62 mmt.removeBurn(e.burn);
\r
66 public MotorEditor createEditor(Motor o) {
\r
67 return new MotorEditor(o);
\r
72 protected Motor loadFromFile(File f) throws IOException {
\r
73 return MotorIO.readMotor(new FileInputStream(f));
\r
77 protected void saveToFile(Motor o, File f) throws IOException {
\r
78 MotorIO.writeMotor(o, new FileOutputStream(f));
\r
83 public JMenu getMenu(){
\r
84 JMenu ret = super.getMenu();
\r
85 ret.add(new JSeparator());
\r
86 ret.add(new JMenuItem("Export .ENG"){
\r
87 private static final long serialVersionUID = 1L;
\r
89 addActionListener(new ActionListener() {
\r
91 public void actionPerformed(ActionEvent arg0) {
\r
93 final FileDialog fd = new FileDialog(frame, "Export .ENG File", FileDialog.SAVE);
\r
94 fd.setFile("motorsim.eng");
\r
95 fd.setVisible(true);
\r
96 if (fd.getFile() != null) {
\r
97 File file = new File(fd.getDirectory()
\r
99 MotorEditor me = getSelectedEditor();
\r
100 Vector<Burn> bb = new Vector<Burn>();
\r
103 ENGExporter.export(bb, file);
\r
104 } catch (IOException e) {
\r
105 // TODO Auto-generated catch block
\r
106 e.printStackTrace();
\r