Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrescobar2010-08-26 23:53:12 +0000
committerrescobar2010-08-26 23:53:12 +0000
commit8c41455314d66f4abcd576892a01fe9283572fc2 (patch)
treeea293f8e6cadb62edafeadcae331ebe145a40518 /plugins
parent3194500ef6b9dcdc2f963909a0f250cd4d43fb80 (diff)
downloadorg.eclipse.osee-8c41455314d66f4abcd576892a01fe9283572fc2.tar.gz
org.eclipse.osee-8c41455314d66f4abcd576892a01fe9283572fc2.tar.xz
org.eclipse.osee-8c41455314d66f4abcd576892a01fe9283572fc2.zip
Cleanup renderer code.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OpenWithContributionItem.java84
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/DefaultArtifactRenderer.java3
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/RendererManager.java58
3 files changed, 75 insertions, 70 deletions
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OpenWithContributionItem.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OpenWithContributionItem.java
index a219632cd99..6c499ffde04 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OpenWithContributionItem.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OpenWithContributionItem.java
@@ -11,8 +11,11 @@
package org.eclipse.osee.framework.ui.skynet;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import java.util.logging.Level;
import org.eclipse.core.commands.Command;
import org.eclipse.jface.action.IContributionItem;
@@ -60,6 +63,14 @@ import org.eclipse.ui.menus.CommandContributionItemParameter;
* @author Jeff C. Phillips
*/
public class OpenWithContributionItem extends CompoundContributionItem {
+
+ //@formatter:off
+ private static final PresentationType[] OPEN_WITH_PRESENTATION_TYPES = new PresentationType[] {
+ PresentationType.PREVIEW,
+ PresentationType.SPECIALIZED_EDIT
+ };
+ //@formatter:on
+
private ICommandService commandService;
public OpenWithContributionItem() {
@@ -75,58 +86,61 @@ public class OpenWithContributionItem extends CompoundContributionItem {
ArrayList<IContributionItem> contributionItems = new ArrayList<IContributionItem>(40);
List<Artifact> artifacts = getSelectedArtifacts();
if (artifacts != null && !artifacts.isEmpty()) {
+
+ Artifact testArtifact = artifacts.iterator().next();
+
try {
- contributionItems.addAll(getCommonContributionItems(artifacts, PresentationType.PREVIEW));
- //add separator between preview and edit commands
- if (!contributionItems.isEmpty()) {
- contributionItems.add(new Separator());
+ for (int index = 0; index < OPEN_WITH_PRESENTATION_TYPES.length; index++) {
+ PresentationType openWithType = OPEN_WITH_PRESENTATION_TYPES[index];
+ List<IRenderer> commonRenders = RendererManager.getCommonRenderers(artifacts, openWithType);
+ contributionItems.addAll(getCommonContributionItems(openWithType, testArtifact, commonRenders));
+
+ if (index + 1 < OPEN_WITH_PRESENTATION_TYPES.length && !contributionItems.isEmpty()) {
+ //add separator between presentation type commands
+ contributionItems.add(new Separator());
+ }
}
- contributionItems.addAll(getCommonContributionItems(artifacts, PresentationType.SPECIALIZED_EDIT));
} catch (OseeCoreException ex) {
OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, ex);
}
}
-
return contributionItems.toArray(new IContributionItem[0]);
}
- private ArrayList<IContributionItem> getCommonContributionItems(List<Artifact> artifacts, PresentationType presentationType) throws OseeCoreException {
- ArrayList<IContributionItem> contributionItems = new ArrayList<IContributionItem>(25);
- List<IRenderer> commonRenders = RendererManager.getCommonRenderers(artifacts, presentationType);
- Artifact firstArtifact = artifacts.iterator().next();
- for (IRenderer render : commonRenders) {
- ImageDescriptor imageDescriptor = null;
- if (render instanceof WordRenderer) {
- imageDescriptor = WordRenderer.getImageDescriptor();
- } else if (render instanceof NativeRenderer) {
- String fileExtension = firstArtifact.getSoleAttributeValue(CoreAttributeTypes.Extension);
- if (Strings.isValid(fileExtension)) {
- imageDescriptor = ImageManager.getProgramImageDescriptor(fileExtension);
+ private Collection<IContributionItem> getCommonContributionItems(PresentationType presentationType, Artifact testArtifact, Collection<IRenderer> commonRenders) throws OseeCoreException {
+ Map<String, IContributionItem> contributedItems = new LinkedHashMap<String, IContributionItem>(25);
+ for (IRenderer renderer : commonRenders) {
+ for (String commandId : renderer.getCommandId(presentationType)) {
+ Command command = commandService.getCommand(commandId);
+ if (command != null && command.isEnabled()) {
+ ImageDescriptor imageDescriptor = getRenderImageDescriptor(renderer, testArtifact);
+ IContributionItem item = createContributionItem(commandId, imageDescriptor);
+ contributedItems.put(commandId, item);
}
}
- List<IContributionItem> commandList = loadCommands(render, presentationType, imageDescriptor);
- contributionItems.addAll(commandList);
}
- return contributionItems;
+ return contributedItems.values();
}
- private ArrayList<IContributionItem> loadCommands(IRenderer renderer, PresentationType presentationType, ImageDescriptor imageDescriptor) {
- ArrayList<IContributionItem> contributionItems = new ArrayList<IContributionItem>(25);
- CommandContributionItem contributionItem = null;
-
- for (String commandId : renderer.getCommandId(presentationType)) {
- contributionItem =
- new CommandContributionItem(new CommandContributionItemParameter(
- PlatformUI.getWorkbench().getActiveWorkbenchWindow(), commandId, commandId, Collections.emptyMap(),
- imageDescriptor, null, null, null, null, null, SWT.NONE, null, false));
-
- Command command = commandService.getCommand(contributionItem.getId());
- if (command != null && command.isEnabled()) {
- contributionItems.add(contributionItem);
+ private ImageDescriptor getRenderImageDescriptor(IRenderer renderer, Artifact testArtifact) throws OseeCoreException {
+ ImageDescriptor imageDescriptor = null;
+ if (renderer instanceof WordRenderer) {
+ imageDescriptor = WordRenderer.getImageDescriptor();
+ } else if (renderer instanceof NativeRenderer) {
+ String fileExtension = testArtifact.getSoleAttributeValue(CoreAttributeTypes.Extension);
+ if (Strings.isValid(fileExtension)) {
+ imageDescriptor = ImageManager.getProgramImageDescriptor(fileExtension);
}
}
+ return imageDescriptor;
+ }
- return contributionItems;
+ private IContributionItem createContributionItem(String commandId, ImageDescriptor imageDescriptor) {
+ IContributionItem contributionItem =
+ new CommandContributionItem(new CommandContributionItemParameter(
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow(), commandId, commandId, Collections.emptyMap(),
+ imageDescriptor, null, null, null, null, null, SWT.NONE, null, false));
+ return contributionItem;
}
@Override
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/DefaultArtifactRenderer.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/DefaultArtifactRenderer.java
index 4160e35dd40..083b9ebf6ee 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/DefaultArtifactRenderer.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/DefaultArtifactRenderer.java
@@ -91,7 +91,6 @@ public class DefaultArtifactRenderer implements IRenderer {
return new DefaultArtifactRenderer();
}
- @SuppressWarnings("unused")
@Override
public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) throws OseeCoreException {
if (presentationType == GENERALIZED_EDIT) {
@@ -159,7 +158,7 @@ public class DefaultArtifactRenderer implements IRenderer {
@Override
public List<String> getCommandId(PresentationType presentationType) {
- ArrayList<String> commandIds = new ArrayList<String>(2);
+ ArrayList<String> commandIds = new ArrayList<String>(1);
if (presentationType == PresentationType.SPECIALIZED_EDIT) {
commandIds.add("org.eclipse.osee.framework.ui.skynet.artifacteditor.command");
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/RendererManager.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/RendererManager.java
index 9d5c25e1645..3b29c7b67e6 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/RendererManager.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/RendererManager.java
@@ -12,19 +12,16 @@
package org.eclipse.osee.framework.ui.skynet.render;
import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.DEFAULT_OPEN;
-import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
-import java.util.logging.Level;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.osee.framework.core.data.IAttributeType;
import org.eclipse.osee.framework.core.exception.OseeArgumentException;
@@ -34,8 +31,7 @@ import org.eclipse.osee.framework.core.model.type.AttributeType;
import org.eclipse.osee.framework.core.operation.IOperation;
import org.eclipse.osee.framework.core.operation.Operations;
import org.eclipse.osee.framework.jdk.core.type.HashCollection;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.plugin.core.util.ExtensionPoints;
+import org.eclipse.osee.framework.plugin.core.util.ExtensionDefinedObjects;
import org.eclipse.osee.framework.skynet.core.UserManager;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.change.ArtifactDelta;
@@ -48,12 +44,13 @@ import org.eclipse.osee.framework.ui.skynet.render.word.Producer;
/**
* @author Ryan D. Brooks
*/
-public class RendererManager {
- private static final RendererManager instance = new RendererManager();
- private final HashMap<String, IRenderer> renderers = new HashMap<String, IRenderer>(40);
+public final class RendererManager {
+
+ private static final Map<String, IRenderer> RENDERER_MAP = new ConcurrentHashMap<String, IRenderer>(40);
+ private static boolean firstTimeThrough = true;
private RendererManager() {
- registerRendersFromExtensionPoints();
+ // Utility Class
}
/**
@@ -91,25 +88,19 @@ public class RendererManager {
/**
* Maps all renderers in the system to their applicable artifact types
*/
- @SuppressWarnings("unchecked")
- private void registerRendersFromExtensionPoints() {
- List<IConfigurationElement> elements =
- ExtensionPoints.getExtensionElements(SkynetGuiPlugin.getInstance(), "ArtifactRenderer", "Renderer");
-
- for (IConfigurationElement element : elements) {
- String classname = element.getAttribute("classname");
- String bundleName = element.getContributor().getName();
- try {
- Class<IRenderer> clazz = Platform.getBundle(bundleName).loadClass(classname);
- Constructor<IRenderer> constructor = clazz.getConstructor();
- IRenderer renderer = constructor.newInstance();
- renderers.put(renderer.getClass().getCanonicalName(), renderer);
- } catch (Exception ex) {
- OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, ex);
- } catch (NoClassDefFoundError er) {
- OseeLog.log(SkynetGuiPlugin.class, Level.WARNING,
- "Failed to find a class definition for " + classname + ", registered from bundle " + bundleName, er);
- }
+ private static synchronized void ensurePopulated() {
+ if (firstTimeThrough) {
+ firstTimeThrough = false;
+ registerRendersFromExtensionPoints();
+ }
+ }
+
+ private static void registerRendersFromExtensionPoints() {
+ ExtensionDefinedObjects<IRenderer> contributions =
+ new ExtensionDefinedObjects<IRenderer>(SkynetGuiPlugin.PLUGIN_ID + ".ArtifactRenderer", "Renderer",
+ "classname");
+ for (IRenderer renderer : contributions.getObjects()) {
+ RENDERER_MAP.put(renderer.getClass().getCanonicalName(), renderer);
}
}
@@ -138,7 +129,8 @@ public class RendererManager {
}
IRenderer bestRendererPrototype = null;
int bestRating = IRenderer.NO_MATCH;
- for (IRenderer renderer : instance.renderers.values()) {
+ ensurePopulated();
+ for (IRenderer renderer : RENDERER_MAP.values()) {
int rating = renderer.getApplicabilityRating(presentationType, artifact);
if (rating > bestRating) {
bestRendererPrototype = renderer;
@@ -164,8 +156,8 @@ public class RendererManager {
public static List<IRenderer> getApplicableRenderers(PresentationType presentationType, Artifact artifact, VariableMap options) throws OseeCoreException {
ArrayList<IRenderer> renderers = new ArrayList<IRenderer>();
int minimumRanking = getBestRenderer(presentationType, artifact, options).minimumRanking();
-
- for (IRenderer prototypeRenderer : instance.renderers.values()) {
+ ensurePopulated();
+ for (IRenderer prototypeRenderer : RENDERER_MAP.values()) {
// Add Catch Exception Code --
int rating = prototypeRenderer.getApplicabilityRating(presentationType, artifact);

Back to the top