1 package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent;
3 import net.mograsim.logic.model.model.components.GUIComponent;
4 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
5 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
7 public class DelegatingSubcomponentHighLevelStateHandler implements SubcomponentHighLevelStateHandler
9 private final SubmodelComponent parentComponent;
10 private GUIComponent delegateTarget;
11 private String prefix;
13 public DelegatingSubcomponentHighLevelStateHandler(HighLevelStateHandlerContext context)
18 public DelegatingSubcomponentHighLevelStateHandler(HighLevelStateHandlerContext context,
19 DelegatingSubcomponentHighLevelStateHandlerParams params)
21 this.parentComponent = context.component;
25 if (params.delegateTarget == null)
26 setDelegateTarget(parentComponent);
28 this.delegateTarget = parentComponent.submodel.getComponentsByName().get(params.delegateTarget);
33 public void set(GUIComponent delegateTarget, String prefix)
35 setDelegateTarget(delegateTarget);
39 public void setDelegateTarget(GUIComponent delegateTarget)
41 if (delegateTarget == null)
42 this.delegateTarget = parentComponent;
43 else if (parentComponent.submodel.getComponentsByName().get(delegateTarget.name) != delegateTarget)
44 throw new IllegalArgumentException(
45 "Can only set components belonging to the submodel of the parent component of this handler as the delegate target");
46 this.delegateTarget = delegateTarget;
49 public void setPrefix(String prefix)
55 public Object getHighLevelState(String subStateID)
57 return delegateTarget.getHighLevelState(getDelegateTargetHighLevelStateID(subStateID));
61 public void setHighLevelState(String subStateID, Object newState)
63 delegateTarget.setHighLevelState(getDelegateTargetHighLevelStateID(subStateID), newState);
66 private String getDelegateTargetHighLevelStateID(String subStateID)
68 return prefix == null ? subStateID : prefix + '.' + subStateID;
71 public static class DelegatingSubcomponentHighLevelStateHandlerParams
73 public String delegateTarget;