Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeo Dos Santos2013-12-16 21:55:32 +0000
committerGerrit Code Review @ Eclipse.org2014-01-21 21:11:33 +0000
commit2ee34447ece6defdc170aea9168145894465dce7 (patch)
treea514aa0b87b1763d6219cb7b734c4631053c4f03 /org.eclipse.mylyn.tasks.ui
parentf6291e4a1d8816da3f33e9241294dd0102b74e28 (diff)
downloadorg.eclipse.mylyn.tasks-2ee34447ece6defdc170aea9168145894465dce7.tar.gz
org.eclipse.mylyn.tasks-2ee34447ece6defdc170aea9168145894465dce7.tar.xz
org.eclipse.mylyn.tasks-2ee34447ece6defdc170aea9168145894465dce7.zip
424188: Task attributes that set META_ATTRIBUTE_MEDIA_TYPE should be
displayed with the correct markup viewer when available. Change-Id: Iad8f6f1070d6572702c9e5f71aaebcb8c91e776d Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=424188 Signed-off-by: Leo Dos Santos <leo.dos.santos@tasktop.com>
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
-rw-r--r--org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF3
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorExtensions.java42
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AttributeEditorFactory.java3
3 files changed, 46 insertions, 2 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF
index cc1abb518..9ae5082bb 100644
--- a/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF
@@ -31,7 +31,8 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.mylyn.commons.workbench;bundle-version="3.8.0",
org.eclipse.mylyn.monitor.core;bundle-version="3.8.0",
org.eclipse.mylyn.monitor.ui;bundle-version="3.8.0",
- org.eclipse.mylyn.tasks.core;bundle-version="3.8.0"
+ org.eclipse.mylyn.tasks.core;bundle-version="3.8.0",
+ com.google.guava;bundle-version="12.0.0"
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %Bundle-Vendor
Export-Package: org.eclipse.mylyn.internal.provisional.tasks.ui.wizards;x-internal:=true,
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorExtensions.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorExtensions.java
index 5b2c06db3..50d069cff 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorExtensions.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorExtensions.java
@@ -12,6 +12,7 @@
package org.eclipse.mylyn.internal.tasks.ui.editors;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -22,10 +23,14 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.tasks.core.TaskRepository;
+import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorExtension;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
import org.eclipse.ui.IPluginContribution;
+import com.google.common.collect.Multimap;
+import com.google.common.net.MediaType;
+
/**
* @author David Green
*/
@@ -35,6 +40,8 @@ public class TaskEditorExtensions {
public static final String REPOSITORY_PROPERTY_AVATAR_SUPPORT = "avatarSupport"; //$NON-NLS-1$
+ private static final String MARKUP_KEY = "markup"; //$NON-NLS-1$
+
private static Map<String, RegisteredTaskEditorExtension> extensionsById = new HashMap<String, RegisteredTaskEditorExtension>();
private static Map<String, String> associationByConnectorKind = new HashMap<String, String>();
@@ -99,6 +106,41 @@ public class TaskEditorExtensions {
return null;
}
+ /**
+ * get a task editor extension for a specific task attribute
+ *
+ * @param taskRepository
+ * @param taskAttribute
+ * @return the extension, or null if there is none
+ * @see #getTaskEditorExtension(TaskRepository);
+ * @since 3.11
+ */
+ public static AbstractTaskEditorExtension getTaskEditorExtension(TaskRepository taskRepository,
+ TaskAttribute taskAttribute) {
+ init();
+ String input = taskAttribute.getMetaData().getMediaType();
+ if (input != null) {
+ try {
+ MediaType media = MediaType.parse(input);
+ Multimap<String, String> parameters = media.parameters();
+ if (parameters.containsKey(MARKUP_KEY)) {
+ Iterator<String> iter = parameters.get(MARKUP_KEY).iterator();
+ String markup = iter.next();
+ SortedSet<RegisteredTaskEditorExtension> extensions = getTaskEditorExtensions();
+ for (RegisteredTaskEditorExtension extension : extensions) {
+ if (markup.equals(extension.getName())) {
+ return extension.getExtension();
+ }
+ }
+ }
+ } catch (IllegalArgumentException e) {
+ StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, String.format(
+ "Unable to parse markup type for attribute %s", taskAttribute.toString()), e)); //$NON-NLS-1$
+ }
+ }
+ return getTaskEditorExtension(taskRepository);
+ }
+
public static String getTaskEditorExtensionId(TaskRepository taskRepository) {
init();
String id = taskRepository.getProperty(REPOSITORY_PROPERTY_EDITOR_EXTENSION);
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AttributeEditorFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AttributeEditorFactory.java
index 369aae159..040ba78dc 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AttributeEditorFactory.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AttributeEditorFactory.java
@@ -101,7 +101,8 @@ public class AttributeEditorFactory {
if (serviceLocator != null) {
IContextService contextService = (IContextService) serviceLocator.getService(IContextService.class);
if (contextService != null) {
- AbstractTaskEditorExtension extension = TaskEditorExtensions.getTaskEditorExtension(model.getTaskRepository());
+ AbstractTaskEditorExtension extension = TaskEditorExtensions.getTaskEditorExtension(
+ model.getTaskRepository(), taskAttribute);
if (extension != null) {
editor = new RichTextAttributeEditor(model, taskRepository, taskAttribute, SWT.MULTI,
contextService, extension);

Back to the top