Switched SubmodelComponentTestbench to use JSON-based Am2901
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Wed, 3 Jul 2019 21:25:03 +0000 (23:25 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Wed, 3 Jul 2019 21:25:03 +0000 (23:25 +0200)
net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java

index a3dda8a..5f10c72 100644 (file)
@@ -1,12 +1,16 @@
 package net.mograsim.logic.ui.examples;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import net.mograsim.logic.ui.SimpleLogicUIStandalone;
 import net.mograsim.logic.ui.model.ViewModelModifiable;
 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.am2901.GUIAm2901;
-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.model.wires.Pin;
+import net.mograsim.logic.ui.serializing.SubmodelComponentDeserializer;
 
 public class SubmodelComponentTestbench
 {
@@ -18,20 +22,29 @@ public class SubmodelComponentTestbench
        @SuppressWarnings("unused") // for GUIWires being created
        public static void createTestbench(ViewModelModifiable model)
        {
-               SimpleRectangularSubmodelComponent comp = new GUIAm2901(model);
+               SubmodelComponent comp = SubmodelComponentDeserializer.create(model, "components/am2901/GUIAm2901.json");
+
+               // guess which pins are outputs and which are inputs
+               List<String> inputPinNames = new ArrayList<>();
+               List<String> outputPinNames = new ArrayList<>();
+               for (Pin p : comp.getPins().values())
+                       if (p.getRelX() == 0)
+                               inputPinNames.add(p.name);
+                       else
+                               outputPinNames.add(p.name);
 
                comp.moveTo(100, 0);
-               for (int i = 0; i < comp.getInputPinNames().size(); i++)
+               for (int i = 0; i < inputPinNames.size(); i++)
                {
                        GUIManualSwitch sw = new GUIManualSwitch(model);
                        sw.moveTo(0, 20 * i);
-                       new GUIWire(model, comp.getPin(comp.getInputPinNames().get(i)), sw.getOutputPin());
+                       new GUIWire(model, comp.getPin(inputPinNames.get(i)), sw.getOutputPin());
                }
-               for (int i = 0; i < comp.getOutputPinNames().size(); i++)
+               for (int i = 0; i < outputPinNames.size(); i++)
                {
                        GUIBitDisplay bd = new GUIBitDisplay(model);
                        bd.moveTo(200, 20 * i);
-                       new GUIWire(model, comp.getPin(comp.getOutputPinNames().get(i)), bd.getInputPin());
+                       new GUIWire(model, comp.getPin(outputPinNames.get(i)), bd.getInputPin());
                }
        }
 }
\ No newline at end of file