Skip to content
Snippets Groups Projects

Partly resolves "Implement state copy in AST"

Merged Manuel Krombholz requested to merge 30-implement-state-copy-in-ast into dev
All threads resolved!
6 files
+ 32
23
Compare changes
  • Side-by-side
  • Inline
Files
6
aspect ItemHandling {
protected boolean Item.isFrozen = false;
public void Item.freeze() { isFrozen = true; }
public void Item.unfreeze() { isFrozen = false; }
public final boolean Item.isFrozen() { return isFrozen; }
protected boolean Item.sendState = true;
public void Item.disableSendState() { sendState = false; }
public void Item.enableSendState() { sendState = true; }
@@ -254,31 +249,31 @@ aspect ItemHandling {
//--- setState(value,shouldSendState) ---
public void ItemWithBooleanState.setState(boolean value, boolean shouldSendState) {
if (isFrozen || stateEquals(value)) { return; }
if (stateEquals(value)) { return; }
set_state(value);
stateUpdated(shouldSendState);
}
public void ItemWithStringState.setState(String value, boolean shouldSendState) {
if (isFrozen || stateEquals(value)) { return; }
if (stateEquals(value)) { return; }
set_state(value);
stateUpdated(shouldSendState);
}
public void ItemWithDoubleState.setState(double value, boolean shouldSendState) {
if (isFrozen || stateEquals(value)) { return; }
if (stateEquals(value)) { return; }
set_state(value);
stateUpdated(shouldSendState);
}
public void ColorItem.setState(TupleHSB value, boolean shouldSendState) {
if (isFrozen || stateEquals(value)) { return; }
if (stateEquals(value)) { return; }
set_state(value);
stateUpdated(shouldSendState);
}
public void DateTimeItem.setState(Instant value, boolean shouldSendState) {
if (isFrozen || stateEquals(value)) { return; }
if (stateEquals(value)) { return; }
set_state(value);
stateUpdated(shouldSendState);
}
@@ -405,6 +400,7 @@ aspect ItemHandling {
SetStateFromTriggeringItemAction action = new SetStateFromTriggeringItemAction();
action.setAffectedItem(controlledItem);
rule.addAction(action);
rule.activateFor(controllerItem);
return rule;
@@ -437,14 +433,10 @@ aspect ItemHandling {
public abstract void ItemUpdate.apply();
public void ItemUpdateColor.apply() {
getItem().setStateFromColor(getNewHSB());
getItem().freeze();
getItem().unfreeze();
}
//--- ItemUpdate.apply ---
public void ItemUpdateDouble.apply() {
getItem().setStateFromDouble(getNewValue());
getItem().freeze();
getItem().unfreeze();
}
//--- ItemUpdate.describe ---
Loading