X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fsnippets%2Fhighlevelstatehandlers%2Fstandard%2FStandardHighLevelStateHandler.java;h=ddb52ae1313d62a20b5652a60863646b96af641d;hb=69ec19d54ceb6d5abbb8b4faa55284af22174859;hp=58e8e64ce54dc7454dcb9f4c1b136944da35aea0;hpb=7d05144c25daa53e60fc9ed9fd503546a86567f8;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/StandardHighLevelStateHandler.java b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/StandardHighLevelStateHandler.java index 58e8e64c..ddb52ae1 100644 --- a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/StandardHighLevelStateHandler.java +++ b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/StandardHighLevelStateHandler.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; import java.util.function.BiFunction; +import java.util.function.Consumer; import java.util.function.Function; import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; @@ -129,7 +130,7 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler } @Override - public Object getHighLevelState(String stateID) + public Object get(String stateID) { int indexOfDot = stateID.indexOf('.'); if (indexOfDot == -1) @@ -147,7 +148,7 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler } @Override - public void setHighLevelState(String stateID, Object newState) + public void set(String stateID, Object newState) { int indexOfDot = stateID.indexOf('.'); if (indexOfDot == -1) @@ -167,6 +168,48 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler } } + @Override + public void addListener(String stateID, Consumer stateChanged) + { + int indexOfDot = stateID.indexOf('.'); + if (indexOfDot == -1) + { + AtomicHighLevelStateHandler handler = atomicHighLevelStateHandlers.get(stateID); + if (handler != null) + handler.addListener(stateChanged); + else + throw new IllegalArgumentException("No high level state with ID " + stateID); + } else + { + SubcomponentHighLevelStateHandler handler = subcomponentHighLevelStateHandlers.get(stateID.substring(0, indexOfDot)); + if (handler != null) + handler.addListener(stateID.substring(indexOfDot + 1), stateChanged); + else + throw new IllegalArgumentException("No high level state with ID " + stateID); + } + } + + @Override + public void removeListener(String stateID, Consumer stateChanged) + { + int indexOfDot = stateID.indexOf('.'); + if (indexOfDot == -1) + { + AtomicHighLevelStateHandler handler = atomicHighLevelStateHandlers.get(stateID); + if (handler != null) + handler.removeListener(stateChanged); + else + throw new IllegalArgumentException("No high level state with ID " + stateID); + } else + { + SubcomponentHighLevelStateHandler handler = subcomponentHighLevelStateHandlers.get(stateID.substring(0, indexOfDot)); + if (handler != null) + handler.removeListener(stateID.substring(indexOfDot + 1), stateChanged); + else + throw new IllegalArgumentException("No high level state with ID " + stateID); + } + } + @Override public String getIDForSerializing(IdentifyParams idParams) {