2e2e0d386a1c52860b35bcbcd2a2d04210a07348
[Mograsim.git] / net.mograsim.logic.model.am2900 / src / net / mograsim / logic / model / am2900 / components / am2910 / GUIAm2910InstrPLA.java
1 package net.mograsim.logic.model.am2900.components.am2910;
2
3 import net.haspamelodica.swt.helper.gcs.GeneralGC;
4 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
5 import net.mograsim.logic.model.model.ViewModelModifiable;
6 import net.mograsim.logic.model.model.components.GUIComponent;
7 import net.mograsim.logic.model.model.wires.Pin;
8 import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
9 import net.mograsim.logic.model.modeladapter.componentadapters.Am2910InstrPLAAdapter;
10 import net.mograsim.logic.model.snippets.Renderer;
11 import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
12 import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer;
13 import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer.CenteredTextParams;
14 import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer;
15 import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams;
16 import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
17
18 public class GUIAm2910InstrPLA extends GUIComponent
19 {
20         private final Renderer renderer1;
21         private final Renderer renderer2;
22         private final Renderer renderer3;
23
24         public GUIAm2910InstrPLA(ViewModelModifiable model, String name)
25         {
26                 super(model, name);
27                 setSize(30, 85);
28                 addPin(new Pin(this, "PASS", 1, 0, 5));
29                 addPin(new Pin(this, "I3", 1, 0, 20));
30                 addPin(new Pin(this, "I2", 1, 0, 30));
31                 addPin(new Pin(this, "I1", 1, 0, 40));
32                 addPin(new Pin(this, "I0", 1, 0, 50));
33                 addPin(new Pin(this, "R=0", 1, 15, 0));
34                 addPin(new Pin(this, "_PL", 1, 5, 85));
35                 addPin(new Pin(this, "_MAP", 1, 15, 85));
36                 addPin(new Pin(this, "_VECT", 1, 25, 85));
37                 addPin(new Pin(this, "RWE", 1, 30, 5));
38                 addPin(new Pin(this, "RDEC", 1, 30, 15));
39                 addPin(new Pin(this, "YD", 1, 30, 25));
40                 addPin(new Pin(this, "YR", 1, 30, 35));
41                 addPin(new Pin(this, "YF", 1, 30, 45));
42                 addPin(new Pin(this, "YmuPC", 1, 30, 55));
43                 addPin(new Pin(this, "STKI0", 1, 30, 65));
44                 addPin(new Pin(this, "STKI1", 1, 30, 75));
45                 this.renderer1 = new DefaultOutlineRenderer(this);
46                 CenteredTextParams renderer2Params = new CenteredTextParams();
47                 renderer2Params.text = "Instr.\nPLA";
48                 renderer2Params.fontHeight = 5;
49                 this.renderer2 = new CenteredTextSymbolRenderer(this, renderer2Params);
50                 PinNamesParams renderer3Params = new PinNamesParams();
51                 renderer3Params.pinLabelHeight = 3.5;
52                 renderer3Params.pinLabelMargin = .5;
53                 PinNamesSymbolRenderer pinNamesRenderer;
54                 this.renderer3 = pinNamesRenderer = new PinNamesSymbolRenderer(this, renderer3Params);
55                 pinNamesRenderer.setPinPosition("PASS", Position.RIGHT);
56                 pinNamesRenderer.setPinPosition("I3", Position.RIGHT);
57                 pinNamesRenderer.setPinPosition("I2", Position.RIGHT);
58                 pinNamesRenderer.setPinPosition("I1", Position.RIGHT);
59                 pinNamesRenderer.setPinPosition("I0", Position.RIGHT);
60                 pinNamesRenderer.setPinPosition("R=0", Position.BOTTOM);
61                 pinNamesRenderer.setPinPosition("_PL", Position.TOP);
62                 pinNamesRenderer.setPinPosition("_MAP", Position.TOP);
63                 pinNamesRenderer.setPinPosition("_VECT", Position.TOP);
64                 pinNamesRenderer.setPinPosition("RWE", Position.LEFT);
65                 pinNamesRenderer.setPinPosition("RDEC", Position.LEFT);
66                 pinNamesRenderer.setPinPosition("YD", Position.LEFT);
67                 pinNamesRenderer.setPinPosition("YR", Position.LEFT);
68                 pinNamesRenderer.setPinPosition("YF", Position.LEFT);
69                 pinNamesRenderer.setPinPosition("YmuPC", Position.LEFT);
70                 pinNamesRenderer.setPinPosition("STKI0", Position.LEFT);
71                 pinNamesRenderer.setPinPosition("STKI1", Position.LEFT);
72         }
73
74         @Override
75         public void render(GeneralGC gc, Rectangle visibleRegion)
76         {
77                 renderer1.render(gc, visibleRegion);
78                 renderer2.render(gc, visibleRegion);
79                 renderer3.render(gc, visibleRegion);
80         }
81
82         static
83         {
84                 ViewLogicModelAdapter.addComponentAdapter(new Am2910InstrPLAAdapter());
85         }
86 }