diff options
author | sminto | 2005-07-19 19:45:23 +0000 |
---|---|---|
committer | sminto | 2005-07-19 19:45:23 +0000 |
commit | 32c15aa3f27438f813f3ce451d0a6c5778f1c380 (patch) | |
tree | adfb7054d09550841d158dd84d8fa9cd4c8b4e3c | |
parent | 29630f4da28d93befe02842d142e832baf279447 (diff) | |
download | org.eclipse.mylyn.tasks-32c15aa3f27438f813f3ce451d0a6c5778f1c380.tar.gz org.eclipse.mylyn.tasks-32c15aa3f27438f813f3ce451d0a6c5778f1c380.tar.xz org.eclipse.mylyn.tasks-32c15aa3f27438f813f3ce451d0a6c5778f1c380.zip |
partial fix for Bug #103588: use extension points in place of ITaskListActionContributor
13 files changed, 275 insertions, 102 deletions
diff --git a/org.eclipse.mylyn.bugzilla.ui/plugin.xml b/org.eclipse.mylyn.bugzilla.ui/plugin.xml index 6bf01029b..acc357443 100644 --- a/org.eclipse.mylyn.bugzilla.ui/plugin.xml +++ b/org.eclipse.mylyn.bugzilla.ui/plugin.xml @@ -1,13 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.0"?> <?eclipse version="3.0"?> -<plugin> - - <extension - name="Bugzilla startup" - point="org.eclipse.ui.startup"> - </extension> - +<plugin> <extension point="org.eclipse.ui.perspectiveExtensions"> <perspectiveExtension targetID="org.eclipse.jdt.ui.JavaPerspective"> <newWizardShortcut id="org.eclipse.mylar.bugzilla.bugWizard"/> @@ -111,6 +105,15 @@ searchResultClass="org.eclipse.mylar.bugzilla.core.search.BugzillaSearchResult" id="org.eclipse.mylar.bugzilla.BugzillaSearchResultPage"/> </extension> + <extension + point="org.eclipse.mylar.tasks.taskListContributor"> + <taskListContributor + actionContributorClass="org.eclipse.mylar.bugzilla.ui.tasks.BugzillaTaskListActionContributor" + externalizerClass="org.eclipse.mylar.bugzilla.ui.tasks.BugzillaTaskExternalizer" + id="org.eclipse.mylar.bugzilla.ui.tasklist" + name="Bugzilla Contributer"> + </taskListContributor> + </extension> </plugin> diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/BugzillaUiPlugin.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/BugzillaUiPlugin.java index f68445b98..233ad63c5 100644 --- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/BugzillaUiPlugin.java +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/BugzillaUiPlugin.java @@ -7,20 +7,14 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.mylar.bugzilla.core.BugzillaPlugin; import org.eclipse.mylar.bugzilla.ui.tasks.BugzillaTask; -import org.eclipse.mylar.bugzilla.ui.tasks.BugzillaTaskExternalizer; -import org.eclipse.mylar.bugzilla.ui.tasks.BugzillaTaskListActionContributor; import org.eclipse.mylar.bugzilla.ui.tasks.BugzillaTaskListManager; -import org.eclipse.mylar.tasks.MylarTasksPlugin; -import org.eclipse.ui.IStartup; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; /** * The main plugin class to be used in the desktop. */ -public class BugzillaUiPlugin extends AbstractUIPlugin implements IStartup { +public class BugzillaUiPlugin extends AbstractUIPlugin { private BugzillaTaskListManager bugzillaTaskListManager; private static BugzillaUiPlugin plugin; @@ -32,28 +26,14 @@ public class BugzillaUiPlugin extends AbstractUIPlugin implements IStartup { public BugzillaUiPlugin() { plugin = this; } - - public void earlyStartup() { - final IWorkbench workbench = PlatformUI.getWorkbench(); - workbench.getDisplay().asyncExec(new Runnable() { - public void run() { - BugzillaPlugin.setResultEditorMatchAdapter(new BugzillaResultMatchAdapter()); - bugzillaTaskListManager = new BugzillaTaskListManager(); - MylarTasksPlugin.getDefault().addPrimaryContributor(new BugzillaTaskListActionContributor()); - - MylarTasksPlugin.getDefault().getTaskListExternalizer().addExternalizer( - new BugzillaTaskExternalizer() - ); - - } - }); - } /** * This method is called upon plug-in activation */ public void start(BundleContext context) throws Exception { super.start(context); + BugzillaPlugin.setResultEditorMatchAdapter(new BugzillaResultMatchAdapter()); + bugzillaTaskListManager = new BugzillaTaskListManager(); } /** diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/actions/CreateBugzillaTaskAction.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/actions/CreateBugzillaTaskAction.java index cb78d7e7b..d7b730bea 100644 --- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/actions/CreateBugzillaTaskAction.java +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/actions/CreateBugzillaTaskAction.java @@ -17,6 +17,7 @@ import org.eclipse.mylar.bugzilla.ui.BugzillaImages; import org.eclipse.mylar.bugzilla.ui.BugzillaUiPlugin; import org.eclipse.mylar.bugzilla.ui.tasks.BugzillaTask; import org.eclipse.mylar.tasks.ITask; +import org.eclipse.mylar.tasks.ITaskListActionContributor; import org.eclipse.mylar.tasks.MylarTasksPlugin; import org.eclipse.mylar.tasks.internal.TaskCategory; import org.eclipse.mylar.tasks.ui.views.TaskListView; @@ -70,14 +71,18 @@ public class CreateBugzillaTaskAction extends Action { ITask newTask = new BugzillaTask("Bugzilla-"+bugId, "<bugzilla info>", true); Object selectedObject = ((IStructuredSelection)this.view.getViewer().getSelection()).getFirstElement(); - if(MylarTasksPlugin.getDefault().getContributor() != null && MylarTasksPlugin.getDefault().getContributor().acceptsItem(newTask)){ - BugzillaTask newTask2 = (BugzillaTask)MylarTasksPlugin.getDefault().getContributor().taskAdded(newTask); - if(newTask2 == newTask){ - ((BugzillaTask)newTask).scheduleDownloadReport(); - } else { - newTask = newTask2; - ((BugzillaTask)newTask).updateTaskDetails(); - } + ITaskListActionContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(newTask); + if(contributor != null){ + ITask addedTask = contributor.taskAdded(newTask); + if(addedTask instanceof BugzillaTask){ + BugzillaTask newTask2 = (BugzillaTask)addedTask; + if(newTask2 == newTask){ + ((BugzillaTask)newTask).scheduleDownloadReport(); + } else { + newTask = newTask2; + ((BugzillaTask)newTask).updateTaskDetails(); + } + } } else { ((BugzillaTask)newTask).scheduleDownloadReport(); } diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/actions/CreateNewBugzillaTaskAction.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/actions/CreateNewBugzillaTaskAction.java index 04e56ac29..eea6a9e1f 100644 --- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/actions/CreateNewBugzillaTaskAction.java +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/actions/CreateNewBugzillaTaskAction.java @@ -20,6 +20,7 @@ import org.eclipse.mylar.bugzilla.ui.BugzillaUiPlugin; import org.eclipse.mylar.bugzilla.ui.tasks.BugzillaTask; import org.eclipse.mylar.bugzilla.ui.wizard.NewBugWizard; import org.eclipse.mylar.tasks.ITask; +import org.eclipse.mylar.tasks.ITaskListActionContributor; import org.eclipse.mylar.tasks.MylarTasksPlugin; import org.eclipse.mylar.tasks.internal.TaskCategory; import org.eclipse.mylar.tasks.ui.views.TaskListView; @@ -78,13 +79,17 @@ public class CreateNewBugzillaTaskAction extends Action { ITask newTask = new BugzillaTask("Bugzilla-"+bugId, "<bugzilla info>", true); Object selectedObject = ((IStructuredSelection)this.view.getViewer().getSelection()).getFirstElement(); - if(MylarTasksPlugin.getDefault().getContributor() != null && MylarTasksPlugin.getDefault().getContributor().acceptsItem(newTask)){ - BugzillaTask newTask2 = (BugzillaTask)MylarTasksPlugin.getDefault().getContributor().taskAdded(newTask); - if(newTask2 == newTask){ - ((BugzillaTask)newTask).scheduleDownloadReport(); - } else { - newTask = newTask2; - } + ITaskListActionContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(newTask); + if(contributor != null){ + ITask addedTask = contributor.taskAdded(newTask); + if(addedTask instanceof BugzillaTask){ + BugzillaTask newTask2 = (BugzillaTask)addedTask; + if(newTask2 == newTask){ + ((BugzillaTask)newTask).scheduleDownloadReport(); + } else { + newTask = newTask2; + } + } } else { ((BugzillaTask)newTask).scheduleDownloadReport(); } diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/tasks/BugzillaTaskExternalizer.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/tasks/BugzillaTaskExternalizer.java index ebccc9243..e17402f85 100644 --- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/tasks/BugzillaTaskExternalizer.java +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/tasks/BugzillaTaskExternalizer.java @@ -18,6 +18,7 @@ import org.eclipse.mylar.bugzilla.ui.tasks.BugzillaTask.BugTaskState; import org.eclipse.mylar.core.MylarPlugin; import org.eclipse.mylar.tasks.AbstractCategory; import org.eclipse.mylar.tasks.ITask; +import org.eclipse.mylar.tasks.ITaskListActionContributor; import org.eclipse.mylar.tasks.MylarTasksPlugin; import org.eclipse.mylar.tasks.internal.DefaultTaskListExternalizer; import org.eclipse.mylar.tasks.internal.MylarExternalizerException; @@ -170,8 +171,10 @@ public class BugzillaTaskExternalizer extends DefaultTaskListExternalizer { MylarPlugin.log(e, "Failed to read bug report"); } - if(MylarTasksPlugin.getDefault().getContributor() != null && MylarTasksPlugin.getDefault().getContributor().acceptsItem(task)){ - task = (BugzillaTask)MylarTasksPlugin.getDefault().getContributor().taskAdded(task); + ITaskListActionContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(task); + if(contributor != null){ + ITask addedTask = contributor.taskAdded(task); + if(addedTask instanceof BugzillaTask) task = (BugzillaTask)addedTask; } return task; } diff --git a/org.eclipse.mylyn.tasks.ui/plugin.xml b/org.eclipse.mylyn.tasks.ui/plugin.xml index 9b0e1758c..a239d506f 100644 --- a/org.eclipse.mylyn.tasks.ui/plugin.xml +++ b/org.eclipse.mylyn.tasks.ui/plugin.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.0"?> <plugin> + <extension-point id="taskListContributor" name="test" schema="schema/taskListContributor.exsd"/> <extension point="org.eclipse.ui.perspectiveExtensions"> <perspectiveExtension targetID="org.eclipse.jdt.ui.JavaPerspective"> diff --git a/org.eclipse.mylyn.tasks.ui/schema/taskListContributor.exsd b/org.eclipse.mylyn.tasks.ui/schema/taskListContributor.exsd new file mode 100644 index 000000000..28817cd27 --- /dev/null +++ b/org.eclipse.mylyn.tasks.ui/schema/taskListContributor.exsd @@ -0,0 +1,132 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!-- Schema file written by PDE --> +<schema targetNamespace="org.eclipse.mylar.tasks"> +<annotation> + <appInfo> + <meta.schema plugin="org.eclipse.mylar.tasks" id="taskListContributor" name="taskListContributor"/> + </appInfo> + <documentation> + no description + </documentation> + </annotation> + + <element name="extension"> + <complexType> + <sequence> + <element ref="taskListContributor" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="point" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="id" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string"> + <annotation> + <documentation> + + </documentation> + <appInfo> + <meta.attribute translatable="true"/> + </appInfo> + </annotation> + </attribute> + </complexType> + </element> + + <element name="taskListContributor"> + <complexType> + <attribute name="externalizerClass" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + <appInfo> + <meta.attribute kind="java"/> + </appInfo> + </annotation> + </attribute> + <attribute name="actionContributorClass" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + <appInfo> + <meta.attribute kind="java"/> + </appInfo> + </annotation> + </attribute> + <attribute name="id" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string"> + <annotation> + <documentation> + + </documentation> + <appInfo> + <meta.attribute translatable="true"/> + </appInfo> + </annotation> + </attribute> + </complexType> + </element> + + <annotation> + <appInfo> + <meta.section type="since"/> + </appInfo> + <documentation> + + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="examples"/> + </appInfo> + <documentation> + + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="apiInfo"/> + </appInfo> + <documentation> + + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="implementation"/> + </appInfo> + <documentation> + + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="copyright"/> + </appInfo> + <documentation> + + </documentation> + </annotation> + +</schema> diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/MylarTasksPlugin.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/MylarTasksPlugin.java index da3a6d99b..9dd144e45 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/MylarTasksPlugin.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/MylarTasksPlugin.java @@ -26,7 +26,6 @@ import org.eclipse.core.runtime.Preferences.PropertyChangeEvent; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.mylar.core.MylarPlugin; import org.eclipse.mylar.tasks.internal.TaskListExternalizer; -import org.eclipse.mylar.tasks.ui.views.TaskListView; import org.eclipse.swt.events.ShellEvent; import org.eclipse.swt.events.ShellListener; import org.eclipse.ui.IWorkbench; @@ -44,7 +43,11 @@ public class MylarTasksPlugin extends AbstractUIPlugin { private static TaskListManager taskListManager; private TaskListExternalizer externalizer; private List<ITaskListActionContributor> contributors = new ArrayList<ITaskListActionContributor>(); // TODO: use extension points - + + public static final String TASK_CONTRIBUTER_ID = "org.eclipse.mylar.tasks.taskListContributor"; + public static final String EXTERNALIZER_CLASS_ID = "externalizerClass"; + public static final String ACTION_CONTRIBUTER_CLASS_ID = "actionContributorClass"; + public static final String REPORT_OPEN_EDITOR = "org.eclipse.mylar.tasks.report.open.editor"; public static final String REPORT_OPEN_INTERNAL = "org.eclipse.mylar.tasks.report.open.internal"; public static final String REPORT_OPEN_EXTERNAL = "org.eclipse.mylar.tasks.report.open.external"; @@ -58,7 +61,7 @@ public class MylarTasksPlugin extends AbstractUIPlugin { public static final String FILTER_INCOMPLETE_MODE = "org.eclipse.mylar.tasks.filter.incomplete"; private ResourceBundle resourceBundle; - private ITaskListActionContributor primaryContributor; +// private ITaskListActionContributor primaryContributor; public enum Report_Open_Mode { EDITOR, INTERNAL_BROWSER, @@ -298,18 +301,16 @@ public class MylarTasksPlugin extends AbstractUIPlugin { return contributors; } - public ITaskListActionContributor getContributor() { - return primaryContributor; - } - - public void addPrimaryContributor(ITaskListActionContributor contributor) { - this.primaryContributor = contributor; - addContributor(contributor); + public ITaskListActionContributor getContributorForElement(ITaskListElement element){ + for(ITaskListActionContributor contributer: contributors){ + if(contributer.acceptsItem(element)) return contributer; + } + return null; } public void addContributor(ITaskListActionContributor contributor) { contributors.add(contributor); - if (TaskListView.getDefault() != null) TaskListView.getDefault().resetToolbarsAndPopups(); +// if (TaskListView.getDefault() != null) TaskListView.getDefault().resetToolbarsAndPopups(); } private void createFileBackup() { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/internal/TaskListExternalizer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/internal/TaskListExternalizer.java index 18da3039a..a9a9a5187 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/internal/TaskListExternalizer.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/internal/TaskListExternalizer.java @@ -32,12 +32,18 @@ import javax.xml.transform.TransformerFactoryConfigurationError; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; +import org.eclipse.core.runtime.CoreException; +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.Platform; import org.eclipse.mylar.core.MylarPlugin; import org.eclipse.mylar.tasks.AbstractCategory; import org.eclipse.mylar.tasks.ITask; +import org.eclipse.mylar.tasks.ITaskListActionContributor; import org.eclipse.mylar.tasks.ITaskListExternalizer; import org.eclipse.mylar.tasks.MylarTasksPlugin; -import org.eclipse.mylar.tasks.ui.views.TaskListView; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -55,24 +61,61 @@ public class TaskListExternalizer { private String readVersion = ""; private boolean hasCaughtException = false; - public void addExternalizer(ITaskListExternalizer externalizer) { - externalizers.add(externalizer); - defaultExternalizer.setExternalizers(externalizers); - MylarTasksPlugin.getTaskListManager().getTaskList().clear(); - readTaskList(MylarTasksPlugin.getTaskListManager().getTaskList(), MylarTasksPlugin.getTaskListManager().getTaskListFile()); - if(MylarTasksPlugin.getDefault().getContributor() != null){ - MylarTasksPlugin.getDefault().getContributor().restoreState(TaskListView.getDefault()); - if (TaskListView.getDefault() != null) { - TaskListView.getDefault().getViewer().refresh(); + private boolean externalizersInitialized = false; + + // read the extensions and load the required plugins + private void initExtensions() { + // code from "contributing to eclipse" with modifications for deprecated code + if(!externalizersInitialized){ + IExtensionRegistry registry = Platform.getExtensionRegistry(); + IExtensionPoint extensionPoint = registry.getExtensionPoint(MylarTasksPlugin.TASK_CONTRIBUTER_ID); + IExtension[] extensions = extensionPoint.getExtensions(); + for(int i = 0; i < extensions.length; i++){ + IConfigurationElement[] elements = extensions[i].getConfigurationElements(); + for(int j = 0; j < elements.length; j++){ + try{ + Object externalizer = elements[j].createExecutableExtension(MylarTasksPlugin.EXTERNALIZER_CLASS_ID); + if (externalizer instanceof ITaskListExternalizer) { + externalizers.add((ITaskListExternalizer) externalizer); + } else { + MylarPlugin.log("Could not load externalizer: " + externalizer.getClass().getCanonicalName() + " must implement " + ITaskListExternalizer.class.getCanonicalName(), this); + } + + Object contributor = elements[j].createExecutableExtension(MylarTasksPlugin.ACTION_CONTRIBUTER_CLASS_ID); + if (contributor instanceof ITaskListActionContributor) { + MylarTasksPlugin.getDefault().addContributor((ITaskListActionContributor) contributor); + + }else { + MylarPlugin.log("Could not load contributor: " + contributor.getClass().getCanonicalName() + " must implement " + ITaskListActionContributor.class.getCanonicalName(), this); + } + } catch (CoreException e){ + MylarPlugin.log(e, "Could not load extension for externalizer"); + } + } } + externalizersInitialized = true; } } +// public void addExternalizer(ITaskListExternalizer externalizer) { +// externalizers.add(externalizer); +// defaultExternalizer.setExternalizers(externalizers); +// MylarTasksPlugin.getTaskListManager().getTaskList().clear(); +// readTaskList(MylarTasksPlugin.getTaskListManager().getTaskList(), MylarTasksPlugin.getTaskListManager().getTaskListFile()); +// if(MylarTasksPlugin.getDefault().getContributor() != null){ +// MylarTasksPlugin.getDefault().getContributor().restoreState(TaskListView.getDefault()); +// if (TaskListView.getDefault() != null) { +// TaskListView.getDefault().getViewer().refresh(); +// } +// } +// } + public void removeExternalizer(ITaskListExternalizer externalizer) { externalizers.remove(externalizer); } public void writeTaskList(TaskList tlist, File outFile) { + initExtensions(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db; Document doc = null; @@ -122,7 +165,7 @@ public class TaskListExternalizer { writeDOMtoFile(doc, outFile); return; } - + /** * Writes an XML file from a DOM. * @@ -186,6 +229,7 @@ public class TaskListExternalizer { // } public void readTaskList(TaskList tlist, File inFile) { + initExtensions(); hasCaughtException = false; try { // parse file @@ -235,8 +279,9 @@ public class TaskListExternalizer { if (externalizer.canReadTask(child)) { // TODO add the tasks properly ITask newTask = externalizer.readTask(child, tlist, null, null); - if(MylarTasksPlugin.getDefault().getContributor() != null && MylarTasksPlugin.getDefault().getContributor().acceptsItem(newTask)){ - newTask = MylarTasksPlugin.getDefault().getContributor().taskAdded(newTask); + ITaskListActionContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(newTask); + if(contributor != null){ + newTask = contributor.taskAdded(newTask); } tlist.addRootTask(newTask); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/DeleteAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/DeleteAction.java index 0a15a9682..3e9fa5bc5 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/DeleteAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/DeleteAction.java @@ -47,9 +47,8 @@ public class DeleteAction extends Action { Object selectedObject = ((IStructuredSelection) this.view.getViewer() .getSelection()).getFirstElement(); if(selectedObject instanceof ITaskListElement && - MylarTasksPlugin.getDefault().getContributor() != null && - MylarTasksPlugin.getDefault().getContributor().acceptsItem((ITaskListElement)selectedObject)){ - MylarTasksPlugin.getDefault().getContributor().itemDeleted((ITaskListElement)selectedObject); + MylarTasksPlugin.getDefault().getContributorForElement((ITaskListElement)selectedObject) != null){ + MylarTasksPlugin.getDefault().getContributorForElement((ITaskListElement) selectedObject).itemDeleted((ITaskListElement)selectedObject); }else if (selectedObject instanceof ITask) { ITask task = (ITask) selectedObject; if (task.isActive()) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/MarkTaskCompleteAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/MarkTaskCompleteAction.java index 4048cebbc..8b79352c8 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/MarkTaskCompleteAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/MarkTaskCompleteAction.java @@ -14,7 +14,6 @@ package org.eclipse.mylar.tasks.ui.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.mylar.tasks.ITask; -import org.eclipse.mylar.tasks.ITaskListElement; import org.eclipse.mylar.tasks.MylarTasksPlugin; import org.eclipse.mylar.tasks.Task; import org.eclipse.mylar.tasks.TaskListImages; @@ -41,9 +40,8 @@ public class MarkTaskCompleteAction extends Action { // MylarPlugin.getDefault().actionObserved(this); Object selectedObject = ((IStructuredSelection)this.view.getViewer().getSelection()).getFirstElement(); if(selectedObject instanceof ITask && - MylarTasksPlugin.getDefault().getContributor() != null && - MylarTasksPlugin.getDefault().getContributor().acceptsItem((ITaskListElement)selectedObject)){ - MylarTasksPlugin.getDefault().getContributor().taskCompleted((ITask)selectedObject); + MylarTasksPlugin.getDefault().getContributorForElement((ITask)selectedObject) != null) { + MylarTasksPlugin.getDefault().getContributorForElement((ITask)selectedObject).taskCompleted((ITask)selectedObject); }else if (selectedObject instanceof Task){ ((Task)selectedObject).setCompleted(true); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/OpenTaskEditorAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/OpenTaskEditorAction.java index d6dc88b9a..dd56c697f 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/OpenTaskEditorAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/OpenTaskEditorAction.java @@ -14,6 +14,7 @@ package org.eclipse.mylar.tasks.ui.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.mylar.tasks.ITaskListActionContributor; import org.eclipse.mylar.tasks.ITaskListElement; import org.eclipse.mylar.tasks.MylarTasksPlugin; import org.eclipse.mylar.tasks.Task; @@ -42,9 +43,9 @@ public class OpenTaskEditorAction extends Action { Object obj = ((IStructuredSelection)selection).getFirstElement(); if (obj instanceof ITaskListElement) { ITaskListElement element = (ITaskListElement)obj; - if(MylarTasksPlugin.getDefault().getContributor() != null && - MylarTasksPlugin.getDefault().getContributor().acceptsItem(element)){ - MylarTasksPlugin.getDefault().getContributor().itemOpened(element); + ITaskListActionContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(element); + if(contributor != null){ + contributor.itemOpened(element); } else{ if(element instanceof Task){ ((Task)element).openTaskInEditor(); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/views/TaskListView.java index fa06ff89c..74aa13bea 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/views/TaskListView.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/views/TaskListView.java @@ -789,11 +789,10 @@ public class TaskListView extends ViewPart { viewer.refresh(); return true; } else if(selectedObject instanceof ITaskListElement && - MylarTasksPlugin.getDefault().getContributor() != null && - MylarTasksPlugin.getDefault().getContributor().acceptsItem((ITaskListElement)selectedObject) && + MylarTasksPlugin.getDefault().getContributorForElement((ITaskListElement)selectedObject) != null && getCurrentTarget() instanceof TaskCategory){ - MylarTasksPlugin.getDefault().getContributor().dropItem((ITaskListElement)selectedObject, (TaskCategory)getCurrentTarget()); + MylarTasksPlugin.getDefault().getContributorForElement((ITaskListElement)selectedObject).dropItem((ITaskListElement)selectedObject, (TaskCategory)getCurrentTarget()); viewer.setSelection(null); viewer.refresh(); return true; @@ -976,9 +975,9 @@ public class TaskListView extends ViewPart { } public void closeTaskEditors(ITask task, IWorkbenchPage page) throws LoginException, IOException{ - if(MylarTasksPlugin.getDefault().getContributor() != null && - MylarTasksPlugin.getDefault().getContributor().acceptsItem(task)){ - MylarTasksPlugin.getDefault().getContributor().taskClosed(task, page); + ITaskListActionContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(task); + if(contributor != null){ + contributor.taskClosed(task, page); } else if (task instanceof Task) { IEditorInput input = new TaskEditorInput((Task) task); @@ -1153,29 +1152,30 @@ public class TaskListView extends ViewPart { manager.removeAll(); // XXX only adding if there are contributions - if (MylarTasksPlugin.getDefault().getContributor() != null) { - manager.add(createTask); - manager.add(createCategory); - manager.add(new Separator()); - for (IAction action : MylarTasksPlugin.getDefault().getContributor().getToolbarActions(this)) { + List<ITaskListActionContributor> contributors = MylarTasksPlugin.getDefault().getContributors(); + manager.add(createTask); + manager.add(createCategory); + manager.add(new Separator()); + for(ITaskListActionContributor contributor: contributors){ + for (IAction action : contributor.getToolbarActions(this)) { manager.add(action); } manager.add(new Separator()); - manager.add(filterCompleteTask); - manager.add(filterOnPriority); - } + } + manager.add(filterCompleteTask); + manager.add(filterOnPriority); manager.markDirty(); manager.update(true); } - public void resetToolbarsAndPopups() { - getViewSite().getActionBars().getMenuManager().removeAll(); - fillLocalPullDown(getViewSite().getActionBars().getMenuManager()); - fillContextMenu(getViewSite().getActionBars().getMenuManager()); - fillLocalToolBar(getViewSite().getActionBars().getToolBarManager()); - getViewSite().getActionBars().getToolBarManager().update(true); - } +// public void resetToolbarsAndPopups() { +// getViewSite().getActionBars().getMenuManager().removeAll(); +// fillLocalPullDown(getViewSite().getActionBars().getMenuManager()); +// fillContextMenu(getViewSite().getActionBars().getMenuManager()); +// fillLocalToolBar(getViewSite().getActionBars().getToolBarManager()); +// getViewSite().getActionBars().getToolBarManager().update(true); +// } } //TextTransfer textTransfer = TextTransfer.getInstance(); |