Changed GUIram2/4's cell order for high level state ID "q"
[Mograsim.git] / net.mograsim.logic.model.am2900 / src / net / mograsim / logic / model / model / components / mi / nandbased / GUIdff.java
index b8a5c8a..22d013f 100644 (file)
@@ -8,11 +8,11 @@ import net.mograsim.logic.model.model.wires.GUIWire;
 import net.mograsim.logic.model.model.wires.Pin;
 import net.mograsim.logic.model.model.wires.WireCrossPoint;
 import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler;
 
 public class GUIdff extends SimpleRectangularSubmodelComponent
 {
-       private GUI_rsLatch _rsLatch;
-
        public GUIdff(ViewModelModifiable model)
        {
                this(model, null);
@@ -38,7 +38,7 @@ public class GUIdff extends SimpleRectangularSubmodelComponent
                GUI_rsLatch _rsLatch1 = new GUI_rsLatch(submodelModifiable);
                GUInand3 nand3 = new GUInand3(submodelModifiable);
                GUINandGate nand2 = new GUINandGate(submodelModifiable, 1);
-               GUI_rsLatch _rsLatch2 = this._rsLatch = new GUI_rsLatch(submodelModifiable);
+               GUI_rsLatch _rsLatch2 = new GUI_rsLatch(submodelModifiable);
 
                WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1);
                WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1);
@@ -70,34 +70,9 @@ public class GUIdff extends SimpleRectangularSubmodelComponent
                new GUIWire(submodelModifiable, _rsLatch2.getPin("Q"), Q);
                new GUIWire(submodelModifiable, _rsLatch2.getPin("_Q"), _Q);
 
-               addAtomicHighLevelStateID("q");
-       }
-
-       @Override
-       public void setAtomicHighLevelState(String stateID, Object newState)
-       {
-               switch (stateID)
-               {
-               case "q":
-                       _rsLatch.setHighLevelState("q", newState);
-                       break;
-               default:
-                       // should not happen because we tell SubmodelComponent to only allow these state IDs.
-                       throw new IllegalStateException("Illegal atomic state ID: " + stateID);
-               }
-       }
-
-       @Override
-       public Object getAtomicHighLevelState(String stateID)
-       {
-               switch (stateID)
-               {
-               case "q":
-                       return _rsLatch.getHighLevelState("q");
-               default:
-                       // should not happen because we tell SubmodelComponent to only allow these state IDs.
-                       throw new IllegalStateException("Illegal atomic state ID: " + stateID);
-               }
+               StandardHighLevelStateHandler highLevelStateHandler = new StandardHighLevelStateHandler(this);
+               highLevelStateHandler.addAtomicHighLevelState("q", DelegatingAtomicHighLevelStateHandler::new).set(_rsLatch2, "q");
+               setHighLevelStateHandler(highLevelStateHandler);
        }
 
        static