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 instance.setMachine(new Am2900Machine((Am2900MachineDefinition) MachineRegistry.getinstalledMachines().get("Am2900")));
33 public Machine getMachine()
38 public void setMachine(Machine machine)
40 this.machine = machine;
41 notifyObservers(machine);
44 public void registerObserver(ContextObserver ob)
47 ob.setMachine(Optional.ofNullable(machine));
50 public void deregisterObserver(ContextObserver ob)
55 private void notifyObservers(Machine machine)
57 observers.forEach(ob -> ob.setMachine(Optional.ofNullable(machine)));
61 public static interface ContextObserver
63 void setMachine(Optional<Machine> machine);