Added DeserializedSubmodelComponent Editor project
[Mograsim.git] / net.mograsim.logic.ui.am2900 / src / net / mograsim / logic / ui / model / components / mi / nandbased / GUIandor414.java
1 package net.mograsim.logic.ui.model.components.mi.nandbased;
2
3 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
4 import net.mograsim.logic.ui.model.ViewModelModifiable;
5 import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent;
6 import net.mograsim.logic.ui.model.wires.GUIWire;
7 import net.mograsim.logic.ui.model.wires.Pin;
8 import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator;
9
10 public class GUIandor414 extends SimpleRectangularSubmodelComponent
11 {
12         public GUIandor414(ViewModelModifiable model)
13         {
14                 super(model, 1, "GUIandor414");
15                 setSubmodelScale(.4);
16                 setInputPins("C1", "C2", "C3", "C4", "A1", "A2", "A3", "A4", "B");
17                 setOutputPins("Y1", "Y2", "Y3", "Y4");
18                 initSubmodelComponents();
19         }
20
21         @SuppressWarnings("unused") // for GUIWires being created
22         private void initSubmodelComponents()
23         {
24                 Pin C1 = getSubmodelPin("C1");
25                 Pin C2 = getSubmodelPin("C2");
26                 Pin C3 = getSubmodelPin("C3");
27                 Pin C4 = getSubmodelPin("C4");
28                 Pin A1 = getSubmodelPin("A1");
29                 Pin A2 = getSubmodelPin("A2");
30                 Pin A3 = getSubmodelPin("A3");
31                 Pin A4 = getSubmodelPin("A4");
32                 Pin B = getSubmodelPin("B");
33                 Pin Y1 = getSubmodelPin("Y1");
34                 Pin Y2 = getSubmodelPin("Y2");
35                 Pin Y3 = getSubmodelPin("Y3");
36                 Pin Y4 = getSubmodelPin("Y4");
37
38                 GUIand41 and = new GUIand41(submodelModifiable);
39                 GUIor_4 or = new GUIor_4(submodelModifiable);
40
41                 and.moveTo(15, 137.5);
42                 or.moveTo(35, 37.5);
43
44                 new GUIWire(submodelModifiable, A1, and.getPin("A1"), new Point(10, 112.5), new Point(10, 142.5));
45                 new GUIWire(submodelModifiable, A2, and.getPin("A2"), new Point(5, 137.5), new Point(5, 152.5));
46                 new GUIWire(submodelModifiable, A3, and.getPin("A3"), new Point[0]);
47                 new GUIWire(submodelModifiable, A4, and.getPin("A4"), new Point(5, 187.5), new Point(5, 172.5));
48                 new GUIWire(submodelModifiable, B, and.getPin("B"), new Point(10, 212.5), new Point(10, 182.5));
49                 new GUIWire(submodelModifiable, C1, or.getPin("A1"), new Point(10, 12.5), new Point(10, 42.5));
50                 new GUIWire(submodelModifiable, C2, or.getPin("A2"), new Point(5, 37.5), new Point(5, 52.5));
51                 new GUIWire(submodelModifiable, C3, or.getPin("A3"), new Point[0]);
52                 new GUIWire(submodelModifiable, C4, or.getPin("A4"), new Point(5, 87.5), new Point(5, 72.5));
53                 new GUIWire(submodelModifiable, and.getPin("Y1"), or.getPin("B1"), new Point(70, 142.5), new Point(70, 120), new Point(30, 120),
54                                 new Point(30, 82.5));
55                 new GUIWire(submodelModifiable, and.getPin("Y2"), or.getPin("B2"), new Point(65, 152.5), new Point(65, 125), new Point(25, 125),
56                                 new Point(25, 92.5));
57                 new GUIWire(submodelModifiable, and.getPin("Y3"), or.getPin("B3"), new Point(60, 162.5), new Point(60, 130), new Point(20, 130),
58                                 new Point(20, 102.5));
59                 new GUIWire(submodelModifiable, and.getPin("Y4"), or.getPin("B4"), new Point(55, 172.5), new Point(55, 135), new Point(15, 135),
60                                 new Point(15, 112.5));
61                 new GUIWire(submodelModifiable, or.getPin("Y1"), Y1, new Point(75, 42.5), new Point(75, 12.5));
62                 new GUIWire(submodelModifiable, or.getPin("Y2"), Y2, new Point(80, 52.5), new Point(80, 37.5));
63                 new GUIWire(submodelModifiable, or.getPin("Y3"), Y3, new Point[0]);
64                 new GUIWire(submodelModifiable, or.getPin("Y4"), Y4, new Point(80, 72.5), new Point(80, 87.5));
65         }
66
67         static
68         {
69                 IndirectGUIComponentCreator.setComponentProvider(GUIandor414.class.getCanonicalName(), (m, p) -> new GUIandor414(m));
70         }
71 }