Add all pressure graph
[sw/motorsim] / gui / com / billkuker / rocketry / motorsim / visual / workbench / MotorsEditor.java
1 package com.billkuker.rocketry.motorsim.visual.workbench;\r
2 \r
3 import java.awt.FileDialog;\r
4 import java.awt.event.ActionEvent;\r
5 import java.io.File;\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
10 \r
11 import javax.swing.JFrame;\r
12 import javax.swing.JMenu;\r
13 import javax.swing.JMenuItem;\r
14 import javax.swing.JSeparator;\r
15 import java.awt.event.ActionListener;\r
16 \r
17 import com.billkuker.rocketry.motorsim.Burn;\r
18 import com.billkuker.rocketry.motorsim.Motor;\r
19 import com.billkuker.rocketry.motorsim.io.ENGExporter;\r
20 import com.billkuker.rocketry.motorsim.io.MotorIO;\r
21 import com.billkuker.rocketry.motorsim.visual.MultiObjectEditor;\r
22 \r
23 public class MotorsEditor extends MultiObjectEditor<Motor, MotorEditor> {\r
24         private static final long serialVersionUID = 1L;\r
25         \r
26         MultiMotorThrustChart mbc = new MultiMotorThrustChart();\r
27         MultiMotorPressureChart mpc = new MultiMotorPressureChart();\r
28 \r
29         public MotorsEditor(JFrame f) {\r
30                 super(f, "Motor");\r
31                 \r
32                 addTab("All Thrust", mbc);\r
33                 addTab("All Pressure", mpc);\r
34                 \r
35                 addCreator(new ObjectCreator() {\r
36                         @Override\r
37                         public Motor newObject() {\r
38                                 return MotorEditor.defaultMotor();\r
39                         }\r
40 \r
41                         @Override\r
42                         public String getName() {\r
43                                 return "Motor";\r
44                         }\r
45                 });\r
46         }\r
47         \r
48         @Override\r
49         protected void objectAdded(Motor m, MotorEditor e){\r
50                 e.addBurnWatcher(mbc);\r
51                 e.addBurnWatcher(mpc);\r
52         }\r
53         \r
54         @Override\r
55         protected void objectRemoved(Motor m, MotorEditor e){\r
56                 mbc.removeBurn(e.burn);\r
57                 mpc.removeBurn(e.burn);\r
58         }\r
59 \r
60         @Override\r
61         public MotorEditor createEditor(Motor o) {\r
62                 return new MotorEditor(o);\r
63         }\r
64 \r
65 \r
66         @Override\r
67         protected Motor loadFromFile(File f) throws IOException {\r
68                 return MotorIO.readMotor(new FileInputStream(f));\r
69         }\r
70 \r
71         @Override\r
72         protected void saveToFile(Motor o, File f) throws IOException {\r
73                 MotorIO.writeMotor(o, new FileOutputStream(f));\r
74         }\r
75 \r
76         \r
77         @Override\r
78         public JMenu getMenu(){\r
79                 JMenu ret = super.getMenu();\r
80                 ret.add(new JSeparator());\r
81                 ret.add(new JMenuItem("Export .ENG"){\r
82                         private static final long serialVersionUID = 1L;\r
83                         {\r
84                                 addActionListener(new ActionListener() {\r
85                                         @Override\r
86                                         public void actionPerformed(ActionEvent arg0) {\r
87 \r
88                                                 final FileDialog fd = new FileDialog(frame, "Export .ENG File", FileDialog.SAVE);\r
89                                                 fd.setFile("motorsim.eng");\r
90                                                 fd.setVisible(true);\r
91                                                 if (fd.getFile() != null) {\r
92                                                         File file = new File(fd.getDirectory()\r
93                                                                         + fd.getFile());\r
94                                                         MotorEditor me = getSelectedEditor();\r
95                                                         Vector<Burn> bb = new Vector<Burn>();\r
96                                                         bb.add(me.burn);\r
97                                                         try {\r
98                                                                 ENGExporter.export(bb, file);\r
99                                                         } catch (IOException e) {\r
100                                                                 // TODO Auto-generated catch block\r
101                                                                 e.printStackTrace();\r
102                                                         }\r
103                                                 }\r
104                                         }\r
105                                 });\r
106                         }\r
107                 });\r
108                 return ret;\r
109         }\r
110 }\r