X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Fnature%2FMachineContext.java;h=c84e622e2ead0ab00feb3a1f679f1061088fd5af;hb=6d80fa458ec324491663d7640e8d079aa0e44953;hp=3e5c9dea024c98e503043c920e8f0b3a6240fb48;hpb=f554922e3f6ff7bf776101039f30c1e5a2106b2c;p=Mograsim.git diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/nature/MachineContext.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/nature/MachineContext.java index 3e5c9dea..c84e622e 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/nature/MachineContext.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/nature/MachineContext.java @@ -70,7 +70,7 @@ public class MachineContext */ public final boolean isCurrentyValid() { - return status == READY || status == ACTIVE; + return status == READY || isActive(); } /** @@ -122,9 +122,10 @@ public class MachineContext */ public final void setActiveMachine(Machine machine) { + Optional oldMachine = activeMachine; activeMachine = Optional.ofNullable(machine); updateStatus(); - notifyActiveMachineListeners(); + notifyActiveMachineListeners(oldMachine, activeMachine); } public final Optional getMachineId() @@ -208,8 +209,9 @@ public class MachineContext { if ((status == DEAD || status == CLOSED) && activeMachine.isPresent()) { + Optional oldMachine = activeMachine; activeMachine = Optional.empty(); - notifyActiveMachineListeners(); + notifyActiveMachineListeners(oldMachine, activeMachine); } } @@ -247,15 +249,15 @@ public class MachineContext } } - private void notifyActiveMachineListeners() + private void notifyActiveMachineListeners(Optional oldMachine, Optional newMachine) { - machineListeners.forEach(ob -> ob.setMachine(activeMachine)); + machineListeners.forEach(ob -> ob.setMachine(oldMachine, newMachine)); } public void addActiveMachineListener(ActiveMachineListener ob) { machineListeners.add(ob); - ob.setMachine(activeMachine); + ob.setMachine(Optional.empty(), activeMachine); } public void removeActiveMachineListener(ActiveMachineListener ob) @@ -282,7 +284,7 @@ public class MachineContext @FunctionalInterface public static interface ActiveMachineListener { - void setMachine(Optional machine); + void setMachine(Optional oldMachine, Optional newMachine); } @FunctionalInterface