package org.jactr.eclipse.runtime; import java.util.MissingResourceException; import java.util.ResourceBundle; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Plugin; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.ui.preferences.ScopedPreferenceStore; import org.jactr.core.concurrent.ExecutorServices; import org.jactr.eclipse.runtime.marker.MarkerIndexSessionListener; import org.jactr.eclipse.runtime.marker.MarkerRuntimeTraceListener; import org.jactr.eclipse.runtime.production2.ConflictResolutionRuntimeTraceListener; import org.jactr.eclipse.runtime.session.manager.ISessionManager; import org.jactr.eclipse.runtime.session.manager.internal.SessionManager; import org.jactr.eclipse.runtime.trace.RuntimeTraceManager; import org.jactr.eclipse.runtime.visual.VisualTraceCenter; import org.jactr.eclipse.ui.concurrent.SWTExecutor; import org.osgi.framework.BundleContext; /** * The main plugin class to be used in the desktop. */ public class RuntimePlugin extends Plugin { static public final String PLUGIN_ID = "org.jactr.eclipse.runtime.RuntimePlugin"; // The shared instance. private static RuntimePlugin plugin; // Resource bundle. private ResourceBundle resourceBundle; /** * Storage for preferences. */ private ScopedPreferenceStore preferenceStore; private RuntimeTraceManager _runtimeTraceManager; private SessionManager _sessionManager; /** * The constructor. */ public RuntimePlugin() { super(); try { resourceBundle = ResourceBundle .getBundle("org.jactr.eclipse.runtime.RuntimePluginResources"); } catch (MissingResourceException x) { resourceBundle = null; } } /** * This method is called upon plug-in activation */ @Override public void start(BundleContext context) throws Exception { super.start(context); _sessionManager = new SessionManager(); _sessionManager.addListener(new MarkerIndexSessionListener(), ExecutorServices.INLINE_EXECUTOR); _runtimeTraceManager = new RuntimeTraceManager(); plugin = this; /* * always listen for log */ // _runtimeTraceManager.addListener(ModelLoggingCenter.get() // .getRuntimeListener()); // _runtimeTraceManager.addListener(new BufferTraceListener()); _runtimeTraceManager.addListener(VisualTraceCenter.get() .getRuntimeListener()); // _runtimeTraceManager // .addListener(ProbeDataManager.get() // .getRuntimeListener()); // _runtimeTraceManager.addListener(new ProductionTraceListener()); _runtimeTraceManager .addListener(new org.jactr.eclipse.runtime.session.data.RuntimeTraceListener()); _runtimeTraceManager .addListener(new org.jactr.eclipse.runtime.log2.LogRuntimeTraceListener()); _runtimeTraceManager .addListener(new org.jactr.eclipse.runtime.buffer2.BufferRuntimeTraceListener()); _runtimeTraceManager .addListener(new ConflictResolutionRuntimeTraceListener()); // _runtimeTraceManager // .addListener(new // org.jactr.eclipse.runtime.probe2.ModelProbeRuntimeListener()); // must be run on SWT thread for the probe data storage _runtimeTraceManager.addListener( new org.jactr.eclipse.runtime.probe3.ModelProbeRuntimeListener(), new SWTExecutor()); _runtimeTraceManager.addListener(new MarkerRuntimeTraceListener()); } /** * This method is called when the plug-in is stopped */ @Override public void stop(BundleContext context) throws Exception { super.stop(context); if (preferenceStore != null) preferenceStore.save(); _runtimeTraceManager.clear(); _runtimeTraceManager = null; plugin = null; } public RuntimeTraceManager getRuntimeTraceManager() { return _runtimeTraceManager; } public ISessionManager getSessionManager() { return _sessionManager; } /** * Returns the shared instance. */ public static RuntimePlugin getDefault() { return plugin; } static public void info(String message) { info(message, null); } static public void info(String message, Throwable thrown) { log(IStatus.INFO, message, thrown); } static public void warn(String message) { warn(message, null); } static public void warn(String message, Throwable thrown) { log(IStatus.WARNING, message, thrown); } static public void error(String message) { error(message, null); } static public void error(String message, Throwable thrown) { log(IStatus.ERROR, message, thrown); } static public void log(int severity, String message, Throwable thrown) { getDefault().getLog().log(new Status(severity, PLUGIN_ID, message, thrown)); } /** * Returns the string from the plugin's resource bundle, or 'key' if not * found. */ public static String getResourceString(String key) { ResourceBundle bundle = RuntimePlugin.getDefault().getResourceBundle(); try { return bundle != null ? bundle.getString(key) : key; } catch (MissingResourceException e) { return key; } } /** * Returns the plugin's resource bundle, */ public ResourceBundle getResourceBundle() { return resourceBundle; } public IPreferenceStore getPreferenceStore() { // Create the preference store lazily. if (preferenceStore == null) preferenceStore = new ScopedPreferenceStore(new InstanceScope(), getBundle().getSymbolicName()); return preferenceStore; } }