1 package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic;
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 DelegatingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
9 private final SubmodelComponent parentComponent;
10 private GUIComponent delegateTarget;
11 private String subStateID;
13 public DelegatingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context)
18 public DelegatingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context, DelegatingAtomicHighLevelStateHandlerParams params)
20 this.parentComponent = context.component;
24 if (params.delegateTarget == null)
25 setDelegateTarget(parentComponent);
27 setDelegateTarget(parentComponent.submodel.getComponentsByName().get(params.delegateTarget));
28 setSubStateID(params.subStateID);
32 public void set(GUIComponent delegateTarget, String subStateID)
34 setDelegateTarget(delegateTarget);
35 setSubStateID(subStateID);
38 public void setDelegateTarget(GUIComponent delegateTarget)
40 if (delegateTarget == null)
41 this.delegateTarget = parentComponent;
42 else if (parentComponent.submodel.getComponentsByName().get(delegateTarget.name) != delegateTarget)
43 throw new IllegalArgumentException(
44 "Can only set components belonging to the submodel of the parent component of this handler as the delegate target");
45 this.delegateTarget = delegateTarget;
48 public void setSubStateID(String subStateID)
50 this.subStateID = subStateID;
54 public Object getHighLevelState()
56 return delegateTarget.getHighLevelState(subStateID);
60 public void setHighLevelState(Object newState)
62 delegateTarget.setHighLevelState(subStateID, newState);
65 public static class DelegatingAtomicHighLevelStateHandlerParams
67 public String delegateTarget;
68 public String subStateID;