X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodel%2Fcomponents%2FModelComponent.java;h=b4d89282ceeb605a90f57e45ee2225877352fd3e;hb=13577856cd85c46f2cd4ad956332697bc820f425;hp=d543c543ebc2050f044e8cd309e6b07a36f98e1a;hpb=7d05144c25daa53e60fc9ed9fd503546a86567f8;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java index d543c543..b4d89282 100644 --- a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java +++ b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java @@ -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.
@@ -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 stateChanged) + { + highLevelStateHandler.addListener(stateID, stateChanged); + } + + public final void removeHighLevelStateListener(String stateID, Consumer stateChanged) { - highLevelStateHandler.setHighLevelState(stateID, newState); + highLevelStateHandler.removeListener(stateID, stateChanged); } // "graphical" operations