Update README to use GitHub Actions Build Status
[Mograsim.git] / plugins / net.mograsim.logic.model / src / net / mograsim / logic / model / model / components / ModelComponent.java
index d543c54..b4d8928 100644 (file)
@@ -14,6 +14,7 @@ import net.mograsim.logic.model.model.wires.Pin;
 import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.serializing.JSONSerializable;
 import net.mograsim.logic.model.snippets.HighLevelStateHandler;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler;
 
 /**
  * The base class for all model components.<br>
@@ -77,6 +78,8 @@ public abstract class ModelComponent implements JSONSerializable
                this.pinAddedListeners = new ArrayList<>();
                this.pinRemovedListeners = new ArrayList<>();
 
+               this.highLevelStateHandler = new DefaultHighLevelStateHandler();
+
                if (callInit)
                        init();
        }
@@ -212,13 +215,13 @@ public abstract class ModelComponent implements JSONSerializable
         * See {@link HighLevelStateHandler} for an explanation of high-level state IDs.
         * 
         * @see #setHighLevelState(String, Object)
-        * @see HighLevelStateHandler#getHighLevelState(String)
+        * @see HighLevelStateHandler#get(String)
         * 
         * @author Daniel Kirschten
         */
-       public Object getHighLevelState(String stateID)
+       public final Object getHighLevelState(String stateID)
        {
-               return highLevelStateHandler.getHighLevelState(stateID);
+               return highLevelStateHandler.get(stateID);
        }
 
        /**
@@ -226,13 +229,23 @@ public abstract class ModelComponent implements JSONSerializable
         * See {@link HighLevelStateHandler} for an explanation of high-level state IDs.
         * 
         * @see #getHighLevelState(String)
-        * @see HighLevelStateHandler#setHighLevelState(String, Object)
+        * @see HighLevelStateHandler#set(String, Object)
         * 
         * @author Daniel Kirschten
         */
-       public void setHighLevelState(String stateID, Object newState)
+       public final void setHighLevelState(String stateID, Object newState)
+       {
+               highLevelStateHandler.set(stateID, newState);
+       }
+
+       public final void addHighLevelStateListener(String stateID, Consumer<Object> stateChanged)
+       {
+               highLevelStateHandler.addListener(stateID, stateChanged);
+       }
+
+       public final void removeHighLevelStateListener(String stateID, Consumer<Object> stateChanged)
        {
-               highLevelStateHandler.setHighLevelState(stateID, newState);
+               highLevelStateHandler.removeListener(stateID, stateChanged);
        }
 
        // "graphical" operations