From 40a2f3c097a428c2e7bf80c35f83d2e2a58e8463 Mon Sep 17 00:00:00 2001 From: sminto Date: Tue, 19 Jul 2005 22:33:53 +0000 Subject: fixed Bug #103588: use extension points in place of ITaskListActionContributor --- .../icons/elcl16/context-clear.gif | Bin 544 -> 0 bytes .../org/eclipse/mylyn/tasks/ITaskContributor.java | 47 ++++++++++++++++++ .../mylyn/tasks/ITaskListActionContributor.java | 54 --------------------- .../org/eclipse/mylyn/tasks/MylarTasksPlugin.java | 10 ++-- .../mylyn/tasks/internal/TaskListExternalizer.java | 12 ++--- .../tasks/ui/actions/OpenTaskEditorAction.java | 4 +- .../eclipse/mylyn/tasks/ui/views/TaskListView.java | 26 +++------- 7 files changed, 67 insertions(+), 86 deletions(-) delete mode 100644 org.eclipse.mylyn.tasks.ui/icons/elcl16/context-clear.gif create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITaskContributor.java delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITaskListActionContributor.java (limited to 'org.eclipse.mylyn.tasks.ui') diff --git a/org.eclipse.mylyn.tasks.ui/icons/elcl16/context-clear.gif b/org.eclipse.mylyn.tasks.ui/icons/elcl16/context-clear.gif deleted file mode 100644 index 2abc46b38..000000000 Binary files a/org.eclipse.mylyn.tasks.ui/icons/elcl16/context-clear.gif and /dev/null differ diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITaskContributor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITaskContributor.java new file mode 100644 index 000000000..cf2f27a5c --- /dev/null +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITaskContributor.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2005 University Of British Columbia 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.tasks; + +import org.eclipse.jface.action.MenuManager; +import org.eclipse.mylar.tasks.internal.TaskCategory; +import org.eclipse.mylar.tasks.ui.views.TaskListView; +import org.eclipse.ui.IWorkbenchPage; + +/** + * @author Mik Kersten + * + * TODO: this should use extension points + */ +public interface ITaskContributor { + + public abstract MenuManager getSubMenuManager(TaskListView view, ITaskListElement selection); + + public abstract void taskActivated(ITask task); + + public abstract void taskDeactivated(ITask task); + + public abstract void itemDeleted(ITaskListElement element); + + public abstract void taskCompleted(ITask task); + + public abstract void itemOpened(ITaskListElement element); + + public abstract void taskClosed(ITask element, IWorkbenchPage page); + + public abstract boolean acceptsItem(ITaskListElement element); + + public abstract void dropItem(ITaskListElement element, TaskCategory category); + + public abstract ITask taskAdded(ITask newTask); + + public abstract void restoreState(TaskListView taskListView); +} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITaskListActionContributor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITaskListActionContributor.java deleted file mode 100644 index 1bdd833c4..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ITaskListActionContributor.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2005 University Of British Columbia 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.tasks; - -import java.util.List; - -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.mylar.tasks.internal.TaskCategory; -import org.eclipse.mylar.tasks.ui.views.TaskListView; -import org.eclipse.ui.IWorkbenchPage; - -/** - * @author Mik Kersten - * - * TODO: this should use extension points - */ -public interface ITaskListActionContributor { - - public abstract List getToolbarActions(TaskListView view); - - public abstract List getPopupActions(TaskListView view, ITaskListElement selection); - - public abstract MenuManager getSubMenuManager(TaskListView view, ITaskListElement selection); - - public abstract void taskActivated(ITask task); - - public abstract void taskDeactivated(ITask task); - - public abstract void itemDeleted(ITaskListElement element); - - public abstract void taskCompleted(ITask task); - - public abstract void itemOpened(ITaskListElement element); - - public void taskClosed(ITask element, IWorkbenchPage page); - - public abstract boolean acceptsItem(ITaskListElement element); - - public abstract void dropItem(ITaskListElement element, TaskCategory category); - - public abstract ITask taskAdded(ITask newTask); - - public abstract void restoreState(TaskListView taskListView); -} 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 9dd144e45..69e3cd486 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 @@ -42,7 +42,7 @@ public class MylarTasksPlugin extends AbstractUIPlugin { private static MylarTasksPlugin plugin; private static TaskListManager taskListManager; private TaskListExternalizer externalizer; - private List contributors = new ArrayList(); // TODO: use extension points + private List contributors = new ArrayList(); // TODO: use extension points public static final String TASK_CONTRIBUTER_ID = "org.eclipse.mylar.tasks.taskListContributor"; public static final String EXTERNALIZER_CLASS_ID = "externalizerClass"; @@ -297,18 +297,18 @@ public class MylarTasksPlugin extends AbstractUIPlugin { return externalizer; } - public List getContributors() { + public List getContributors() { return contributors; } - public ITaskListActionContributor getContributorForElement(ITaskListElement element){ - for(ITaskListActionContributor contributer: contributors){ + public ITaskContributor getContributorForElement(ITaskListElement element){ + for(ITaskContributor contributer: contributors){ if(contributer.acceptsItem(element)) return contributer; } return null; } - public void addContributor(ITaskListActionContributor contributor) { + public void addContributor(ITaskContributor contributor) { contributors.add(contributor); // if (TaskListView.getDefault() != null) TaskListView.getDefault().resetToolbarsAndPopups(); } 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 72dd2ea30..81af05092 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 @@ -41,7 +41,7 @@ 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.ITaskContributor; import org.eclipse.mylar.tasks.ITaskListExternalizer; import org.eclipse.mylar.tasks.MylarTasksPlugin; import org.w3c.dom.Document; @@ -82,14 +82,14 @@ public class TaskListExternalizer { } Object contributor = elements[j].createExecutableExtension(MylarTasksPlugin.ACTION_CONTRIBUTER_CLASS_ID); - if (contributor instanceof ITaskListActionContributor) { - MylarTasksPlugin.getDefault().addContributor((ITaskListActionContributor) contributor); + if (contributor instanceof ITaskContributor) { + MylarTasksPlugin.getDefault().addContributor((ITaskContributor) contributor); }else { - MylarPlugin.log("Could not load contributor: " + contributor.getClass().getCanonicalName() + " must implement " + ITaskListActionContributor.class.getCanonicalName(), this); + MylarPlugin.log("Could not load contributor: " + contributor.getClass().getCanonicalName() + " must implement " + ITaskContributor.class.getCanonicalName(), this); } } catch (CoreException e){ - MylarPlugin.log(e, "Could not load extension for externalizer"); + MylarPlugin.log(e, "Could not load extensions"); } } } @@ -280,7 +280,7 @@ public class TaskListExternalizer { if (externalizer.canReadTask(child)) { // TODO add the tasks properly ITask newTask = externalizer.readTask(child, tlist, null, null); - ITaskListActionContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(newTask); + ITaskContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(newTask); if(contributor != null){ newTask = contributor.taskAdded(newTask); } 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 dd56c697f..af95cfb5b 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,7 +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.ITaskContributor; import org.eclipse.mylar.tasks.ITaskListElement; import org.eclipse.mylar.tasks.MylarTasksPlugin; import org.eclipse.mylar.tasks.Task; @@ -43,7 +43,7 @@ public class OpenTaskEditorAction extends Action { Object obj = ((IStructuredSelection)selection).getFirstElement(); if (obj instanceof ITaskListElement) { ITaskListElement element = (ITaskListElement)obj; - ITaskListActionContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(element); + ITaskContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(element); if(contributor != null){ contributor.itemOpened(element); } else{ 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 74aa13bea..0b850bc20 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 @@ -20,7 +20,6 @@ import javax.security.auth.login.LoginException; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; -import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuCreator; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; @@ -52,7 +51,7 @@ import org.eclipse.mylar.core.MylarPlugin; import org.eclipse.mylar.dt.MylarWebRef; import org.eclipse.mylar.tasks.AbstractCategory; import org.eclipse.mylar.tasks.ITask; -import org.eclipse.mylar.tasks.ITaskListActionContributor; +import org.eclipse.mylar.tasks.ITaskContributor; import org.eclipse.mylar.tasks.ITaskListElement; import org.eclipse.mylar.tasks.MylarTasksPlugin; import org.eclipse.mylar.tasks.Task; @@ -856,17 +855,12 @@ public class TaskListView extends ViewPart { manager.add(delete); manager.add(new Separator()); manager.add(createTask); -// manager.add(new Separator()); + manager.add(new Separator("mylar")); final Object selectedObject = ((IStructuredSelection)viewer.getSelection()).getFirstElement(); if (selectedObject instanceof ITaskListElement) { - for (ITaskListActionContributor contributor : MylarTasksPlugin.getDefault().getContributors()) { - for (IAction action : contributor.getPopupActions(this, null)) { - manager.add(action); - } - } - - for (ITaskListActionContributor contributor : MylarTasksPlugin.getDefault().getContributors()) { + + for (ITaskContributor contributor : MylarTasksPlugin.getDefault().getContributors()) { manager.add(new Separator()); MenuManager subMenuManager = contributor.getSubMenuManager(this, (ITaskListElement)selectedObject); if (subMenuManager != null) manager.add(subMenuManager); @@ -975,7 +969,7 @@ public class TaskListView extends ViewPart { } public void closeTaskEditors(ITask task, IWorkbenchPage page) throws LoginException, IOException{ - ITaskListActionContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(task); + ITaskContributor contributor = MylarTasksPlugin.getDefault().getContributorForElement(task); if(contributor != null){ contributor.taskClosed(task, page); } else if (task instanceof Task) { @@ -1151,17 +1145,11 @@ public class TaskListView extends ViewPart { private void fillLocalToolBar(IToolBarManager manager) { manager.removeAll(); - // XXX only adding if there are contributions - List contributors = MylarTasksPlugin.getDefault().getContributors(); manager.add(createTask); manager.add(createCategory); + manager.add(new Separator("mylar")); + 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); -- cgit v1.2.3