X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fexamples%2FJsonExample.java;h=128ec058f6f09d00a74811ad11ec8e718937c329;hb=61819ea27655fc6a38ae1e4052fb4991aafb8f8a;hp=4ebd32ae3cb17bb3ba7ad72b958495f49c415c8e;hpb=10ce5cc888d0b781069822cecd85e33e6be8f54b;p=Mograsim.git diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/JsonExample.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/JsonExample.java index 4ebd32ae..128ec058 100644 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/JsonExample.java +++ b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/JsonExample.java @@ -2,23 +2,34 @@ package net.mograsim.logic.ui.examples; import java.io.IOException; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonNull; + import net.mograsim.logic.ui.SimpleLogicUIStandalone; import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIBitDisplay; -import net.mograsim.logic.ui.model.components.GUICustomComponentCreator; -import net.mograsim.logic.ui.model.components.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.components.SubmodelComponent; -import net.mograsim.logic.ui.model.components.SubmodelComponentParams; +import net.mograsim.logic.ui.model.components.atomic.GUIBitDisplay; +import net.mograsim.logic.ui.model.components.atomic.GUIManualSwitch; +import net.mograsim.logic.ui.model.components.mi.nandbased.GUI_rsLatch; import net.mograsim.logic.ui.model.components.mi.nandbased.GUIfulladder; import net.mograsim.logic.ui.model.components.mi.nandbased.GUIhalfadder; +import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; import net.mograsim.logic.ui.model.wires.GUIWire; +import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; +import net.mograsim.logic.ui.serializing.SubmodelComponentDeserializer; +import net.mograsim.logic.ui.serializing.SubmodelComponentParams; public class JsonExample { public static void main(String[] args) { - SimpleLogicUIStandalone.executeVisualisation(JsonExample::refJsonFromJsonTest); + SimpleLogicUIStandalone.executeVisualisation(JsonExample::basicTest); + } + + public static void mappingTest(ViewModelModifiable model) + { + IndirectGUIComponentCreator.createComponent(model, "Am2901", JsonNull.INSTANCE); } private static class TestComponent extends SimpleRectangularSubmodelComponent @@ -28,7 +39,42 @@ public class JsonExample super(model, 1, "Test"); setSubmodelScale(.4); setInputPins("Input pin #0"); - GUICustomComponentCreator.create(submodelModifiable, "HalfAdder.json"); + SubmodelComponentDeserializer.create(submodelModifiable, "HalfAdder.json"); + } + } + + @SuppressWarnings("unused") // GUIWires being created + private static void basicTest(ViewModelModifiable viewModel) + { + GUI_rsLatch comp = new GUI_rsLatch(viewModel); + comp.moveTo(30, 0); + SubmodelComponentParams params = comp.calculateParams(); + String jsonString = new GsonBuilder().setPrettyPrinting().create().toJson(params); + System.out.println(jsonString); + SubmodelComponent deserialized = SubmodelComponentDeserializer.create(viewModel, + new Gson().fromJson(jsonString, SubmodelComponentParams.class)); + deserialized.moveTo(30, 50); + double h = 0; + for (String s : comp.getInputPinNames()) + { + GUIManualSwitch sw = new GUIManualSwitch(viewModel); + sw.moveTo(0, h); + new GUIWire(viewModel, sw.getOutputPin(), comp.getPin(s)); + sw = new GUIManualSwitch(viewModel); + sw.moveTo(0, h + 50); + new GUIWire(viewModel, sw.getOutputPin(), deserialized.getPin(s)); + h += 20; + } + h = 0; + for (String s : comp.getOutputPinNames()) + { + GUIBitDisplay bd = new GUIBitDisplay(viewModel); + bd.moveTo(80, h); + new GUIWire(viewModel, bd.getInputPin(), comp.getPin(s)); + bd = new GUIBitDisplay(viewModel); + bd.moveTo(80, h + 50); + new GUIWire(viewModel, bd.getInputPin(), deserialized.getPin(s)); + h += 20; } } @@ -37,9 +83,8 @@ public class JsonExample { TestComponent t = new TestComponent(model); t.calculateParams().writeJson("Test.json"); - SubmodelComponent c = GUICustomComponentCreator.create(model, "Test.json"); + SubmodelComponent c = SubmodelComponentDeserializer.create(model, "Test.json"); c.moveTo(0, 50); - } public static void createHalfAdderExample(ViewModelModifiable model) @@ -57,7 +102,7 @@ public class JsonExample e.printStackTrace(); } - GUICustomComponentCreator.create(model, p, ""); + SubmodelComponentDeserializer.create(model, p); } @SuppressWarnings("unused") // for GUIWires being created @@ -76,7 +121,7 @@ public class JsonExample e.printStackTrace(); } - SimpleRectangularSubmodelComponent adder = (SimpleRectangularSubmodelComponent) GUICustomComponentCreator.create(model, + SimpleRectangularSubmodelComponent adder = (SimpleRectangularSubmodelComponent) SubmodelComponentDeserializer.create(model, "FullAdder.json"); GUIManualSwitch swA = new GUIManualSwitch(model); @@ -99,7 +144,7 @@ public class JsonExample new GUIWire(model, adder.getPin("Y"), bdY.getInputPin()); new GUIWire(model, adder.getPin("Z"), bdZ.getInputPin()); - SubmodelComponent adder2 = GUICustomComponentCreator.create(model, pC, ""); + SubmodelComponent adder2 = SubmodelComponentDeserializer.create(model, pC); swA = new GUIManualSwitch(model); swA.moveTo(0, 70);