X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fsnippets%2Fhighlevelstatehandlers%2Fstandard%2Fsubcomponent%2FDelegatingSubcomponentHighLevelStateHandler.java;h=0d1fd655d7bee732db524e41fcb009f59a4acd78;hb=93b398d6271a538a2a4c9f4de07a3b4a8a2a7fd4;hp=79ec244d58ea7a92692f33f498d2b97cd2498deb;hpb=c5c0d07286a29994a11ba8b01eaffb21964b6c1b;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/subcomponent/DelegatingSubcomponentHighLevelStateHandler.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/subcomponent/DelegatingSubcomponentHighLevelStateHandler.java index 79ec244d..0d1fd655 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/subcomponent/DelegatingSubcomponentHighLevelStateHandler.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/subcomponent/DelegatingSubcomponentHighLevelStateHandler.java @@ -1,13 +1,16 @@ package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent; -import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.components.ModelComponent; import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.serializing.IdentifyParams; +import net.mograsim.logic.model.snippets.SnippetDefinintion; import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext; +import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers; public class DelegatingSubcomponentHighLevelStateHandler implements SubcomponentHighLevelStateHandler { private final SubmodelComponent parentComponent; - private GUIComponent delegateTarget; + private ModelComponent delegateTarget; private String prefix; public DelegatingSubcomponentHighLevelStateHandler(HighLevelStateHandlerContext context) @@ -26,21 +29,21 @@ public class DelegatingSubcomponentHighLevelStateHandler implements Subcomponent setDelegateTarget(parentComponent); else this.delegateTarget = parentComponent.submodel.getComponentsByName().get(params.delegateTarget); - setPrefix(prefix); + setPrefix(params.prefix); } } - public void set(GUIComponent delegateTarget, String prefix) + public void set(ModelComponent delegateTarget, String prefix) { setDelegateTarget(delegateTarget); setPrefix(prefix); } - public void setDelegateTarget(GUIComponent delegateTarget) + public void setDelegateTarget(ModelComponent delegateTarget) { if (delegateTarget == null) this.delegateTarget = parentComponent; - else if (!parentComponent.submodel.getComponentsByName().containsValue(delegateTarget)) + else if (parentComponent.submodel.getComponentsByName().get(delegateTarget.name) != delegateTarget) throw new IllegalArgumentException( "Can only set components belonging to the submodel of the parent component of this handler as the delegate target"); this.delegateTarget = delegateTarget; @@ -68,9 +71,31 @@ public class DelegatingSubcomponentHighLevelStateHandler implements Subcomponent return prefix == null ? subStateID : prefix + '.' + subStateID; } + @Override + public String getIDForSerializing(IdentifyParams idParams) + { + return "delegating"; + } + + @Override + public DelegatingSubcomponentHighLevelStateHandlerParams getParamsForSerializing(IdentifyParams idParams) + { + DelegatingSubcomponentHighLevelStateHandlerParams params = new DelegatingSubcomponentHighLevelStateHandlerParams(); + params.delegateTarget = delegateTarget.name; + params.prefix = prefix; + return params; + } + public static class DelegatingSubcomponentHighLevelStateHandlerParams { public String delegateTarget; public String prefix; } + + static + { + StandardHighLevelStateHandlerSnippetSuppliers.subcomponentHandlerSupplier + .setSnippetSupplier(DelegatingSubcomponentHighLevelStateHandler.class.getCanonicalName(), SnippetDefinintion + .create(DelegatingSubcomponentHighLevelStateHandlerParams.class, DelegatingSubcomponentHighLevelStateHandler::new)); + } } \ No newline at end of file