diff options
author | spingel | 2008-07-16 02:33:18 +0000 |
---|---|---|
committer | spingel | 2008-07-16 02:33:18 +0000 |
commit | 540428b7e8cbafc8c654d206cba87fa955ffdf28 (patch) | |
tree | c466ce8c9e85c4f192a4e0e646bafd33d4d7302d | |
parent | a63f2df0d31d8b1890348dbf20a33ab871a749ac (diff) | |
download | org.eclipse.mylyn.tasks-540428b7e8cbafc8c654d206cba87fa955ffdf28.tar.gz org.eclipse.mylyn.tasks-540428b7e8cbafc8c654d206cba87fa955ffdf28.tar.xz org.eclipse.mylyn.tasks-540428b7e8cbafc8c654d206cba87fa955ffdf28.zip |
NEW - bug 238881: Action 'Open Repository Task' failed
https://bugs.eclipse.org/bugs/show_bug.cgi?id=238881
10 files changed, 95 insertions, 43 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/AddExistingTaskJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/AddExistingTaskJob.java index 32587396d..b6153aac9 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/AddExistingTaskJob.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/AddExistingTaskJob.java @@ -9,22 +9,17 @@ package org.eclipse.mylyn.internal.tasks.ui; import java.text.MessageFormat; -import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.AbstractTaskCategory; -import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil; import org.eclipse.mylyn.internal.tasks.core.TaskCategory; import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; +import org.eclipse.mylyn.tasks.core.ITask; import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; /** @@ -32,6 +27,7 @@ import org.eclipse.ui.PlatformUI; * * @author Willian Mitsuda */ +// TODO 3.1 merge with OpenRepositoryTaskJob public class AddExistingTaskJob extends Job { /** @@ -63,43 +59,65 @@ public class AddExistingTaskJob extends Job { @Override public IStatus run(IProgressMonitor monitor) { - try { - final AbstractTask newTask = (AbstractTask) TasksUiInternal.createTask(repository, taskId, monitor); - if (newTask != null) { - TasksUiPlugin.getTaskActivityManager().setScheduledFor(newTask, TaskActivityUtil.getCurrentWeek()); - - TasksUiInternal.refreshAndOpenTaskListElement(newTask); - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - - public void run() { - AbstractTaskCategory category = taskContainer; - TaskListView taskListView = TaskListView.getFromActivePerspective(); - if (category == null) { - Object selectedObject = ((IStructuredSelection) taskListView.getViewer().getSelection()).getFirstElement(); - if (selectedObject instanceof TaskCategory) { - category = (TaskCategory) selectedObject; - } - } - TasksUiInternal.getTaskList().addTask(newTask, category); - taskListView.getViewer().setSelection(new StructuredSelection(newTask)); - } - }); - } else { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - if (window != null) { - MessageDialog.openWarning(window.getShell(), "Add Existing Task Failed", - MessageFormat.format("Unable to retrieve task \"{0}\" from repository.", taskId)); + OpenRepositoryTaskJob job = new OpenRepositoryTaskJob(repository.getConnectorKind(), + repository.getRepositoryUrl(), taskId, null, null); + IStatus result = job.run(monitor); + final ITask newTask = job.getTask(); + if (newTask != null) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + AbstractTaskCategory category = taskContainer; + TaskListView taskListView = TaskListView.getFromActivePerspective(); + if (category == null) { + Object selectedObject = ((IStructuredSelection) taskListView.getViewer().getSelection()).getFirstElement(); + if (selectedObject instanceof TaskCategory) { + category = (TaskCategory) selectedObject; } } - }); - } - } catch (final CoreException e) { - TasksUiInternal.asyncDisplayStatus("Unable to open task", e.getStatus()); - } finally { - monitor.done(); + TasksUiInternal.getTaskList().addTask(newTask, category); + taskListView.getViewer().setSelection(new StructuredSelection(newTask)); + } + }); } - return Status.OK_STATUS; + return result; +// try { +// TasksUiUtil.openTask(repository, taskId); +// final AbstractTask newTask = (AbstractTask) TasksUiInternal.createTask(repository, taskId, monitor); +// if (newTask != null) { +// TasksUiPlugin.getTaskActivityManager().setScheduledFor(newTask, TaskActivityUtil.getCurrentWeek()); +// +// TasksUiInternal.refreshAndOpenTaskListElement(newTask); +// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { +// +// public void run() { +// AbstractTaskCategory category = taskContainer; +// TaskListView taskListView = TaskListView.getFromActivePerspective(); +// if (category == null) { +// Object selectedObject = ((IStructuredSelection) taskListView.getViewer().getSelection()).getFirstElement(); +// if (selectedObject instanceof TaskCategory) { +// category = (TaskCategory) selectedObject; +// } +// } +// TasksUiInternal.getTaskList().addTask(newTask, category); +// taskListView.getViewer().setSelection(new StructuredSelection(newTask)); +// } +// }); +// } else { +// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { +// public void run() { +// IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); +// if (window != null) { +// MessageDialog.openWarning(window.getShell(), "Add Existing Task Failed", +// MessageFormat.format("Unable to retrieve task \"{0}\" from repository.", taskId)); +// } +// } +// }); +// } +// } catch (final CoreException e) { +// TasksUiInternal.asyncDisplayStatus("Unable to open task", e.getStatus()); +// } finally { +// monitor.done(); +// } +// return Status.OK_STATUS; } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OpenRepositoryTaskJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OpenRepositoryTaskJob.java index ab87c0cb4..0a453d05e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OpenRepositoryTaskJob.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OpenRepositoryTaskJob.java @@ -45,6 +45,8 @@ public class OpenRepositoryTaskJob extends Job { private final String taskUrl; + private ITask task; + public OpenRepositoryTaskJob(String repositoryKind, String repositoryUrl, String taskId, String taskUrl, IWorkbenchPage page) { super("Opening repository task " + taskId); @@ -56,6 +58,15 @@ public class OpenRepositoryTaskJob extends Job { this.page = page; } + /** + * Returns the task if it was created when openeing + * + * @return + */ + public ITask getTask() { + return task; + } + @Override public IStatus run(IProgressMonitor monitor) { monitor.beginTask("Opening Remote Task", 10); @@ -96,7 +107,7 @@ public class OpenRepositoryTaskJob extends Job { } else { TaskData taskData = connector.getTaskData(repository, taskId, monitor); if (taskData != null) { - final ITask task = TasksUi.getRepositoryModel().createTask(repository, taskData.getTaskId()); + task = TasksUi.getRepositoryModel().createTask(repository, taskData.getTaskId()); TasksUiPlugin.getTaskDataManager().putUpdatedTaskData(task, taskData, true); PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { public void run() { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryTaskAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryTaskAction.java index 163a1060e..ec2841fd9 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryTaskAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryTaskAction.java @@ -27,6 +27,8 @@ import org.eclipse.ui.PlatformUI; * @author Mik Kersten * @author Eugene Kuleshov */ +// TODO 3.1 remove class +@Deprecated public class AddRepositoryTaskAction extends Action implements IViewActionDelegate { private static final String WIZARD_LABEL = "Add an existing repository task/issue"; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenRepositoryTask.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenRepositoryTask.java index d7b5da312..2e404f468 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenRepositoryTask.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenRepositoryTask.java @@ -30,6 +30,7 @@ import org.eclipse.ui.progress.IProgressService; /** * @author Mik Kersten */ +// TODO 3.1 rename to OpenRepositoryTaskAction public class OpenRepositoryTask extends Action implements IWorkbenchWindowActionDelegate, IViewActionDelegate { private static final String OPEN_REMOTE_TASK_DIALOG_DIALOG_SETTINGS = "org.eclipse.mylyn.tasks.ui.open.remote"; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorActionContributor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorActionContributor.java index b149bcb91..03152b367 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorActionContributor.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorActionContributor.java @@ -71,7 +71,6 @@ import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds; * @author Rob Elves * @author Steffen Pingel */ -@SuppressWarnings("deprecation") public class TaskEditorActionContributor extends MultiPageEditorActionBarContributor implements ISelectionChangedListener { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AddExistingTaskWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AddExistingTaskWizard.java index 6a366bf69..80c114000 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AddExistingTaskWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AddExistingTaskWizard.java @@ -20,6 +20,8 @@ import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi; * @author Eugene Kuleshov * @author Steffen Pingel */ +// TODO 3.1 remove class +@Deprecated public class AddExistingTaskWizard extends MultiRepositoryAwareWizard { public static final String TITLE = "Add Existing Repository Task"; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/CommonAddExistingTaskWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/CommonAddExistingTaskWizard.java index 0dba8bc8b..d2cfc0a4e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/CommonAddExistingTaskWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/CommonAddExistingTaskWizard.java @@ -20,6 +20,8 @@ import org.eclipse.ui.progress.IProgressService; * @author Brock Janiczak * @author Mik Kersten */ +// TODO 3.1 remove class +@Deprecated public class CommonAddExistingTaskWizard extends Wizard { private final TaskRepository repository; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ExistingTaskWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ExistingTaskWizardPage.java index e7a30924f..2fe8e0dbc 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ExistingTaskWizardPage.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ExistingTaskWizardPage.java @@ -22,6 +22,8 @@ import org.eclipse.swt.widgets.Text; /** * @author Mik Kersten */ +//TODO 3.1 remove class +@Deprecated public class ExistingTaskWizardPage extends WizardPage { private static final String TITLE = "Enter Task ID"; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java index 3a3fe9612..a55083d7d 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java @@ -146,6 +146,10 @@ public abstract class AbstractRepositoryConnectorUi { return TasksUiInternal.getPriorityImage(task); } + /** + * This method is not used anymore. + */ + @Deprecated public IWizard getAddExistingTaskWizard(TaskRepository repository) { return new CommonAddExistingTaskWizard(repository); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiUtil.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiUtil.java index a8b09199e..0d9079698 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiUtil.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiUtil.java @@ -170,6 +170,17 @@ public class TasksUiUtil { } public static IEditorPart openEditor(IEditorInput input, String editorId, IWorkbenchPage page) { + if (page == null) { + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window != null) { + page = window.getActivePage(); + } + } + if (page == null) { + StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Unable to open editor for \"" + input + + "\": no active workbench window")); + return null; + } try { return page.openEditor(input, editorId); } catch (PartInitException e) { |