1 package net.mograsim.plugin;
3 import java.util.HashSet;
4 import java.util.Optional;
7 import net.mograsim.logic.model.am2900.machine.Am2900Machine;
8 import net.mograsim.logic.model.am2900.machine.Am2900MachineDefinition;
9 import net.mograsim.machine.Machine;
10 import net.mograsim.machine.MachineRegistry;
12 public class MachineContext
14 private Machine machine;
15 private Set<ContextObserver> observers;
16 private static MachineContext instance;
18 private MachineContext()
20 observers = new HashSet<>();
23 public static MachineContext getInstance()
27 instance = new MachineContext();
28 // TODO don't hardcode the Am2900
29 instance.setMachine(new Am2900Machine((Am2900MachineDefinition) MachineRegistry.getinstalledMachines().get("Am2900")));
34 public Machine getMachine()
39 public void setMachine(Machine machine)
41 this.machine = machine;
42 notifyObservers(machine);
45 public void registerObserver(ContextObserver ob)
48 ob.setMachine(Optional.ofNullable(machine));
51 public void deregisterObserver(ContextObserver ob)
56 private void notifyObservers(Machine machine)
58 observers.forEach(ob -> ob.setMachine(Optional.ofNullable(machine)));
62 public static interface ContextObserver
64 void setMachine(Optional<Machine> machine);