43995f25c4bfaf8030e690aa420f4e2aa4938a4c
[sw/motorsim] / gui / com / billkuker / rocketry / motorsim / fuel / FuelsEditor.java
1 package com.billkuker.rocketry.motorsim.fuel;\r
2 \r
3 import java.awt.Frame;\r
4 import java.io.File;\r
5 import java.io.FileInputStream;\r
6 import java.io.FileOutputStream;\r
7 import java.io.IOException;\r
8 \r
9 import javax.swing.JFrame;\r
10 import javax.swing.JMenuBar;\r
11 \r
12 import com.billkuker.rocketry.motorsim.Fuel;\r
13 import com.billkuker.rocketry.motorsim.fuel.editable.EditablePiecewiseLinearFuel;\r
14 import com.billkuker.rocketry.motorsim.fuel.editable.EditablePiecewiseSaintRobertFuel;\r
15 import com.billkuker.rocketry.motorsim.io.MotorIO;\r
16 import com.billkuker.rocketry.motorsim.visual.MultiObjectEditor;\r
17 \r
18 public class FuelsEditor extends MultiObjectEditor<Fuel, AbstractFuelEditor> {\r
19 \r
20         private static final long serialVersionUID = 1L;\r
21         \r
22         private MultiFuelChart allFuels = new MultiFuelChart();\r
23 \r
24         public FuelsEditor(Frame frame) {\r
25                 super(frame, "Fuel");\r
26                 addTab("All Fuels", allFuels);\r
27                 \r
28                 addCreator(new ObjectCreator() {\r
29                         @Override\r
30                         public Fuel newObject() {\r
31                                 return new EditablePiecewiseLinearFuel();\r
32                         }\r
33 \r
34                         @Override\r
35                         public String getName() {\r
36                                 return "Linear Fuel";\r
37                         }\r
38                 });\r
39                 addCreator(new ObjectCreator() {\r
40                         @Override\r
41                         public Fuel newObject() {\r
42                                 return new EditablePiecewiseSaintRobertFuel();\r
43                         }\r
44 \r
45                         @Override\r
46                         public String getName() {\r
47                                 return "Saint Robert Fuel";\r
48                         }\r
49                 });\r
50         }\r
51 \r
52         @Override\r
53         public AbstractFuelEditor createEditor(Fuel o) {\r
54                 if ( o instanceof EditablePiecewiseLinearFuel ){\r
55                         return new LinearFuelEditor((EditablePiecewiseLinearFuel)o);\r
56                 } else if ( o instanceof EditablePiecewiseSaintRobertFuel ){\r
57                         return new SRFuelEditor((EditablePiecewiseSaintRobertFuel)o);\r
58                 }\r
59                 return null;\r
60         }\r
61 \r
62         @Override\r
63         protected Fuel loadFromFile(File f) throws IOException {\r
64                 Fuel fuel =  MotorIO.readFuel(new FileInputStream(f));\r
65                 return fuel;\r
66         }\r
67 \r
68         @Override\r
69         protected void saveToFile(Fuel o, File f) throws IOException {\r
70                 MotorIO.writeFuel(o, new FileOutputStream(f));\r
71         }\r
72         \r
73         @SuppressWarnings("deprecation")\r
74         public static void main(String args[]){\r
75                 JFrame f = new JFrame();\r
76                 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r
77                 FuelsEditor fe;\r
78                 f.add(fe = new FuelsEditor(f));\r
79                 JMenuBar b;\r
80                 f.setJMenuBar(b = new JMenuBar());\r
81                 b.add(fe.getMenu());\r
82                 f.setSize(1024, 768);\r
83                 f.show();\r
84         }\r
85 \r
86 }\r