Implemented GUIAm2901DestDecode
[Mograsim.git] / net.mograsim.logic.ui / src / net / mograsim / logic / ui / model / components / ComponentParams.java
1 package net.mograsim.logic.ui.model.components;
2
3 import java.io.FileReader;
4 import java.io.FileWriter;
5 import java.io.IOException;
6
7 import com.google.gson.Gson;
8 import com.google.gson.GsonBuilder;
9
10 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
11
12 public class ComponentParams
13 {
14         private static Gson parser = new GsonBuilder().setPrettyPrinting().create();
15         String displayName;
16         int inputCount, outputCount, logicWidth;
17         double innerScale;
18
19         InnerComponentParams[] subComps;
20         InnerWireParams[] innerWires;
21
22         public static class InnerComponentParams
23         {
24                 Point pos;
25                 String type;
26                 int logicWidth;
27         }
28
29         public static class InnerWireParams
30         {
31                 InnerPinParams pin1, pin2;
32                 Point[] path;
33         }
34
35         public static class InnerPinParams
36         {
37                 int compId, pinIndex;
38         }
39
40         @SuppressWarnings("resource")
41         public static ComponentParams readJSON(String path) throws IOException
42         {
43                 FileReader reader = new FileReader(path);
44                 ComponentParams params = parser.fromJson(new FileReader(path), ComponentParams.class);
45                 reader.close();
46                 return params;
47         }
48
49         public void writeJSON(String path) throws IOException
50         {
51                 @SuppressWarnings("resource")
52                 FileWriter writer = new FileWriter(path);
53                 writer.write(parser.toJson(this));
54                 writer.close();
55         }
56 }