87b67fc364f957fc97b61cee64dee745982e5beb
[Mograsim.git] / net.mograsim.logic.model.am2900 / test / net / mograsim / logic / model / am2900 / am2904 / Am2904Testbench.java
1 package net.mograsim.logic.model.am2900.am2904;
2
3 import net.haspamelodica.swt.helper.gcs.GeneralGC;
4 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
5 import net.mograsim.logic.core.types.Bit;
6 import net.mograsim.logic.core.types.BitVector;
7 import net.mograsim.logic.model.SimpleLogicUIStandalone;
8 import net.mograsim.logic.model.SimpleLogicUIStandalone.VisualisationObjects;
9 import net.mograsim.logic.model.model.ViewModelModifiable;
10 import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
11 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
12 import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
13 import net.mograsim.logic.model.serializing.IdentifierGetter;
14 import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
15 import net.mograsim.logic.model.snippets.Renderer;
16
17 public class Am2904Testbench
18 {
19         public static void main(String[] args)
20         {
21                 SimpleLogicUIStandalone.executeVisualisation(Am2904Testbench::create, Am2904Testbench::beforeRun);
22         }
23
24         public static void create(ViewModelModifiable model)
25         {
26                 // TODO replace with proper ViewModel deserialization
27                 DeserializedSubmodelComponent testbench = (DeserializedSubmodelComponent) IndirectGUIComponentCreator.createComponent(model,
28                                 "file:GUIAm2904Testbench.json", "testbench");
29                 testbench.setSize(1000, 1000);
30                 testbench.setOutlineRenderer(new Renderer()
31                 {
32                         @Override
33                         public Void getParamsForSerializing(IdentifierGetter idGetter)
34                         {
35                                 return null;
36                         }
37
38                         @Override
39                         public void render(GeneralGC gc, Rectangle visibleRegion)
40                         {
41                                 // do nothing
42                         }
43                 });
44         }
45
46         public static void beforeRun(VisualisationObjects vis)
47         {
48                 ((SubmodelComponent) vis.model.getComponentsByName().get("testbench")).submodel.getComponentsByName().values().forEach(c ->
49                 {
50                         if (c instanceof GUIManualSwitch)
51                         {
52                                 GUIManualSwitch cCasted = (GUIManualSwitch) c;
53                                 cCasted.setHighLevelState("out", BitVector.of(Bit.ZERO, cCasted.logicWidth));
54                         }
55                 });
56         }
57 }