--- /dev/null
+package org.simantics.tests.modelled.ui;\r
+\r
+import java.net.URL;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.swt.graphics.Image;\r
+import org.eclipse.ui.plugin.AbstractUIPlugin;\r
+import org.osgi.framework.BundleContext;\r
+\r
+/**\r
+ * The activator class controls the plug-in life cycle\r
+ */\r
+public class Activator extends AbstractUIPlugin {\r
+\r
+ // The plug-in ID\r
+ public static final String PLUGIN_ID = "org.simantics.tests.modelled.ui"; //$NON-NLS-1$\r
+\r
+ // The shared instance\r
+ private static Activator plugin;\r
+ \r
+ /**\r
+ * The constructor\r
+ */\r
+ public Activator() {\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)\r
+ */\r
+ public void start(BundleContext context) throws Exception {\r
+ super.start(context);\r
+ plugin = this;\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)\r
+ */\r
+ public void stop(BundleContext context) throws Exception {\r
+ plugin = null;\r
+ for (Image image : imagesToDispose)\r
+ image.dispose();\r
+ super.stop(context);\r
+ }\r
+\r
+ /**\r
+ * Returns the shared instance\r
+ *\r
+ * @return the shared instance\r
+ */\r
+ public static Activator getDefault() {\r
+ return plugin;\r
+ }\r
+\r
+ public static ImageDescriptor getImageDescriptor(String relativePath) {\r
+ URL url = getDefault().getBundle().getEntry(relativePath);\r
+ return ImageDescriptor.createFromURL(url);\r
+ }\r
+ \r
+ private static List<Image> imagesToDispose = new ArrayList<>();\r
+\r
+ public static Image createManagedImage(ImageDescriptor descriptor) {\r
+ Image image= descriptor.createImage();\r
+ if (image == null) {\r
+ image= ImageDescriptor.getMissingImageDescriptor().createImage();\r
+ }\r
+ imagesToDispose.add(image);\r
+ return image;\r
+ }\r
+}\r