c13ec98f4134edd8d0563186acfb8ecd98003039
[Mograsim.git] / net.mograsim.logic.model.am2900 / src / net / mograsim / logic / model / examples / FusionNotWorkingTest.java
1 package net.mograsim.logic.model.examples;
2
3 import java.util.concurrent.atomic.AtomicReference;
4
5 import net.haspamelodica.swt.helper.gcs.GeneralGC;
6 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
7 import net.mograsim.logic.core.timeline.TimelineEventHandler;
8 import net.mograsim.logic.model.LogicUICanvas;
9 import net.mograsim.logic.model.SimpleLogicUIStandalone;
10 import net.mograsim.logic.model.SimpleLogicUIStandalone.VisualisationObjects;
11 import net.mograsim.logic.model.model.ViewModelModifiable;
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 FusionNotWorkingTest
18 {
19         public static void main(String[] args)
20         {
21                 SimpleLogicUIStandalone.executeVisualisation(FusionNotWorkingTest::create, FusionNotWorkingTest::beforeRun);
22         }
23
24         public static void create(ViewModelModifiable model)
25         {
26                 // TODO use _SE in GUIAm2904.json
27                 // TODO replace with proper ViewModel deserialization
28                 DeserializedSubmodelComponent testbench = (DeserializedSubmodelComponent) IndirectGUIComponentCreator.createComponent(model,
29                                 "file:FusionNotWorkingTest.json", "testbench");
30                 testbench.setSize(1000, 1000);
31                 testbench.setOutlineRenderer(new Renderer()
32                 {
33                         @Override
34                         public Object getParamsForSerializing(IdentifierGetter idGetter)
35                         {
36                                 return null;
37                         }
38
39                         @Override
40                         public void render(GeneralGC gc, Rectangle visibleRegion)
41                         {
42                                 // do nothing
43                         }
44                 });
45         }
46
47         public static void beforeRun(VisualisationObjects vis)
48         {
49                 // TODO workaround for rendering bug
50                 AtomicReference<TimelineEventHandler> functionRef = new AtomicReference<>();
51                 LogicUICanvas logicUICanvas = vis.gui.getLogicUICanvas();
52                 TimelineEventHandler function = e ->
53                 {
54                         logicUICanvas.redrawThreadsafe();
55                         vis.timeline.addEvent(functionRef.get(), 50);
56                 };
57                 functionRef.set(function);
58                 vis.timeline.addEvent(function, 0);
59         }
60 }