Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/src/org/eclipse/bpmn2/modeler/examples/dynamic/SampleImageProvider.java')
-rw-r--r--examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/src/org/eclipse/bpmn2/modeler/examples/dynamic/SampleImageProvider.java120
1 files changed, 120 insertions, 0 deletions
diff --git a/examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/src/org/eclipse/bpmn2/modeler/examples/dynamic/SampleImageProvider.java b/examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/src/org/eclipse/bpmn2/modeler/examples/dynamic/SampleImageProvider.java
new file mode 100644
index 00000000..f1606986
--- /dev/null
+++ b/examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/src/org/eclipse/bpmn2/modeler/examples/dynamic/SampleImageProvider.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2012, 2013 Red Hat, Inc.
+ * All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.bpmn2.modeler.examples.dynamic;
+
+import java.net.URL;
+
+import org.eclipse.bpmn2.modeler.core.runtime.CustomTaskDescriptor;
+import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntime;
+import org.eclipse.graphiti.mm.GraphicsAlgorithmContainer;
+import org.eclipse.graphiti.mm.algorithms.Image;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.internal.GraphitiUIPlugin;
+import org.eclipse.graphiti.ui.platform.AbstractImageProvider;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+
+/**
+ * Image provider class for our Custom Task extensions.
+ *
+ * TODO: In Kepler, this may change at which time we can register these icons
+ * in the plugin.xml as a Graphiti extension point. If this doesn't happen,
+ * we should probably consider pushing image registration up to the core editor.
+ *
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=366452
+ * @author bbrodt
+ */
+public class SampleImageProvider extends AbstractImageProvider {
+
+ public final static String IMAGE_ID_PREFIX =
+ SampleImageProvider.class.getPackage().getName() + ".";
+ public final static String ICONS_FOLDER = "icons/";
+
+ // Sneaky tip: The values of this enum correspond to the subfolder names in "icons"
+ public enum IconSize {
+ SMALL("small"),
+ LARGE("large"),
+ HUGE("huge");
+ private String value;
+ private IconSize(String value) {
+ this.value = value;
+ }
+ }
+ private static boolean registered = false;
+
+ public SampleImageProvider() {
+ super();
+ }
+
+ public static void registerAvailableImages() {
+ if (!registered) {
+ ImageRegistry imageRegistry = GraphitiUIPlugin.getDefault().getImageRegistry();
+ TargetRuntime rt = TargetRuntime.getRuntime(SampleRuntimeExtension.RUNTIME_ID);
+ for (IconSize size : IconSize.values()) {
+ for (CustomTaskDescriptor ctd : rt.getCustomTaskDescriptors()) {
+ String imageId = getImageId(ctd,size);
+ if (imageId != null) {
+ String filename = getImagePath(ctd,size);
+ URL url = SampleImageProvider.class.getClassLoader().getResource(filename);
+ ImageDescriptor descriptor = ImageDescriptor.createFromURL(url);
+ imageRegistry.put(imageId, descriptor);
+ }
+ }
+ }
+ registered = true;
+ }
+ }
+
+ @Override
+ protected void addAvailableImages() {
+ TargetRuntime rt = TargetRuntime.getRuntime(SampleRuntimeExtension.RUNTIME_ID);
+ for (IconSize size : IconSize.values()) {
+ for (CustomTaskDescriptor ctd : rt.getCustomTaskDescriptors()) {
+ String imageId = getImageId(ctd,size);
+ if (imageId != null) {
+ addImageFilePath(imageId, getImagePath(ctd,size));
+ }
+ }
+ }
+ }
+
+ public static Image createImage(GraphicsAlgorithmContainer ga, CustomTaskDescriptor ctd, int w, int h) {
+ // To create an image of a specific size, use the "huge" versions
+ // to prevent pixelation when stretching a small image
+ String imageId = getImageId(ctd, IconSize.HUGE);
+ Image img = null;
+ if (imageId != null) {
+ img = Graphiti.getGaService().createImage(ga, imageId);
+ img.setProportional(false);
+ img.setWidth(w);
+ img.setHeight(h);
+ img.setStretchH(true);
+ img.setStretchV(true);
+ }
+ return img;
+ }
+
+ public static String getImageId(CustomTaskDescriptor ctd, IconSize size) {
+ String icon = (String) ctd.getPropertyValue("icon");
+ if (icon != null && icon.trim().length() > 0) {
+ return IMAGE_ID_PREFIX + icon.trim() + "." + size.value;
+ }
+ return null;
+ }
+
+ public static String getImagePath(CustomTaskDescriptor ctd, IconSize size) {
+ String icon = (String) ctd.getPropertyValue("icon");
+ if (icon != null && icon.trim().length() > 0) {
+ return ICONS_FOLDER + size.value + "/" + icon.trim();
+ }
+ return null;
+ }
+}

Back to the top