Restructured the Preferences system
[Mograsim.git] / tests / net.mograsim.logic.model.am2900.tests / src / 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.am2900.Am2900Loader;
10 import net.mograsim.logic.model.model.LogicModelModifiable;
11 import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
12 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
13 import net.mograsim.logic.model.preferences.RenderPreferences;
14 import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
15 import net.mograsim.logic.model.serializing.IdentifyParams;
16 import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
17 import net.mograsim.logic.model.snippets.Renderer;
18
19 public class Am2904Testbench
20 {
21         public static void main(String[] args)
22         {
23                 Am2900Loader.setup();
24                 SimpleLogicUIStandalone.executeVisualisation(Am2904Testbench::create, Am2904Testbench::beforeRun);
25         }
26
27         public static void create(LogicModelModifiable model)
28         {
29                 // TODO replace with proper LogicModel deserialization
30                 DeserializedSubmodelComponent testbench = (DeserializedSubmodelComponent) IndirectModelComponentCreator.createComponent(model,
31                                 "jsonfile:Am2904Testbench.json", "testbench");
32                 testbench.setSize(1000, 1000);
33                 testbench.setOutlineRenderer(new Renderer()
34                 {
35                         @Override
36                         public String getIDForSerializing(IdentifyParams idParams)
37                         {
38                                 return null;
39                         }
40
41                         @Override
42                         public Void getParamsForSerializing(IdentifyParams idParams)
43                         {
44                                 return null;
45                         }
46
47                         @Override
48                         public void render(GeneralGC gc, RenderPreferences renderPrefs, Rectangle visibleRegion)
49                         {
50                                 // do nothing
51                         }
52                 });
53         }
54
55         public static void beforeRun(VisualisationObjects vis)
56         {
57                 ((SubmodelComponent) vis.model.getComponentsByName().get("testbench")).submodel.getComponentsByName().values().forEach(c ->
58                 {
59                         if (c instanceof ModelManualSwitch)
60                         {
61                                 ModelManualSwitch cCasted = (ModelManualSwitch) c;
62                                 cCasted.setHighLevelState("out", BitVector.of(Bit.ZERO, cCasted.logicWidth));
63                         }
64                 });
65         }
66 }