Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsminto2005-07-19 19:45:23 +0000
committersminto2005-07-19 19:45:23 +0000
commit32c15aa3f27438f813f3ce451d0a6c5778f1c380 (patch)
treeadfb7054d09550841d158dd84d8fa9cd4c8b4e3c
parent29630f4da28d93befe02842d142e832baf279447 (diff)
downloadorg.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
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/plugin.xml17
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/BugzillaUiPlugin.java26
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/actions/CreateBugzillaTaskAction.java21
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/actions/CreateNewBugzillaTaskAction.java19
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/tasks/BugzillaTaskExternalizer.java7
-rw-r--r--org.eclipse.mylyn.tasks.ui/plugin.xml1
-rw-r--r--org.eclipse.mylyn.tasks.ui/schema/taskListContributor.exsd132
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/MylarTasksPlugin.java23
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/internal/TaskListExternalizer.java71
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/DeleteAction.java5
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/MarkTaskCompleteAction.java6
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/actions/OpenTaskEditorAction.java7
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/views/TaskListView.java42
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();

Back to the top