1 package com.stateofflow.eclipse.metrics;
2
3 import java.util.MissingResourceException;
4 import java.util.ResourceBundle;
5
6 import org.eclipse.core.resources.IWorkspaceRoot;
7 import org.eclipse.core.resources.ResourcesPlugin;
8 import org.eclipse.core.runtime.IPluginDescriptor;
9 import org.eclipse.core.runtime.IStatus;
10 import org.eclipse.core.runtime.Status;
11 import org.eclipse.ui.plugin.AbstractUIPlugin;
12
13 import com.stateofflow.eclipse.metrics.configuration.MetricPresentations;
14 import com.stateofflow.eclipse.metrics.configuration.MetricsConfiguration;
15 import com.stateofflow.eclipse.metrics.factory.DefaultMetricsFactory;
16 import com.stateofflow.eclipse.metrics.factory.MetricsFactory;
17 import com.stateofflow.eclipse.metrics.preferences.DefaultInitialiser;
18 import com.stateofflow.eclipse.metrics.preferences.PreferenceStoreMetricsConfiguration;
19
20 public final class MetricsPlugin extends AbstractUIPlugin {
21 public static final String PLUGIN_ID = "com.stateofflow.eclipse.metrics.MetricsPlugin";
22
23 private static MetricsPlugin plugin;
24
25 public static MetricsFactory getFactory() {
26 return new DefaultMetricsFactory(getConfigurations(), getPresentations());
27 }
28
29 private static MetricsConfiguration getConfigurations() {
30 return new PreferenceStoreMetricsConfiguration(getDefault().getPreferenceStore());
31 }
32
33 private static MetricPresentations getPresentations() {
34 return new MetricPresentations(getDefault().getResourceBundle());
35 }
36
37 public static MetricsPlugin getDefault() {
38 return plugin;
39 }
40
41 public static IWorkspaceRoot getWorkspaceRoot() {
42 return ResourcesPlugin.getWorkspace().getRoot();
43 }
44
45 private static void log(final IStatus status) {
46 getDefault().getLog().log(status);
47 }
48
49 public static void log(final String message) {
50 log(new Status(IStatus.OK, MetricsPlugin.PLUGIN_ID, message));
51 }
52
53 public static void log(final Throwable ex) {
54 log("Caught exception", ex);
55 }
56
57 public static void log(final String message, final Throwable ex) {
58 log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, message, ex));
59 }
60
61 private ResourceBundle resourceBundle;
62
63 public MetricsPlugin(final IPluginDescriptor pluginDescriptor) {
64 super(pluginDescriptor);
65
66 MetricsPlugin.plugin = this;
67 initialiseResourceBundle();
68 initialisePreferences();
69 }
70
71 private ResourceBundle getResourceBundle() {
72 return resourceBundle;
73 }
74
75 private void initialisePreferences() {
76 new DefaultInitialiser(getPreferenceStore()).initialise();
77 savePluginPreferences();
78 }
79
80 private void initialiseResourceBundle() {
81 try {
82 resourceBundle = ResourceBundle.getBundle("com.stateofflow.eclipse.metrics.MetricsPluginResources");
83 } catch (final MissingResourceException x) {
84 resourceBundle = null;
85 }
86 }
87 }
88