Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrelves2006-10-24 07:07:12 +0000
committerrelves2006-10-24 07:07:12 +0000
commit967190fe6010143759fd89be88edbca6490c0ebc (patch)
tree6f02674351a8ff13b934d4d81c45001c5fb76eda /org.eclipse.mylyn.trac.ui
parenta34c29cf05816bfaa63c9f2f701039494c2be89d (diff)
downloadorg.eclipse.mylyn.tasks-967190fe6010143759fd89be88edbca6490c0ebc.tar.gz
org.eclipse.mylyn.tasks-967190fe6010143759fd89be88edbca6490c0ebc.tar.xz
org.eclipse.mylyn.tasks-967190fe6010143759fd89be88edbca6490c0ebc.zip
NEW - bug 161903: Extend ITaskFactory to create editors for new tasks
https://bugs.eclipse.org/bugs/show_bug.cgi?id=161903
Diffstat (limited to 'org.eclipse.mylyn.trac.ui')
-rw-r--r--org.eclipse.mylyn.trac.ui/plugin.xml10
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/NewTracTaskEditor.java190
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/NewTracTaskEditorPage.java146
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorFactory.java17
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/NewTracTaskWizard.java3
5 files changed, 132 insertions, 234 deletions
diff --git a/org.eclipse.mylyn.trac.ui/plugin.xml b/org.eclipse.mylyn.trac.ui/plugin.xml
index 09554d492..a6695c76d 100644
--- a/org.eclipse.mylyn.trac.ui/plugin.xml
+++ b/org.eclipse.mylyn.trac.ui/plugin.xml
@@ -34,15 +34,5 @@
point="org.eclipse.mylar.tasks.ui.editors">
<editorFactory class="org.eclipse.mylar.internal.trac.ui.editor.TracTaskEditorFactory"/>
</extension>
- <extension
- point="org.eclipse.ui.editors">
- <editor
- class="org.eclipse.mylar.internal.trac.ui.editor.NewTracTaskEditor"
- contributorClass="org.eclipse.mylar.internal.tasks.ui.editors.TaskEditorActionContributor"
- icon="icons/etool16/task-repository.gif"
- id="org.eclipse.mylar.trac.ui.newBugEditor"
- name="Trac viewer">
- </editor>
- </extension>
</plugin>
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/NewTracTaskEditor.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/NewTracTaskEditor.java
index f92ba5712..3686d950b 100644
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/NewTracTaskEditor.java
+++ b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/NewTracTaskEditor.java
@@ -1,104 +1,146 @@
/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia and others.
+ * Copyright (c) 2004 - 2006 Mylar 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
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
*******************************************************************************/
package org.eclipse.mylar.internal.trac.ui.editor;
+import java.util.ArrayList;
+import java.util.Calendar;
+
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.editors.NewBugEditorInput;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.PartInitException;
-
-// based on NewBugzillaTaskEditor
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
+import org.eclipse.mylar.internal.tasks.ui.editors.AbstractNewRepositoryTaskEditor;
+import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
+import org.eclipse.mylar.internal.trac.core.ITracClient;
+import org.eclipse.mylar.internal.trac.core.InvalidTicketException;
+import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
+import org.eclipse.mylar.internal.trac.core.TracRepositoryConnector;
+import org.eclipse.mylar.internal.trac.core.TracTask;
+import org.eclipse.mylar.internal.trac.core.model.TracTicket;
+import org.eclipse.mylar.internal.trac.ui.TracUiPlugin;
+import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
+import org.eclipse.mylar.tasks.core.ITask;
+import org.eclipse.mylar.tasks.core.TaskCategory;
+import org.eclipse.mylar.tasks.core.TaskRepository;
+import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.editor.FormEditor;
/**
- * @author Rob Elves
- *
- * TODO: Get rid of this wrapper.
- * Before this can be done a factory must be added to handle new bug editor input in MylarTaskEditor.addPages()
- * then all occurrences of BugzillaUiPlugin.NEW_BUG_EDITOR_ID can be replaced with TaskListPreferenceConstants.TASK_EDITOR_ID
- * so that MylarTaskEditor is opened rather than this.
+ * @author Steffen Pingel
*/
-public class NewTracTaskEditor extends MylarTaskEditor {
+public class NewTracTaskEditor extends AbstractNewRepositoryTaskEditor {
- private Menu contextMenu;
-
- private NewTracTaskEditorPage newBugEditor;
+ private static final String SUBMIT_JOB_LABEL = "Submitting to Trac repository";
- @Override
- public void init(IEditorSite site, IEditorInput input) throws PartInitException {
- setSite(site);
- setInput(input);
+ public NewTracTaskEditor(FormEditor editor) {
+ super(editor);
}
@Override
- protected void addPages() {
- MenuManager manager = new MenuManager();
- IMenuListener listener = new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- contextMenuAboutToShow(manager);
+ protected void submitBug() {
+ if (!prepareSubmit()) {
+ return;
+ }
+
+ final TracRepositoryConnector connector = (TracRepositoryConnector) TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
+ repository.getKind());
+
+ updateBug();
+
+ JobChangeAdapter listener = new JobChangeAdapter() {
+ public void done(final IJobChangeEvent event) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ if (event.getJob().getResult().getCode() == Status.OK
+ && event.getJob().getResult().getMessage() != null) {
+ close();
+ String newTaskHandle = AbstractRepositoryTask.getHandle(repository.getUrl(), event
+ .getJob().getResult().getMessage());
+ ITask newTask = TasksUiPlugin.getTaskListManager().getTaskList().getTask(newTaskHandle);
+ if (newTask != null) {
+ Calendar selectedDate = datePicker.getDate();
+ if(selectedDate != null) {
+ //NewLocalTaskAction.scheduleNewTask(newTask);
+ TasksUiPlugin.getTaskListManager().setScheduledFor(newTask, selectedDate.getTime());
+ }
+
+ newTask.setEstimatedTimeHours(estimated.getSelection());
+
+ Object selectedObject = null;
+ if (TaskListView.getFromActivePerspective() != null)
+ selectedObject = ((IStructuredSelection) TaskListView
+ .getFromActivePerspective().getViewer().getSelection())
+ .getFirstElement();
+
+ if (selectedObject instanceof TaskCategory) {
+ TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(
+ ((TaskCategory) selectedObject), newTask);
+ }
+ TaskUiUtil.refreshAndOpenTaskListElement(newTask);
+ }
+ return;
+ } else if (event.getJob().getResult().getCode() == Status.ERROR) {
+ TracUiPlugin.handleTracException(event.getJob().getResult());
+ submitButton.setEnabled(true);
+ showBusy(false);
+ }
+ }
+ });
}
};
- manager.setRemoveAllWhenShown(true);
- manager.addMenuListener(listener);
- contextMenu = manager.createContextMenu(getContainer());
- getContainer().setMenu(contextMenu);
+
+ final TracTicket ticket;
try {
- newBugEditor = new NewTracTaskEditorPage(this);
- int index = addPage(newBugEditor);
- String label = "<unsubmitted> "+((NewBugEditorInput)getEditorInput()).getRepository().getUrl();
- setPageText(index, "Trac");
- setPartName(label);
- } catch (PartInitException e) {
- MylarStatusHandler.fail(e, "Could not add new bug form", true);
+ ticket = TracRepositoryConnector.getTracTicket(repository, getRepositoryTaskData());
+ } catch (InvalidTicketException e) {
+ TracUiPlugin.handleTracException(e);
+ submitButton.setEnabled(true);
+ showBusy(false);
+ return;
}
- }
-
- @Override
- public Object getAdapter(Class adapter) {
- return newBugEditor.getAdapter(adapter);
- }
-
- public NewTracTaskEditorPage getPage() {
- return newBugEditor;
- }
+
+ final boolean addToRoot = addToTaskListRoot.getSelection();
- @Override
- public void doSave(IProgressMonitor monitor) {
- MessageDialog.openWarning(this.newBugEditor.getSite().getShell(), "Operation not supported", "Save of un-submitted new tasks is not currently supported.\nPlease submit all new tasks.");
- monitor.setCanceled(true);
- }
+ Job submitJob = new Job(SUBMIT_JOB_LABEL) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ ITracClient server = connector.getClientManager().getRepository(repository);
+ int id = server.createTicket(ticket);
- @Override
- public void doSaveAs() {
- // ignore
+ TracTask newTask = new TracTask(AbstractRepositoryTask.getHandle(repository.getUrl(), id),
+ TracRepositoryConnector.getTicketDescription(ticket), true);
+ if (addToRoot) {
+ TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask,
+ TasksUiPlugin.getTaskListManager().getTaskList().getRootCategory());
+ } else {
+ TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask);
+ }
- }
+ java.util.List<TaskRepository> repositoriesToSync = new ArrayList<TaskRepository>();
+ repositoriesToSync.add(repository);
+ TasksUiPlugin.getSynchronizationScheduler().synchNow(0, repositoriesToSync);
- @Override
- public boolean isSaveAsAllowed() {
- // ignore
- return false;
- }
+ return Status.OK_STATUS;
+ } catch (Exception e) {
+ return TracCorePlugin.toStatus(e);
+ }
+ }
+ };
- @Override
- public boolean isDirty() {
- return true;
+ submitJob.addJobChangeListener(listener);
+ submitJob.schedule();
}
}
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/NewTracTaskEditorPage.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/NewTracTaskEditorPage.java
deleted file mode 100644
index eed82005f..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/NewTracTaskEditorPage.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar 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.mylar.internal.trac.ui.editor;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.editors.AbstractNewRepositoryTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.InvalidTicketException;
-import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryConnector;
-import org.eclipse.mylar.internal.trac.core.TracTask;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.ui.TracUiPlugin;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.forms.editor.FormEditor;
-
-/**
- * @author Steffen Pingel
- */
-public class NewTracTaskEditorPage extends AbstractNewRepositoryTaskEditor {
-
- private static final String SUBMIT_JOB_LABEL = "Submitting to Trac repository";
-
- public NewTracTaskEditorPage(FormEditor editor) {
- super(editor);
- }
-
- @Override
- protected void submitBug() {
- if (!prepareSubmit()) {
- return;
- }
-
- final TracRepositoryConnector connector = (TracRepositoryConnector) TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- repository.getKind());
-
- updateBug();
-
- JobChangeAdapter listener = new JobChangeAdapter() {
- public void done(final IJobChangeEvent event) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- if (event.getJob().getResult().getCode() == Status.OK
- && event.getJob().getResult().getMessage() != null) {
- close();
- String newTaskHandle = AbstractRepositoryTask.getHandle(repository.getUrl(), event
- .getJob().getResult().getMessage());
- ITask newTask = TasksUiPlugin.getTaskListManager().getTaskList().getTask(newTaskHandle);
- if (newTask != null) {
- Calendar selectedDate = datePicker.getDate();
- if(selectedDate != null) {
- //NewLocalTaskAction.scheduleNewTask(newTask);
- TasksUiPlugin.getTaskListManager().setScheduledFor(newTask, selectedDate.getTime());
- }
-
- newTask.setEstimatedTimeHours(estimated.getSelection());
-
- Object selectedObject = null;
- if (TaskListView.getFromActivePerspective() != null)
- selectedObject = ((IStructuredSelection) TaskListView
- .getFromActivePerspective().getViewer().getSelection())
- .getFirstElement();
-
- if (selectedObject instanceof TaskCategory) {
- TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(
- ((TaskCategory) selectedObject), newTask);
- }
- TaskUiUtil.refreshAndOpenTaskListElement(newTask);
- }
- return;
- } else if (event.getJob().getResult().getCode() == Status.ERROR) {
- TracUiPlugin.handleTracException(event.getJob().getResult());
- submitButton.setEnabled(true);
- showBusy(false);
- }
- }
- });
- }
- };
-
- final TracTicket ticket;
- try {
- ticket = TracRepositoryConnector.getTracTicket(repository, getRepositoryTaskData());
- } catch (InvalidTicketException e) {
- TracUiPlugin.handleTracException(e);
- submitButton.setEnabled(true);
- showBusy(false);
- return;
- }
-
- final boolean addToRoot = addToTaskListRoot.getSelection();
-
- Job submitJob = new Job(SUBMIT_JOB_LABEL) {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
- ITracClient server = connector.getClientManager().getRepository(repository);
- int id = server.createTicket(ticket);
-
- TracTask newTask = new TracTask(AbstractRepositoryTask.getHandle(repository.getUrl(), id),
- TracRepositoryConnector.getTicketDescription(ticket), true);
- if (addToRoot) {
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask,
- TasksUiPlugin.getTaskListManager().getTaskList().getRootCategory());
- } else {
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask);
- }
-
- java.util.List<TaskRepository> repositoriesToSync = new ArrayList<TaskRepository>();
- repositoriesToSync.add(repository);
- TasksUiPlugin.getSynchronizationScheduler().synchNow(0, repositoriesToSync);
-
- return Status.OK_STATUS;
- } catch (Exception e) {
- return TracCorePlugin.toStatus(e);
- }
- }
- };
-
- submitJob.addJobChangeListener(listener);
- submitJob.schedule();
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorFactory.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorFactory.java
index 789c708af..13e11b3ab 100644
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorFactory.java
+++ b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorFactory.java
@@ -11,6 +11,8 @@ import org.eclipse.mylar.context.core.MylarStatusHandler;
import org.eclipse.mylar.internal.tasks.ui.ITaskEditorFactory;
import org.eclipse.mylar.internal.tasks.ui.editors.ExistingBugEditorInput;
import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
+import org.eclipse.mylar.internal.tasks.ui.editors.NewBugEditorInput;
+import org.eclipse.mylar.internal.tasks.ui.editors.TaskEditorInput;
import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
import org.eclipse.mylar.internal.trac.core.TracRepositoryConnector;
import org.eclipse.mylar.internal.trac.core.TracTask;
@@ -33,18 +35,27 @@ public class TracTaskEditorFactory implements ITaskEditorFactory {
}
return task instanceof TracTask;
}
-
+
public boolean canCreateEditorFor(IEditorInput input) {
if (input instanceof ExistingBugEditorInput) {
ExistingBugEditorInput existingInput = (ExistingBugEditorInput) input;
return existingInput.getRepositoryTaskData() != null
&& TracCorePlugin.REPOSITORY_KIND.equals(existingInput.getRepository().getKind());
+ } else if (input instanceof NewBugEditorInput) {
+ NewBugEditorInput newInput = (NewBugEditorInput) input;
+ return newInput.getRepositoryTaskData() != null
+ && TracCorePlugin.REPOSITORY_KIND.equals(newInput.getRepository().getKind());
}
return false;
}
- public IEditorPart createEditor(MylarTaskEditor parentEditor) {
- return new TracTaskEditor(parentEditor);
+ public IEditorPart createEditor(MylarTaskEditor parentEditor, IEditorInput editorInput) {
+ if (editorInput instanceof ExistingBugEditorInput || editorInput instanceof TaskEditorInput) {
+ return new TracTaskEditor(parentEditor);
+ } else if (editorInput instanceof NewBugEditorInput) {
+ return new NewTracTaskEditor(parentEditor);
+ }
+ return null;
}
public IEditorInput createEditorInput(ITask task) {
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/NewTracTaskWizard.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/NewTracTaskWizard.java
index 8e86354be..2d4677037 100644
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/NewTracTaskWizard.java
+++ b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/NewTracTaskWizard.java
@@ -14,6 +14,7 @@ package org.eclipse.mylar.internal.trac.ui.wizard;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
+import org.eclipse.mylar.internal.tasks.ui.TaskListPreferenceConstants;
import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
import org.eclipse.mylar.internal.tasks.ui.editors.NewBugEditorInput;
import org.eclipse.mylar.tasks.core.TaskRepository;
@@ -61,7 +62,7 @@ public class NewTracTaskWizard extends Wizard implements INewWizard {
public boolean performFinish() {
NewBugEditorInput editorInput = new NewBugEditorInput(taskRepository, newTaskPage.getRepositoryTaskData());
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- TaskUiUtil.openEditor(editorInput, "org.eclipse.mylar.trac.ui.newBugEditor", page);
+ TaskUiUtil.openEditor(editorInput, TaskListPreferenceConstants.TASK_EDITOR_ID, page);
return true;
}

Back to the top