Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskDataHandler.java40
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugzillaTaskEditorPageFactory.java7
-rw-r--r--org.eclipse.mylyn.tasks.bugs/plugin.xml2
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/AttributeTaskMapper.java99
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/DefaultTaskContributor.java20
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/IRepositoryConstants.java2
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskContributorManager.java42
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskErrorReporter.java246
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TasksBugsPlugin.java34
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/NewTaskFromErrorAction.java11
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/ReportBugAction.java10
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorPage.java89
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorWizard.java27
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/tasks/bugs/AbstractTaskContributor.java18
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskMapping.java29
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskMapping.java96
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/AbstractTaskDataHandler.java5
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/TaskMapper.java16
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewSubTaskAction.java25
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java39
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/NewTaskWizard.java164
21 files changed, 698 insertions, 323 deletions
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskDataHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskDataHandler.java
index 4d8fde93d..0fbd189a9 100644
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskDataHandler.java
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskDataHandler.java
@@ -21,6 +21,7 @@ import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.mylyn.internal.tasks.core.deprecated.RepositoryTaskAttribute;
import org.eclipse.mylyn.internal.tasks.core.deprecated.RepositoryTaskData;
import org.eclipse.mylyn.tasks.core.ITask;
+import org.eclipse.mylyn.tasks.core.ITaskMapping;
import org.eclipse.mylyn.tasks.core.RepositoryResponse;
import org.eclipse.mylyn.tasks.core.RepositoryStatus;
import org.eclipse.mylyn.tasks.core.TaskRepository;
@@ -100,38 +101,25 @@ public class BugzillaTaskDataHandler extends AbstractTaskDataHandler {
}
@Override
- public boolean initializeTaskData(TaskRepository repository, TaskData data, IProgressMonitor monitor)
- throws CoreException {
-
- if (data == null) {
+ public boolean initializeTaskData(TaskRepository repository, TaskData data, ITaskMapping initializationData,
+ IProgressMonitor monitor) throws CoreException {
+ if (initializationData == null) {
return false;
}
-
- TaskAttribute root = data.getRoot();
-
- TaskAttribute oldProductAttribute = root.getAttribute(TaskAttribute.PRODUCT);
- if (oldProductAttribute == null) {
+ String product = initializationData.getProduct();
+ if (product == null) {
return false;
}
+ return initializeTaskData(repository, data, product, monitor);
+ }
- if (oldProductAttribute.getValue().equals("")) {
- // Bugzilla needs a product to create task data
- // If I see it right the product is never an empty String.
- // but to be save I return false as before bug# 213077
- return false;
- }
-
- root.clearAttributes();
- // TODO: Are the following necessary?
- root.getMetaData().clear();
- root.clearOptions();
- root.clearValues();
-
+ public boolean initializeTaskData(TaskRepository repository, TaskData data, String product, IProgressMonitor monitor)
+ throws CoreException {
RepositoryConfiguration repositoryConfiguration = BugzillaCorePlugin.getRepositoryConfiguration(repository,
false, monitor);
TaskAttribute productAttribute = createAttribute(data, BugzillaReportElement.PRODUCT);
- productAttribute.setValue(oldProductAttribute.getValue());
+ productAttribute.setValue(product);
List<String> optionValues = repositoryConfiguration.getProducts();
Collections.sort(optionValues);
@@ -263,11 +251,7 @@ public class BugzillaTaskDataHandler extends AbstractTaskDataHandler {
IProgressMonitor monitor) throws CoreException {
TaskAttribute attributeProject = parentTaskData.getRoot().getMappedAttribute(TaskAttribute.PRODUCT);
String product = attributeProject.getValue();
-
- TaskAttribute subAttributeProject = createAttribute(subTaskData, BugzillaReportElement.PRODUCT);
- subAttributeProject.setValue(product);
-
- initializeTaskData(repository, subTaskData, monitor);
+ initializeTaskData(repository, subTaskData, product, monitor);
// TODO:
//cloneTaskData(parentTaskData, subTaskData);
TaskAttribute attributeBlocked = createAttribute(subTaskData, BugzillaReportElement.BLOCKED);
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugzillaTaskEditorPageFactory.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugzillaTaskEditorPageFactory.java
index d6d19e8f9..415f022df 100644
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugzillaTaskEditorPageFactory.java
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugzillaTaskEditorPageFactory.java
@@ -11,8 +11,8 @@ package org.eclipse.mylyn.internal.bugzilla.ui.editor;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin;
import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages;
import org.eclipse.mylyn.tasks.ui.ITasksUiConstants;
-import org.eclipse.mylyn.tasks.ui.TasksUi;
import org.eclipse.mylyn.tasks.ui.TasksUiImages;
+import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPageFactory;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditorInput;
@@ -26,10 +26,11 @@ public class BugzillaTaskEditorPageFactory extends AbstractTaskEditorPageFactory
@Override
public boolean canCreatePageFor(TaskEditorInput input) {
- if (input.getTask().getConnectorKind().equals(BugzillaCorePlugin.CONNECTOR_KIND)) {
+ if (input.getTask().getConnectorKind().equals(BugzillaCorePlugin.CONNECTOR_KIND)
+ || TasksUiUtil.isOutgoingNewTask(input.getTask(), BugzillaCorePlugin.CONNECTOR_KIND)) {
return true;
}
- return TasksUi.getTaskDataManager().hasTaskData(input.getTask());
+ return false;
}
@Override
diff --git a/org.eclipse.mylyn.tasks.bugs/plugin.xml b/org.eclipse.mylyn.tasks.bugs/plugin.xml
index 195b901bf..e753e51c1 100644
--- a/org.eclipse.mylyn.tasks.bugs/plugin.xml
+++ b/org.eclipse.mylyn.tasks.bugs/plugin.xml
@@ -23,7 +23,7 @@
<extension
point="org.eclipse.mylyn.commons.core.errorReporters">
<errorReporter
- class="org.eclipse.mylyn.internal.tasks.bugs.TaskErrorReporter"
+ class="org.eclipse.mylyn.internal.tasks.bugs.TasksBugsPlugin$Reporter"
id="org.eclipse.mylyn.tasks.bugs.errorReporter"
label="Report Error as Bug">
</errorReporter>
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/AttributeTaskMapper.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/AttributeTaskMapper.java
index 8a9ab5cad..e9355c90c 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/AttributeTaskMapper.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/AttributeTaskMapper.java
@@ -8,14 +8,21 @@
package org.eclipse.mylyn.internal.tasks.bugs;
+import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.mylyn.internal.tasks.core.deprecated.DefaultTaskSchema;
import org.eclipse.mylyn.internal.tasks.core.deprecated.RepositoryTaskData;
import org.eclipse.mylyn.internal.tasks.core.deprecated.TaskSelection;
+import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
+import org.eclipse.mylyn.tasks.core.ITaskMapping;
import org.eclipse.mylyn.tasks.core.TaskRepository;
+import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel;
+import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.ui.TasksUi;
/**
@@ -64,4 +71,96 @@ public class AttributeTaskMapper {
}
}
+ @SuppressWarnings("restriction")
+ public TaskData createTaskData(IProgressMonitor monitor) throws CoreException {
+ ITaskMapping taskMapping = getTaskMapping();
+ return TasksUiInternal.createTaskData(getTaskRepository(), taskMapping, taskMapping, monitor);
+ }
+
+ public ITaskMapping getTaskMapping() {
+ return new KeyValueMapping(attributes);
+ }
+
+ private static class KeyValueMapping implements ITaskMapping {
+
+ private final Map<String, String> attributes;
+
+ public KeyValueMapping(Map<String, String> attributes) {
+ Assert.isNotNull(attributes);
+ this.attributes = attributes;
+ }
+
+ public void copyFrom(ITaskMapping source) {
+ }
+
+ public Date getCompletionDate() {
+ // ignore
+ return null;
+ }
+
+ public String getComponent() {
+ return attributes.get(IRepositoryConstants.COMPONENT);
+ }
+
+ public Date getCreationDate() {
+ // ignore
+ return null;
+ }
+
+ public String getDescription() {
+ // ignore
+ return null;
+ }
+
+ public Date getDueDate() {
+ // ignore
+ return null;
+ }
+
+ public Date getModificationDate() {
+ // ignore
+ return null;
+ }
+
+ public String getOwner() {
+ // ignore
+ return null;
+ }
+
+ public PriorityLevel getPriority() {
+ // ignore
+ return null;
+ }
+
+ public String getProduct() {
+ return attributes.get(IRepositoryConstants.PRODUCT);
+ }
+
+ public String getSummary() {
+ // ignore
+ return null;
+ }
+
+ public TaskData getTaskData() {
+ // ignore
+ return null;
+ }
+
+ public String getTaskKey() {
+ // ignore
+ return null;
+ }
+
+ public String getTaskKind() {
+ // ignore
+ return null;
+ }
+
+ public String getTaskUrl() {
+ // ignore
+ return null;
+ }
+
+ }
+
}
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/DefaultTaskContributor.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/DefaultTaskContributor.java
index 1b5e51c80..514618ec0 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/DefaultTaskContributor.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/DefaultTaskContributor.java
@@ -10,6 +10,7 @@ package org.eclipse.mylyn.internal.tasks.bugs;
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.runtime.IBundleGroup;
@@ -26,29 +27,25 @@ public class DefaultTaskContributor extends AbstractTaskContributor {
@Override
public Map<String, String> getAttributes(IStatus status) {
- return null;
- }
-
- @Override
- public String getDescription(IStatus status) {
+ Map<String, String> attributes = new HashMap<String, String>();
if (status instanceof FeatureStatus) {
StringBuilder sb = new StringBuilder();
sb.append("\n\n\n");
sb.append("-- Installed Plug-ins --\n");
- IBundleGroup bundleGroup = ((FeatureStatus)status).getBundleGroup();
-
+ IBundleGroup bundleGroup = ((FeatureStatus) status).getBundleGroup();
+
sb.append(bundleGroup.getIdentifier());
sb.append(" ");
sb.append(bundleGroup.getVersion());
-
+
Bundle[] bundles = bundleGroup.getBundles();
if (bundles != null) {
for (Bundle bundle : bundles) {
sb.append(bundle.getBundleId());
}
}
- return sb.toString();
-
+ attributes.put(IRepositoryConstants.DESCRIPTION, sb.toString());
+
} else {
StringBuilder sb = new StringBuilder();
sb.append("\n\n-- Error Details --\n");
@@ -58,8 +55,9 @@ public class DefaultTaskContributor extends AbstractTaskContributor {
status.getException().printStackTrace(new PrintWriter(writer));
sb.append(writer.getBuffer());
}
- return sb.toString();
+ attributes.put(IRepositoryConstants.DESCRIPTION, sb.toString());
}
+ return attributes;
}
@Override
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/IRepositoryConstants.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/IRepositoryConstants.java
index 0f85efffb..691b92ce8 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/IRepositoryConstants.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/IRepositoryConstants.java
@@ -24,4 +24,6 @@ public class IRepositoryConstants {
@Deprecated
public static final String BRANDING = "branding";
+ public static final String DESCRIPTION = "description";
+
}
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskContributorManager.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskContributorManager.java
index 1f7a46edf..4e7eaa597 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskContributorManager.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskContributorManager.java
@@ -9,6 +9,7 @@
package org.eclipse.mylyn.internal.tasks.bugs;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import org.eclipse.core.runtime.CoreException;
@@ -16,12 +17,14 @@ import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.ISafeRunnable;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.SafeRunner;
import org.eclipse.core.runtime.Status;
import org.eclipse.mylyn.commons.core.StatusHandler;
-import org.eclipse.mylyn.internal.tasks.core.deprecated.RepositoryTaskData;
import org.eclipse.mylyn.tasks.bugs.AbstractTaskContributor;
+import org.eclipse.mylyn.tasks.core.data.TaskData;
/**
* @author Steffen Pingel
@@ -96,18 +99,39 @@ public class TaskContributorManager {
taskContributors.remove(taskContributor);
}
- public void updateAttributes(RepositoryTaskData taskData, IStatus status) {
+ public void postProcess(final IStatus status, final TaskData taskData) {
readExtensions();
- for (AbstractTaskContributor contributor : taskContributors) {
- String description = contributor.getDescription(status);
- if (description != null) {
- taskData.setDescription(description);
- return;
- }
+ for (final AbstractTaskContributor contributor : taskContributors) {
+ SafeRunner.run(new ISafeRunnable() {
+ public void handleException(Throwable e) {
+ StatusHandler.log(new Status(IStatus.ERROR, TasksBugsPlugin.ID_PLUGIN, "Task contributor failed", e));
+ }
+
+ public void run() throws Exception {
+ contributor.postProcess(status, taskData);
+ }
+ });
}
+ }
- taskData.setDescription(defaultTaskContributor.getDescription(status));
+ public void preProcess(final IStatus status, final Map<String, String> attributes) {
+ readExtensions();
+
+ for (final AbstractTaskContributor contributor : taskContributors) {
+ SafeRunner.run(new ISafeRunnable() {
+ public void handleException(Throwable e) {
+ StatusHandler.log(new Status(IStatus.ERROR, TasksBugsPlugin.ID_PLUGIN, "Task contributor failed", e));
+ }
+
+ public void run() throws Exception {
+ Map<String, String> contributorAttributes = contributor.getAttributes(status);
+ if (contributorAttributes != null) {
+ attributes.putAll(contributorAttributes);
+ }
+ }
+ });
+ }
}
}
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskErrorReporter.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskErrorReporter.java
index f3a5baa1f..e217b4c44 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskErrorReporter.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskErrorReporter.java
@@ -8,160 +8,164 @@
package org.eclipse.mylyn.internal.tasks.bugs;
-import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.mylyn.commons.core.AbstractErrorReporter;
-import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
-import org.eclipse.mylyn.internal.tasks.core.deprecated.AbstractAttributeFactory;
-import org.eclipse.mylyn.internal.tasks.core.deprecated.AbstractLegacyRepositoryConnector;
-import org.eclipse.mylyn.internal.tasks.core.deprecated.AbstractTaskDataHandler;
-import org.eclipse.mylyn.internal.tasks.core.deprecated.RepositoryTaskData;
-import org.eclipse.mylyn.internal.tasks.core.deprecated.TaskSelection;
-import org.eclipse.mylyn.internal.tasks.ui.RepositoryAwareStatusHandler;
-import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
-import org.eclipse.mylyn.internal.tasks.ui.deprecated.NewTaskEditorInput;
-import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylyn.tasks.core.TaskRepository;
-import org.eclipse.mylyn.tasks.ui.TasksUi;
-import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
+import org.eclipse.mylyn.internal.tasks.bugs.wizards.ReportErrorWizard;
+import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
+import org.eclipse.mylyn.tasks.core.data.TaskData;
/**
* @author Steffen Pingel
*/
-@SuppressWarnings( { "restriction", "deprecation" })
-public class TaskErrorReporter extends AbstractErrorReporter {
+public class TaskErrorReporter {
- private final PluginRepositoryMappingManager manager;
+ private final PluginRepositoryMappingManager mappingManager;
+
+ private final TaskContributorManager contributorManager;
public TaskErrorReporter() {
- manager = new PluginRepositoryMappingManager();
+ this.contributorManager = new TaskContributorManager();
+ this.mappingManager = new PluginRepositoryMappingManager();
+ }
+
+ public TaskContributorManager getContributorManager() {
+ return contributorManager;
}
- // API 3.0 remove: always enable
- public boolean isEnabled() {
- return false; //manager.hasMappings();
+ public PluginRepositoryMappingManager getMappingManager() {
+ return mappingManager;
}
- @Override
public int getPriority(IStatus status) {
Assert.isNotNull(status);
-
String pluginId = status.getPlugin();
for (int i = 0; i <= pluginId.length(); i++) {
- if (manager.getMapping(pluginId.substring(0, i)) != null) {
- return PRIORITY_DEFAULT;
+ if (mappingManager.getMapping(pluginId.substring(0, i)) != null) {
+ return AbstractErrorReporter.PRIORITY_DEFAULT;
}
}
-
- return PRIORITY_NONE;
+ return AbstractErrorReporter.PRIORITY_NONE;
}
- @Override
- public void handle(IStatus status) {
+ public void process(IStatus status) {
Assert.isNotNull(status);
- if (true) {
- RepositoryAwareStatusHandler.getInstance().fail(status, true);
- return;
- }
-
- String pluginId = status.getPlugin();
- Map<String, String> attributes = manager.getAllAttributes(pluginId);
- AttributeTaskMapper mapper = new AttributeTaskMapper(attributes);
- TaskRepository taskRepository = mapper.getTaskRepository();
- try {
- if (taskRepository != null) {
- AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(
- taskRepository.getConnectorKind());
- if (connector instanceof AbstractLegacyRepositoryConnector) {
- if (openLegacyTaskEditor(status, taskRepository, mapper)) {
- return;
- }
- }
- }
-
- TaskSelection taskSelection = mapper.createTaskSelection();
-
- // fall back to opening wizard
- TasksUiUtil.openNewTaskEditor(null, taskSelection, taskRepository);
- } catch (OperationCanceledException e) {
- // ignore
- }
+ AttributeTaskMapper mapper = preProcess(status);
+ postProcess(mapper);
}
- @Deprecated
- private boolean openLegacyTaskEditor(IStatus status, TaskRepository taskRepository, AttributeTaskMapper mapper) {
- RepositoryTaskData taskData = createLegacyTaskData(taskRepository, mapper);
- if (taskData != null) {
- taskData.setSummary(status.getMessage());
-
- TaskContributorManager manager = new TaskContributorManager();
- manager.updateAttributes(taskData, status);
-
- String editorId = manager.getEditorId(status);
-
- NewTaskEditorInput editorInput = new NewTaskEditorInput(taskRepository, taskData);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- TasksUiUtil.openEditor(editorInput, editorId, page);
- return true;
- }
- return false;
+ public AttributeTaskMapper preProcess(IStatus status) {
+ Assert.isNotNull(status);
+ String pluginId = status.getPlugin();
+ Map<String, String> attributes = mappingManager.getAllAttributes(pluginId);
+ contributorManager.preProcess(status, attributes);
+ return new AttributeTaskMapper(attributes);
}
- @Deprecated
- private RepositoryTaskData createLegacyTaskData(final TaskRepository taskRepository, AttributeTaskMapper mapper) {
- AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(
- taskRepository.getConnectorKind());
- if (!(connector instanceof AbstractLegacyRepositoryConnector)) {
- return null;
- }
- final AbstractTaskDataHandler taskDataHandler = ((AbstractLegacyRepositoryConnector) connector).getLegacyTaskDataHandler();
- if (taskDataHandler == null) {
- return null;
- }
-
- AbstractAttributeFactory attributeFactory = taskDataHandler.getAttributeFactory(
- taskRepository.getRepositoryUrl(), taskRepository.getConnectorKind(), AbstractTask.DEFAULT_TASK_KIND);
-
- final RepositoryTaskData taskData = new RepositoryTaskData(attributeFactory, taskRepository.getConnectorKind(),
- taskRepository.getRepositoryUrl(), TasksUiPlugin.getDefault().getNextNewRepositoryTaskId());
- taskData.setNew(true);
-
- mapper.applyTo(taskData);
-
+ public void postProcess(AttributeTaskMapper mapper) {
+ Assert.isNotNull(mapper);
+ TaskData taskData;
try {
- IRunnableWithProgress runnable = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- if (!taskDataHandler.initializeTaskData(taskRepository, taskData, monitor)) {
- throw new InvocationTargetException(new Exception());
- }
- } catch (CoreException e) {
- throw new InvocationTargetException(e);
- } catch (OperationCanceledException e) {
- throw new InterruptedException();
- }
- }
- };
-
- PlatformUI.getWorkbench().getProgressService().busyCursorWhile(runnable);
- } catch (InvocationTargetException e) {
- return null;
- } catch (InterruptedException e) {
- throw new OperationCanceledException();
+ taskData = mapper.createTaskData(null);
+ TasksUiInternal.createAndOpenNewTask(taskData);
+ } catch (CoreException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
+ }
- taskDataHandler.cloneTaskData(mapper.createTaskSelection().getLegacyTaskData(), taskData);
-
- return taskData;
+ public void handle(final IStatus status) {
+ ReportErrorWizard wizard = new ReportErrorWizard(TaskErrorReporter.this, status);
+ WizardDialog dialog = new WizardDialog(TasksUiInternal.getShell(), wizard);
+ dialog.setBlockOnOpen(false);
+ dialog.open();
}
+ // legacy support
+// TaskRepository taskRepository = mapper.getTaskRepository();
+// if (taskRepository != null) {
+// AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(
+// taskRepository.getConnectorKind());
+// if (connector instanceof AbstractLegacyRepositoryConnector) {
+// try {
+// if (openLegacyTaskEditor(status, taskRepository, mapper)) {
+// return;
+// }
+// } catch (OperationCanceledException e) {
+// return;
+// }
+// }
+// }
+//
+// @Deprecated
+// private boolean openLegacyTaskEditor(IStatus status, TaskRepository taskRepository, AttributeTaskMapper mapper) {
+// RepositoryTaskData taskData = createLegacyTaskData(taskRepository, mapper);
+// if (taskData != null) {
+// taskData.setSummary(status.getMessage());
+//
+// TaskContributorManager manager = new TaskContributorManager();
+// manager.updateAttributes(taskData, status);
+//
+// String editorId = manager.getEditorId(status);
+//
+// NewTaskEditorInput editorInput = new NewTaskEditorInput(taskRepository, taskData);
+// IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+// TasksUiUtil.openEditor(editorInput, editorId, page);
+// return true;
+// }
+// return false;
+// }
+//
+// @Deprecated
+// private RepositoryTaskData createLegacyTaskData(final TaskRepository taskRepository, AttributeTaskMapper mapper) {
+// AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(
+// taskRepository.getConnectorKind());
+// if (!(connector instanceof AbstractLegacyRepositoryConnector)) {
+// return null;
+// }
+// final AbstractTaskDataHandler taskDataHandler = ((AbstractLegacyRepositoryConnector) connector).getLegacyTaskDataHandler();
+// if (taskDataHandler == null) {
+// return null;
+// }
+//
+// AbstractAttributeFactory attributeFactory = taskDataHandler.getAttributeFactory(
+// taskRepository.getRepositoryUrl(), taskRepository.getConnectorKind(), AbstractTask.DEFAULT_TASK_KIND);
+//
+// final RepositoryTaskData taskData = new RepositoryTaskData(attributeFactory, taskRepository.getConnectorKind(),
+// taskRepository.getRepositoryUrl(), TasksUiPlugin.getDefault().getNextNewRepositoryTaskId());
+// taskData.setNew(true);
+//
+// mapper.applyTo(taskData);
+//
+// try {
+// IRunnableWithProgress runnable = new IRunnableWithProgress() {
+// public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+// try {
+// if (!taskDataHandler.initializeTaskData(taskRepository, taskData, monitor)) {
+// throw new InvocationTargetException(new Exception());
+// }
+// } catch (CoreException e) {
+// throw new InvocationTargetException(e);
+// } catch (OperationCanceledException e) {
+// throw new InterruptedException();
+// }
+// }
+// };
+//
+// PlatformUI.getWorkbench().getProgressService().busyCursorWhile(runnable);
+// } catch (InvocationTargetException e) {
+// return null;
+// } catch (InterruptedException e) {
+// throw new OperationCanceledException();
+// }
+//
+// taskDataHandler.cloneTaskData(mapper.createTaskSelection().getLegacyTaskData(), taskData);
+//
+// return taskData;
+// }
+
}
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TasksBugsPlugin.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TasksBugsPlugin.java
index 3d1dc6472..2ae9d6014 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TasksBugsPlugin.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TasksBugsPlugin.java
@@ -8,6 +8,11 @@
package org.eclipse.mylyn.internal.tasks.bugs;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.mylyn.commons.core.AbstractErrorReporter;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -16,8 +21,31 @@ import org.osgi.framework.BundleContext;
*/
public class TasksBugsPlugin extends AbstractUIPlugin {
+ public static class Reporter extends AbstractErrorReporter {
+
+ @Override
+ public int getPriority(IStatus status) {
+ return getTaskErrorReporter().getPriority(status);
+ }
+
+ @Override
+ public void handle(final IStatus status) {
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ if (workbench != null) {
+ Display display = workbench.getDisplay();
+ if (display != null && !display.isDisposed()) {
+ display.asyncExec(new Runnable() {
+ public void run() {
+ getTaskErrorReporter().handle(status);
+ }
+ });
+ }
+ }
+ }
+ }
+
public static final String ID_PLUGIN = "org.eclipse.mylyn.tasks.bugs";
-
+
private static TasksBugsPlugin INSTANCE;
private static TaskErrorReporter taskErrorReporter;
@@ -32,7 +60,7 @@ public class TasksBugsPlugin extends AbstractUIPlugin {
}
return taskErrorReporter;
}
-
+
public TasksBugsPlugin() {
}
@@ -47,5 +75,5 @@ public class TasksBugsPlugin extends AbstractUIPlugin {
INSTANCE = null;
super.stop(context);
}
-
+
}
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/NewTaskFromErrorAction.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/NewTaskFromErrorAction.java
index 0063f7e7c..0446a18d5 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/NewTaskFromErrorAction.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/NewTaskFromErrorAction.java
@@ -17,8 +17,6 @@ import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.mylyn.internal.tasks.bugs.TasksBugsPlugin;
-import org.eclipse.mylyn.internal.tasks.core.deprecated.TaskSelection;
-import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
@@ -84,13 +82,8 @@ public class NewTaskFromErrorAction implements IObjectActionDelegate {
StringBuilder sb = new StringBuilder();
buildDescriptionFromLogEntry(entry, sb, includeChildren);
- if (TasksBugsPlugin.getTaskErrorReporter().isEnabled()) {
- Status status = new Status(entry.getSeverity(), entry.getPluginId(), entry.getMessage());
- TasksBugsPlugin.getTaskErrorReporter().handle(status);
- } else {
- TaskSelection taskSelection = new TaskSelection("", sb.toString());
- TasksUiUtil.openNewTaskEditor(shell, taskSelection, null);
- }
+ Status status = new Status(entry.getSeverity(), entry.getPluginId(), entry.getMessage());
+ TasksBugsPlugin.getTaskErrorReporter().handle(status);
}
public void run() {
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/ReportBugAction.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/ReportBugAction.java
index 9a6f72ea4..751ab24b4 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/ReportBugAction.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/ReportBugAction.java
@@ -11,9 +11,7 @@ package org.eclipse.mylyn.internal.tasks.bugs.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.mylyn.internal.tasks.bugs.TasksBugsPlugin;
import org.eclipse.mylyn.internal.tasks.bugs.wizards.ReportBugOrEnhancementWizard;
-import org.eclipse.mylyn.internal.tasks.ui.actions.NewTaskAction;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
@@ -32,12 +30,8 @@ public class ReportBugAction implements IWorkbenchWindowActionDelegate {
}
public void run(IAction action) {
- if (TasksBugsPlugin.getTaskErrorReporter().isEnabled()) {
- WizardDialog dialog = new WizardDialog(window.getShell(), new ReportBugOrEnhancementWizard());
- dialog.open();
- } else {
- new NewTaskAction().run(action);
- }
+ WizardDialog dialog = new WizardDialog(window.getShell(), new ReportBugOrEnhancementWizard());
+ dialog.open();
}
public void selectionChanged(IAction action, ISelection selection) {
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorPage.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorPage.java
index 09d2ae0e1..0b0b8878b 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorPage.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorPage.java
@@ -8,13 +8,20 @@
package org.eclipse.mylyn.internal.tasks.bugs.wizards;
-import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.mylyn.internal.tasks.bugs.AttributeTaskMapper;
+import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
/**
* @author Steffen Pingel
@@ -23,23 +30,85 @@ public class ReportErrorPage extends WizardPage {
private final IStatus status;
- public ReportErrorPage(IStatus status) {
+ private final AttributeTaskMapper mapper;
+
+ protected TaskRepository taskRepository;
+
+ public ReportErrorPage(AttributeTaskMapper mapper, IStatus status) {
super("reportError");
- Assert.isNotNull(status);
+ this.mapper = mapper;
this.status = status;
setTitle("Unexpected Error");
setMessage("An unexcpeted error has occured");
}
- public void createControl(Composite parent) {
+ public void createControl(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout(1, true);
- composite.setLayout(layout);
-
- Label label = new Label(parent, SWT.NONE);
+ composite.setLayout(new GridLayout(1, true));
+
+ Group errorGroup = new Group(composite, SWT.NONE);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP).grab(true, false).applyTo(errorGroup);
+ errorGroup.setText("Error");
+ errorGroup.setLayout(new GridLayout(1, true));
+
+ Label label = new Label(errorGroup, SWT.NONE);
label.setText(status.getMessage());
-
+
+ Link link = new Link(composite, SWT.NONE);
+ link.setText("<a href=\"errorlog\">Show in error log</a>");
+
+ // space
+ new Label(composite, SWT.NONE);
+
+ if (mapper.isMappingComplete()) {
+ final Button defaultRepositoryButton = new Button(composite, SWT.RADIO);
+ defaultRepositoryButton.setText("Report to: " + mapper.getTaskRepository().getRepositoryLabel());
+ defaultRepositoryButton.setSelection(true);
+
+ final Button selectRepositoryButton = new Button(composite, SWT.RADIO);
+ selectRepositoryButton.setText("Select repository");
+
+ defaultRepositoryButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ if (defaultRepositoryButton.getSelection()) {
+ selectRepositoryButton.setSelection(false);
+ }
+ taskRepository = mapper.getTaskRepository();
+ getContainer().updateButtons();
+ }
+ });
+
+ selectRepositoryButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ if (selectRepositoryButton.getSelection()) {
+ defaultRepositoryButton.setSelection(false);
+ }
+ taskRepository = null;
+ getContainer().updateButtons();
+ }
+ });
+
+ taskRepository = mapper.getTaskRepository();
+ } else {
+ taskRepository = null;
+ }
setControl(composite);
}
-
+
+ @Override
+ public boolean canFlipToNextPage() {
+ return taskRepository == null;
+ }
+
+ public TaskRepository getTaskRepository() {
+ return taskRepository;
+ }
+
+ @Override
+ public boolean isPageComplete() {
+ return true;
+ }
+
} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorWizard.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorWizard.java
index dd3268cd9..83925fd49 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorWizard.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorWizard.java
@@ -10,9 +10,10 @@ package org.eclipse.mylyn.internal.tasks.bugs.wizards;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.mylyn.internal.tasks.bugs.AttributeTaskMapper;
+import org.eclipse.mylyn.internal.tasks.bugs.TaskErrorReporter;
import org.eclipse.mylyn.internal.tasks.core.ITaskRepositoryFilter;
import org.eclipse.mylyn.internal.tasks.ui.wizards.NewTaskPage;
-import org.eclipse.mylyn.tasks.core.ITaskMapping;
/**
* @author Steffen Pingel
@@ -21,31 +22,37 @@ public class ReportErrorWizard extends Wizard {
private final IStatus status;
- private final ITaskMapping taskMapping;
+ private final AttributeTaskMapper mapper;
private ReportErrorPage reportErrorPage;
private NewTaskPage newTaskPage;
- public ReportErrorWizard(IStatus status, ITaskMapping taskMapping) {
+ private final TaskErrorReporter taskErrorReporter;
+
+ public ReportErrorWizard(TaskErrorReporter taskErrorReporter, IStatus status) {
+ this.taskErrorReporter = taskErrorReporter;
this.status = status;
- this.taskMapping = taskMapping;
+ this.mapper = taskErrorReporter.preProcess(status);
setWindowTitle("Report Error");
}
@SuppressWarnings("restriction")
@Override
public void addPages() {
- reportErrorPage = new ReportErrorPage(status);
- addPage(reportErrorPage);
- newTaskPage = new NewTaskPage(ITaskRepositoryFilter.CAN_CREATE_NEW_TASK, taskMapping);
+ reportErrorPage = new ReportErrorPage(mapper, status);
addPage(reportErrorPage);
+ newTaskPage = new NewTaskPage(ITaskRepositoryFilter.CAN_CREATE_NEW_TASK, mapper.getTaskMapping());
+ addPage(newTaskPage);
}
@Override
public boolean performFinish() {
- // ignore
- return false;
+ if (reportErrorPage.getTaskRepository() != null) {
+ taskErrorReporter.postProcess(mapper);
+ return true;
+ } else {
+ return newTaskPage.performFinish();
+ }
}
-
}
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/tasks/bugs/AbstractTaskContributor.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/tasks/bugs/AbstractTaskContributor.java
index 62e9ffb35..3814166e2 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/tasks/bugs/AbstractTaskContributor.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/tasks/bugs/AbstractTaskContributor.java
@@ -11,19 +11,21 @@ package org.eclipse.mylyn.tasks.bugs;
import java.util.Map;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.mylyn.tasks.core.data.TaskData;
/**
- * Note: This API is likely to change for 3.0.
- *
* @author Steffen Pingel
- * @since 2.3
+ * @since 3.0
*/
public abstract class AbstractTaskContributor {
public abstract Map<String, String> getAttributes(IStatus status);
-
- public abstract String getDescription(IStatus status);
-
- public abstract String getEditorId(IStatus status);
-
+
+ public String getEditorId(IStatus status) {
+ return null;
+ }
+
+ public void postProcess(IStatus status, TaskData taskData) {
+ }
+
}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskMapping.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskMapping.java
index 8e8940631..aea5fdac6 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskMapping.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskMapping.java
@@ -17,7 +17,6 @@ import org.eclipse.mylyn.tasks.core.data.TaskData;
* @author Steffen Pingel
* @since 3.0
*/
-// API 3.0 find a better name?
public interface ITaskMapping {
public abstract Date getCompletionDate();
@@ -50,32 +49,4 @@ public interface ITaskMapping {
public void copyFrom(ITaskMapping source);
- // public abstract void setCompletionDate(Date dateCompleted);
-//
-// public abstract void setComponent(String component);
-//
-// public abstract void setCreationDate(Date dateCreated);
-//
-// public abstract void setDescription(String description);
-//
-// public abstract void setDueDate(Date value);
-//
-// public abstract void setModificationDate(Date dateModified);
-//
-// // TODO use Person class?
-// public abstract void setOwner(String owner);
-//
-// public abstract void setPriority(PriorityLevel priority);
-//
-// public abstract void setProduct(String product);
-//
-// // TODO use Person class?
-// public abstract void setReporter(String reporter);
-//
-// public abstract void setSummary(String summary);
-//
-// public abstract void setTaskKind(String taskKind);
-//
-// public abstract void setTaskUrl(String taskUrl);
-
} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskMapping.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskMapping.java
new file mode 100644
index 000000000..d28b4afff
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskMapping.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Mylyn project committers and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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
+ *******************************************************************************/
+
+package org.eclipse.mylyn.tasks.core;
+
+import java.util.Date;
+
+import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel;
+import org.eclipse.mylyn.tasks.core.data.TaskData;
+
+/**
+ * @author Steffen Pingel
+ * @since 3.0
+ */
+public class TaskMapping implements ITaskMapping {
+
+ public void copyFrom(ITaskMapping source) {
+ // ignore
+ }
+
+ public Date getCompletionDate() {
+ // ignore
+ return null;
+ }
+
+ public String getComponent() {
+ // ignore
+ return null;
+ }
+
+ public Date getCreationDate() {
+ // ignore
+ return null;
+ }
+
+ public String getDescription() {
+ // ignore
+ return null;
+ }
+
+ public Date getDueDate() {
+ // ignore
+ return null;
+ }
+
+ public Date getModificationDate() {
+ // ignore
+ return null;
+ }
+
+ public String getOwner() {
+ // ignore
+ return null;
+ }
+
+ public PriorityLevel getPriority() {
+ // ignore
+ return null;
+ }
+
+ public String getProduct() {
+ // ignore
+ return null;
+ }
+
+ public String getSummary() {
+ // ignore
+ return null;
+ }
+
+ public TaskData getTaskData() {
+ // ignore
+ return null;
+ }
+
+ public String getTaskKey() {
+ // ignore
+ return null;
+ }
+
+ public String getTaskKind() {
+ // ignore
+ return null;
+ }
+
+ public String getTaskUrl() {
+ // ignore
+ return null;
+ }
+
+}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/AbstractTaskDataHandler.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/AbstractTaskDataHandler.java
index dab2e1ed6..731e4927b 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/AbstractTaskDataHandler.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/AbstractTaskDataHandler.java
@@ -13,6 +13,7 @@ import java.util.Set;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.mylyn.tasks.core.ITask;
+import org.eclipse.mylyn.tasks.core.ITaskMapping;
import org.eclipse.mylyn.tasks.core.RepositoryResponse;
import org.eclipse.mylyn.tasks.core.TaskRepository;
@@ -49,8 +50,8 @@ public abstract class AbstractTaskDataHandler {
/**
* Initialize a new task data object with default attributes and values
*/
- public abstract boolean initializeTaskData(TaskRepository repository, TaskData data, IProgressMonitor monitor)
- throws CoreException;
+ public abstract boolean initializeTaskData(TaskRepository repository, TaskData data,
+ ITaskMapping initializationData, IProgressMonitor monitor) throws CoreException;
/**
* @since 2.2
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/TaskMapper.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/TaskMapper.java
index 0a663fe96..ac35cfb93 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/TaskMapper.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/TaskMapper.java
@@ -279,10 +279,18 @@ public class TaskMapper implements ITaskMapping {
copyAttributeValue(sourceAttribute, this.getTaskData().getRoot().getAttribute(sourceAttribute.getId()));
}
} else {
- setDescription(source.getDescription());
- setSummary(source.getSummary());
- setPriority(getPriority());
- setProduct(getProduct());
+ if (source.getDescription() != null) {
+ setDescription(source.getDescription());
+ }
+ if (source.getSummary() != null) {
+ setSummary(source.getSummary());
+ }
+ if (source.getPriority() != null) {
+ setPriority(source.getPriority());
+ }
+ if (source.getProduct() != null) {
+ setProduct(source.getProduct());
+ }
}
// targetTaskData.setSummary(sourceTaskData.getSummary());
// targetTaskData.setDescription(sourceTaskData.getDescription());
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewSubTaskAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewSubTaskAction.java
index 2908bd303..7ff0050a1 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewSubTaskAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewSubTaskAction.java
@@ -39,14 +39,12 @@ import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel;
import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler;
-import org.eclipse.mylyn.tasks.core.data.ITaskDataWorkingCopy;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.ui.TasksUi;
import org.eclipse.mylyn.tasks.ui.TasksUiImages;
import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
-import org.eclipse.mylyn.tasks.ui.editors.TaskEditorInput;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
@@ -73,6 +71,7 @@ public class NewSubTaskAction extends Action implements IViewActionDelegate, IEx
setImageDescriptor(TasksUiImages.TASK_NEW_SUB);
}
+ @SuppressWarnings( { "deprecation", "restriction" })
@Override
public void run() {
if (selectedTask == null) {
@@ -94,29 +93,19 @@ public class NewSubTaskAction extends Action implements IViewActionDelegate, IEx
AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(
selectedTask.getConnectorKind());
if (connector instanceof AbstractLegacyRepositoryConnector) {
- runLegacy((AbstractLegacyRepositoryConnector) connector);
+ createLegacyTask((AbstractLegacyRepositoryConnector) connector);
return;
}
- ITask task = TasksUiUtil.createOutgoingNewTask(selectedTask.getConnectorKind());
TaskData taskData = createTaskData(connector);
if (taskData != null) {
- ITaskDataWorkingCopy workingCopy = TasksUi.getTaskDataManager().createWorkingCopy(task, taskData);
try {
- workingCopy.save(null, null);
+ TasksUiInternal.createAndOpenNewTask(taskData);
} catch (CoreException e) {
- StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
- "Failed to save task data for task: " + task.getUrl(), e));
- TasksUiInternal.displayStatus("Unable to create subtask", new Status(IStatus.WARNING,
- TasksUiPlugin.ID_PLUGIN, "Could not retrieve task data for task: " + selectedTask.getUrl()));
- return;
+ StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Failed to open new sub task", e));
+ TasksUiInternal.displayStatus("Unable to create subtask", new Status(IStatus.ERROR,
+ TasksUiPlugin.ID_PLUGIN, "Failed to create new sub task: " + e.getMessage()));
}
-
- TaskRepository localTaskRepository = TasksUi.getRepositoryManager().getRepository(task.getConnectorKind(),
- task.getRepositoryUrl());
- TaskEditorInput editorInput = new TaskEditorInput(localTaskRepository, task);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- TasksUiUtil.openEditor(editorInput, TaskEditor.ID_EDITOR, page);
}
}
@@ -186,7 +175,7 @@ public class NewSubTaskAction extends Action implements IViewActionDelegate, IEx
}
@Deprecated
- private void runLegacy(AbstractLegacyRepositoryConnector connector) {
+ private void createLegacyTask(AbstractLegacyRepositoryConnector connector) {
final org.eclipse.mylyn.internal.tasks.core.deprecated.AbstractTaskDataHandler taskDataHandler = connector.getLegacyTaskDataHandler();
if (taskDataHandler == null) {
return;
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java
index 5b12f6249..e91e06b67 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java
@@ -73,7 +73,11 @@ import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector.Capability;
import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel;
import org.eclipse.mylyn.tasks.core.ITask.SynchronizationState;
import org.eclipse.mylyn.tasks.core.data.AbstractTaskAttachmentSource;
+import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler;
+import org.eclipse.mylyn.tasks.core.data.ITaskDataWorkingCopy;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
+import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
+import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.core.sync.SynchronizationJob;
import org.eclipse.mylyn.tasks.core.sync.TaskJob;
import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi;
@@ -719,4 +723,39 @@ public class TasksUiInternal {
TasksUi.getTaskDataManager()));
}
+ public static Shell getShell() {
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (window != null) {
+ return window.getShell();
+ }
+ return Display.getDefault().getActiveShell();
+ }
+
+ public static TaskData createTaskData(TaskRepository taskRepository, ITaskMapping initializationData,
+ ITaskMapping selectionData, IProgressMonitor monitor) throws CoreException {
+ AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(
+ taskRepository.getConnectorKind());
+ AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler();
+ TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(taskRepository);
+ TaskData taskData = new TaskData(mapper, taskRepository.getConnectorKind(), taskRepository.getRepositoryUrl(),
+ "");
+ taskDataHandler.initializeTaskData(taskRepository, taskData, initializationData, monitor);
+ if (selectionData != null) {
+ connector.getTaskMapping(taskData).copyFrom(selectionData);
+ }
+ return taskData;
+ }
+
+ public static void createAndOpenNewTask(TaskData taskData) throws CoreException {
+ ITask task = TasksUiUtil.createOutgoingNewTask(taskData.getConnectorKind());
+ ITaskDataWorkingCopy workingCopy = TasksUi.getTaskDataManager().createWorkingCopy(task, taskData);
+ workingCopy.save(null, null);
+
+ TaskRepository localTaskRepository = TasksUi.getRepositoryManager().getRepository(task.getConnectorKind(),
+ task.getRepositoryUrl());
+ TaskEditorInput editorInput = new TaskEditorInput(localTaskRepository, task);
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ TasksUiUtil.openEditor(editorInput, TaskEditor.ID_EDITOR, page);
+ }
+
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/NewTaskWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/NewTaskWizard.java
index ce233b69c..dffbef046 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/NewTaskWizard.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/NewTaskWizard.java
@@ -13,15 +13,16 @@ import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.text.Assert;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.internal.tasks.core.deprecated.AbstractAttributeFactory;
import org.eclipse.mylyn.internal.tasks.core.deprecated.AbstractLegacyRepositoryConnector;
-import org.eclipse.mylyn.internal.tasks.core.deprecated.AbstractTaskDataHandler;
import org.eclipse.mylyn.internal.tasks.core.deprecated.RepositoryTaskData;
import org.eclipse.mylyn.internal.tasks.core.deprecated.TaskSelection;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
@@ -31,7 +32,9 @@ import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
import org.eclipse.mylyn.tasks.core.ITaskMapping;
import org.eclipse.mylyn.tasks.core.RepositoryStatus;
import org.eclipse.mylyn.tasks.core.TaskRepository;
+import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.ui.TasksUi;
+import org.eclipse.mylyn.tasks.ui.TasksUiImages;
import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
import org.eclipse.ui.INewWizard;
@@ -55,8 +58,11 @@ public class NewTaskWizard extends Wizard implements INewWizard {
* @since 3.0
*/
public NewTaskWizard(TaskRepository taskRepository, ITaskMapping taskSelection) {
+ Assert.isNotNull(taskRepository);
this.taskRepository = taskRepository;
this.taskSelection = taskSelection;
+ setDefaultPageImageDescriptor(TasksUiImages.BANNER_REPOSITORY);
+ setNeedsProgressMonitor(true);
}
public NewTaskWizard(TaskRepository taskRepository) {
@@ -75,68 +81,128 @@ public class NewTaskWizard extends Wizard implements INewWizard {
return true;
}
+ /**
+ * @since 3.0
+ */
+ protected ITaskMapping getInitializationData() {
+ return null;
+ }
+
+ /**
+ * @since 3.0
+ */
+ public TaskRepository getTaskRepository() {
+ return taskRepository;
+ }
+
+ /**
+ * @since 3.0
+ */
+ public ITaskMapping getTaskSelection() {
+ return taskSelection;
+ }
+
@SuppressWarnings( { "deprecation", "restriction" })
@Override
public boolean performFinish() {
- // FIXME 3.0 implement TaskData support
AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(
taskRepository.getConnectorKind());
if (connector instanceof AbstractLegacyRepositoryConnector) {
- AbstractLegacyRepositoryConnector legacyConnector = (AbstractLegacyRepositoryConnector) connector;
-
- final AbstractTaskDataHandler taskDataHandler = legacyConnector.getLegacyTaskDataHandler();
- if (taskDataHandler == null) {
- TasksUiInternal.displayStatus("Error creating new task", new RepositoryStatus(IStatus.ERROR,
- TasksUiPlugin.ID_PLUGIN, RepositoryStatus.ERROR_REPOSITORY,
- "The selected repository does not support creating new tasks."));
- return false;
- }
+ return createLegacyTask((AbstractLegacyRepositoryConnector) connector);
+ }
- AbstractAttributeFactory attributeFactory = taskDataHandler.getAttributeFactory(
- taskRepository.getRepositoryUrl(), taskRepository.getConnectorKind(),
- AbstractTask.DEFAULT_TASK_KIND);
-
- final RepositoryTaskData taskData = new RepositoryTaskData(attributeFactory,
- taskRepository.getConnectorKind(), taskRepository.getRepositoryUrl(), TasksUiPlugin.getDefault()
- .getNextNewRepositoryTaskId());
- taskData.setNew(true);
-
- try {
- IRunnableWithProgress runnable = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- if (!taskDataHandler.initializeTaskData(taskRepository, taskData, monitor)) {
- throw new CoreException(new RepositoryStatus(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
- RepositoryStatus.ERROR_REPOSITORY,
- "The selected repository does not support creating new tasks."));
- }
- } catch (CoreException e) {
- throw new InvocationTargetException(e);
- }
+ final TaskData[] taskData = new TaskData[1];
+ final ITaskMapping initializationData = getInitializationData();
+ final ITaskMapping selectionData = getTaskSelection();
+ try {
+ IRunnableWithProgress runnable = new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ try {
+ taskData[0] = TasksUiInternal.createTaskData(taskRepository, initializationData, selectionData,
+ monitor);
+ } catch (OperationCanceledException e) {
+ throw new InterruptedException();
+ } catch (CoreException e) {
+ throw new InvocationTargetException(e);
}
- };
-
- getContainer().run(true, true, runnable);
- } catch (InvocationTargetException e) {
- if (e.getCause() instanceof CoreException) {
- TasksUiInternal.displayStatus("Error creating new task", ((CoreException) e.getCause()).getStatus());
- } else {
- StatusHandler.fail(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Error creating new task",
- e.getCause()));
}
- return false;
- } catch (InterruptedException e) {
- return false;
+ };
+ getContainer().run(true, true, runnable);
+ } catch (InvocationTargetException e) {
+ if (e.getCause() instanceof CoreException) {
+ TasksUiInternal.displayStatus("Error creating new task", ((CoreException) e.getCause()).getStatus());
+ } else {
+ StatusHandler.fail(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Error creating new task",
+ e.getCause()));
}
+ return false;
+ } catch (InterruptedException e) {
+ return false;
+ }
- if (taskSelection instanceof TaskSelection) {
- taskDataHandler.cloneTaskData(((TaskSelection) taskSelection).getLegacyTaskData(), taskData);
+ try {
+ TasksUiInternal.createAndOpenNewTask(taskData[0]);
+ return true;
+ } catch (CoreException e) {
+ StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Failed to open new task", e));
+ TasksUiInternal.displayStatus("Create Task", new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
+ "Failed to create new task: " + e.getMessage()));
+ return false;
+ }
+ }
+
+ @SuppressWarnings( { "deprecation", "restriction" })
+ private boolean createLegacyTask(AbstractLegacyRepositoryConnector legacyConnector) {
+ final org.eclipse.mylyn.internal.tasks.core.deprecated.AbstractTaskDataHandler taskDataHandler = legacyConnector.getLegacyTaskDataHandler();
+ if (taskDataHandler == null) {
+ TasksUiInternal.displayStatus("Error creating new task", new RepositoryStatus(IStatus.ERROR,
+ TasksUiPlugin.ID_PLUGIN, RepositoryStatus.ERROR_REPOSITORY,
+ "The selected repository does not support creating new tasks."));
+ return false;
+ }
+
+ AbstractAttributeFactory attributeFactory = taskDataHandler.getAttributeFactory(
+ taskRepository.getRepositoryUrl(), taskRepository.getConnectorKind(), AbstractTask.DEFAULT_TASK_KIND);
+
+ final RepositoryTaskData taskData = new RepositoryTaskData(attributeFactory, taskRepository.getConnectorKind(),
+ taskRepository.getRepositoryUrl(), TasksUiPlugin.getDefault().getNextNewRepositoryTaskId());
+ taskData.setNew(true);
+
+ try {
+ IRunnableWithProgress runnable = new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ try {
+ if (!taskDataHandler.initializeTaskData(taskRepository, taskData, monitor)) {
+ throw new CoreException(new RepositoryStatus(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
+ RepositoryStatus.ERROR_REPOSITORY,
+ "The selected repository does not support creating new tasks."));
+ }
+ } catch (CoreException e) {
+ throw new InvocationTargetException(e);
+ }
+ }
+ };
+
+ getContainer().run(true, true, runnable);
+ } catch (InvocationTargetException e) {
+ if (e.getCause() instanceof CoreException) {
+ TasksUiInternal.displayStatus("Error creating new task", ((CoreException) e.getCause()).getStatus());
+ } else {
+ StatusHandler.fail(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Error creating new task",
+ e.getCause()));
}
+ return false;
+ } catch (InterruptedException e) {
+ return false;
+ }
- NewTaskEditorInput editorInput = new NewTaskEditorInput(taskRepository, taskData);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- TasksUiUtil.openEditor(editorInput, TaskEditor.ID_EDITOR, page);
+ if (taskSelection instanceof TaskSelection) {
+ taskDataHandler.cloneTaskData(((TaskSelection) taskSelection).getLegacyTaskData(), taskData);
}
+
+ NewTaskEditorInput editorInput = new NewTaskEditorInput(taskRepository, taskData);
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ TasksUiUtil.openEditor(editorInput, TaskEditor.ID_EDITOR, page);
return true;
}
}

Back to the top