1 package net.mograsim.plugin;
3 import java.util.HashSet;
4 import java.util.Optional;
7 import net.mograsim.machine.Machine;
8 import net.mograsim.machine.MachineRegistry;
10 public class MachineContext
12 private Machine machine;
13 private Set<ContextObserver> observers;
14 private static MachineContext instance;
16 private MachineContext()
18 observers = new HashSet<>();
21 public static MachineContext getInstance()
25 instance = new MachineContext();
26 // TODO don't hardcode the Am2900
27 instance.setMachine(MachineRegistry.getMachine("Am2900").createNew());
32 public Machine getMachine()
37 public void setMachine(Machine machine)
39 this.machine = machine;
40 notifyObservers(machine);
43 public void registerObserver(ContextObserver ob)
46 ob.setMachine(Optional.ofNullable(machine));
49 public void deregisterObserver(ContextObserver ob)
54 private void notifyObservers(Machine machine)
56 observers.forEach(ob -> ob.setMachine(Optional.ofNullable(machine)));
60 public static interface ContextObserver
62 void setMachine(Optional<Machine> machine);