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)
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().get(delegateTarget.name) != delegateTarget)
+ else if (parentComponent.submodel.getComponentsByName().get(delegateTarget.getName()) != 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;
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.getName();
+ 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