X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2FMachineRegistry.java;h=28e792169c5e50d24fa2d05e6edf4bd49647206f;hb=f919efc362c3de5c94d894dc8fc7fe22c03fc865;hp=a2706462493e2f08082e52975e83bf10e636bc86;hpb=58babf45ae7d259a296656451d796dbe601377a4;p=Mograsim.git diff --git a/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java b/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java index a2706462..28e79216 100644 --- a/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java +++ b/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java @@ -4,20 +4,23 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Map; - import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.IRegistryEventListener; import org.eclipse.core.runtime.Platform; public class MachineRegistry { private static final String MACHINE_EXT_ID = "net.mograsim.machine.machine_definition"; - private static Map installedMachines = new HashMap<>(); + private static final Map installedMachines = new HashMap<>(); - public static void reload() + private static void reload() { + installedMachines.clear(); IExtensionRegistry registry = Platform.getExtensionRegistry(); System.out.println(Arrays.toString(registry.getExtensionPoints("net.mograsim.machine"))); IConfigurationElement[] config = registry.getConfigurationElementsFor(MACHINE_EXT_ID); @@ -45,8 +48,45 @@ public class MachineRegistry } } - public static Map getinstalledMachines() + public static void initialize() + { + reload(); + Platform.getExtensionRegistry().addListener(new IRegistryEventListener() + { + + @Override + public void removed(IExtensionPoint[] extensionPoints) + { + // nothing? + } + + @Override + public void removed(IExtension[] extensions) + { + reload(); + } + + @Override + public void added(IExtensionPoint[] extensionPoints) + { + // nothing? + } + + @Override + public void added(IExtension[] extensions) + { + reload(); + } + }, MACHINE_EXT_ID); + } + + public static Map getInstalledMachines() { return Collections.unmodifiableMap(installedMachines); } + + public static MachineDefinition getMachine(String id) + { + return installedMachines.get(id); + } }