package org.codemap; import org.codemap.communication.ECFContribution; import org.codemap.mapview.MapController; import org.codemap.util.ColorScheme; import org.codemap.util.EclipseTaskFactory; import org.codemap.util.MColor; import org.codemap.util.MapScheme; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; import ch.akuhn.values.TaskValue; /** * Single instance of the running Codemap plug-in. * */ public class CodemapCore extends AbstractUIPlugin { public static final String PLUGIN_ID = CodemapCore.class.getPackage().getName(); private static CodemapCore THE_PLUGIN; private MapController theController; public final MapSelection youAreHereSelection; public final MapSelection openFilesSelection; public final MapSelection currentSelection; private ECFContribution ecfContrib; private ColorScheme colorScheme; public MapSelection getYouAreHereSelection() { return youAreHereSelection; } public MapSelection getOpenFilesSelection() { return openFilesSelection; } public MapSelection getCurrentSelection() { return currentSelection; } public CodemapCore() { TaskValue.setTaskFactory(new EclipseTaskFactory()); youAreHereSelection = new MapSelection(); openFilesSelection = new MapSelection(); currentSelection = new MapSelection(); colorScheme = ColorScheme.colors(); } @Override public void start(BundleContext context) throws Exception { super.start(context); THE_PLUGIN = this; try { ecfContrib = new ECFContribution().start(context); } catch (NoClassDefFoundError e) { // nothing } } @Override public void stop(BundleContext context) throws Exception { if (ecfContrib != null) { ecfContrib.stop(); } THE_PLUGIN = null; super.stop(context); } public static CodemapCore getPlugin() { return THE_PLUGIN; } public final static String makeID(Class<?> javaClass) { return PLUGIN_ID + "." + javaClass.getSimpleName(); } public MapPerProject getActiveMap() { if (theController == null) return null; return theController.getActiveMap(); } public MapScheme<MColor> getDefaultColorScheme() { return new MapScheme<MColor>(getColorScheme().getHillColor()); } public void register(MapController mapController) { setMapController(mapController); } public void unregister(MapController mapController) { setMapController(null); } private void setMapController(MapController mapController) { theController = mapController; } public MapController getController() { return theController; } public ColorScheme getColorScheme() { return colorScheme; } public static ColorScheme colorScheme() { return CodemapCore.getPlugin().getColorScheme(); } }