| package ca.ubc.mylar; |
| |
| import java.io.*; |
| import java.util.MissingResourceException; |
| import java.util.ResourceBundle; |
| |
| import org.eclipse.core.resources.ResourcesPlugin; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider; |
| import org.eclipse.jface.dialogs.ErrorDialog; |
| import org.eclipse.jface.preference.IPreferenceStore; |
| import org.eclipse.ui.internal.Workbench; |
| import org.eclipse.ui.plugin.AbstractUIPlugin; |
| |
| import ca.ubc.mylar.model.DoiModelManager; |
| import ca.ubc.mylar.monitor.UsageStatisticsManager; |
| |
| /** |
| * The main plugin class to be used in the desktop. |
| */ |
| public class MylarPlugin extends AbstractUIPlugin { |
| |
| public static boolean DEBUG_MODE = false; |
| public static final String LOG_FILE_NAME = "mylar-log.txt"; |
| |
| private static boolean enabled = true; |
| |
| private static MylarPlugin plugin; |
| private static UserSelectionListener userSelectionListneer = new UserSelectionListener(); |
| private static DoiModelManager modelManager = new DoiModelManager(); |
| private static UsageStatisticsManager statisticsManager = new UsageStatisticsManager(); |
| |
| private static PrintStream logStream; |
| |
| //Resource bundle. |
| private ResourceBundle resourceBundle; |
| private JavaElementImageProvider javaImageProvider; |
| |
| public static DoiModelManager getModelManager() { |
| return modelManager; |
| } |
| |
| static { |
| IPath rootPath = ResourcesPlugin.getWorkspace().getRoot().getLocation(); |
| String path = rootPath.toString() + File.separator + LOG_FILE_NAME; |
| try { |
| logStream = new PrintStream(new FileOutputStream(new File(path), true)); |
| } catch (FileNotFoundException e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| /** |
| * The constructor. |
| */ |
| public MylarPlugin() { |
| super(); |
| plugin = this; |
| try { |
| resourceBundle = ResourceBundle.getBundle("ca.ubc.mylar.MylarPluginResources"); |
| javaImageProvider = new JavaElementImageProvider(); |
| } catch (MissingResourceException x) { |
| resourceBundle = null; |
| } catch (Throwable t) { |
| System.err.println("> Mylar failed to start: " + t.getMessage()); |
| t.printStackTrace(); |
| } |
| } |
| |
| /** |
| * Returns the shared instance. |
| */ |
| public static MylarPlugin getDefault() { |
| return plugin; |
| } |
| |
| public static IPreferenceStore getPrefs() { |
| return getDefault().getPreferenceStore(); |
| } |
| |
| public static void log(Object source, String message) { |
| StringBuffer buffer = new StringBuffer(); |
| buffer.append("["); |
| buffer.append(Util.getFormattedDate()); |
| buffer.append(", "); |
| buffer.append(Util.getFormattedTime()); |
| buffer.append("] "); |
| |
| if (source != null) buffer.append(source.getClass().getName()); |
| buffer.append(": " + message); |
| |
| if (DEBUG_MODE) System.out.println(buffer.toString()); |
| if (logStream != null) logStream.println(buffer.toString()); |
| } |
| |
| /** |
| * @param throwable can be null |
| * @param message |
| */ |
| public static void fail(Throwable throwable, String message) { |
| StringWriter stringWriter= new StringWriter(); |
| PrintWriter writer= new PrintWriter(stringWriter); |
| StringBuffer buffer = new StringBuffer(); |
| if (throwable != null) { |
| throwable.printStackTrace(writer); |
| buffer = stringWriter.getBuffer(); |
| } |
| log(MylarPlugin.getDefault(), "fail: " + message + "\n" + buffer.toString()); |
| |
| final Status status= new Status( |
| Status.ERROR, |
| "ca.ubc.mylar", |
| Status.OK, |
| message, //$NON-NLS-1$ |
| throwable); |
| |
| Workbench.getInstance().getDisplay().syncExec(new Runnable() { |
| public void run() { |
| ErrorDialog.openError( |
| Workbench.getInstance().getActiveWorkbenchWindow().getShell(), |
| "Mylar error", |
| "Please report the following error", |
| status); |
| } |
| }); |
| } |
| |
| /** |
| * Returns the string from the plugin's resource bundle, |
| * or 'key' if not found. |
| */ |
| public static String getResourceString(String key) { |
| ResourceBundle bundle = MylarPlugin.getDefault().getResourceBundle(); |
| try { |
| return (bundle != null) ? bundle.getString(key) : key; |
| } catch (MissingResourceException e) { |
| return key; |
| } |
| } |
| |
| /** |
| * Returns the string from the plugin's resource bundle, |
| * or 'key' if not found. |
| */ |
| public static String getMessage(String key) { |
| ResourceBundle bundle = 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 static UsageStatisticsManager getStatisticsManager() { |
| return statisticsManager; |
| } |
| |
| /** |
| * For testing. |
| */ |
| public static UserSelectionListener getUserSelectionListneer() { |
| return userSelectionListneer; |
| } |
| |
| public static boolean isEnabled() { |
| return enabled; |
| } |
| public static void setEnabled(boolean enabled) { |
| MylarPlugin.enabled = enabled; |
| } |
| } |