diff options
author | mkersten | 2007-06-18 15:46:42 +0000 |
---|---|---|
committer | mkersten | 2007-06-18 15:46:42 +0000 |
commit | 5201f3664a4620f485dd1c3f5c5b0a425f68efbd (patch) | |
tree | 6cb9a3071a73abf045ca19fc016b318d4a5938a9 /org.eclipse.mylyn.tasks.ui | |
parent | 8f4d3f3344b399102876d7743c31dcb398a44f3d (diff) | |
download | org.eclipse.mylyn.tasks-5201f3664a4620f485dd1c3f5c5b0a425f68efbd.tar.gz org.eclipse.mylyn.tasks-5201f3664a4620f485dd1c3f5c5b0a425f68efbd.tar.xz org.eclipse.mylyn.tasks-5201f3664a4620f485dd1c3f5c5b0a425f68efbd.zip |
RESOLVED - bug 189308: task list working sets interact badly with resource working sets
https://bugs.eclipse.org/bugs/show_bug.cgi?id=189308
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
20 files changed, 123 insertions, 70 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/plugin.xml b/org.eclipse.mylyn.tasks.ui/plugin.xml index f6648e61e..da0511452 100644 --- a/org.eclipse.mylyn.tasks.ui/plugin.xml +++ b/org.eclipse.mylyn.tasks.ui/plugin.xml @@ -776,7 +776,7 @@ elementAdapterClass="org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetElementAdapter" icon="icons/etool16/open-task.gif" id="org.eclipse.mylyn.tasks.ui.workingSet" - name="Tasks" + name="Tasks and Resources" pageClass="org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetPage" updaterClass="org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetUpdater"/> </extension> @@ -784,7 +784,7 @@ point="org.eclipse.core.runtime.adapters"> <factory adaptableType="org.eclipse.mylyn.tasks.core.AbstractTaskContainer" - class="org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskAdapterFactory"> + class="org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetAdapterFactory"> <adapter type="org.eclipse.ui.IPersistableElement"> </adapter> @@ -793,8 +793,8 @@ <extension point="org.eclipse.ui.elementFactories"> <factory - class="org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskElementFactory" - id="org.eclipse.mylyn.tasks.ui.elementFactory"> + class="org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetElementFactory" + id="org.eclipse.mylyn.tasks.ui.workingSets.elementFactory"> </factory> </extension> <extension diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationIncoming.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationIncoming.java index b3fb3992a..5d9177ef5 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationIncoming.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationIncoming.java @@ -29,7 +29,7 @@ public class TaskListNotificationIncoming implements ITaskListNotification { private String description = null; - private DecoratingLabelProvider labelProvider = new DecoratingLabelProvider(new TaskElementLabelProvider(), + private DecoratingLabelProvider labelProvider = new DecoratingLabelProvider(new TaskElementLabelProvider(true), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()); private Date date; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationQueryIncoming.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationQueryIncoming.java index ca57d05b4..376ef6a4e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationQueryIncoming.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationQueryIncoming.java @@ -27,7 +27,7 @@ public class TaskListNotificationQueryIncoming implements ITaskListNotification private final AbstractTask hit; - private DecoratingLabelProvider labelProvider = new DecoratingLabelProvider(new TaskElementLabelProvider(), + private DecoratingLabelProvider labelProvider = new DecoratingLabelProvider(new TaskElementLabelProvider(true), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()); private Date date; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationReminder.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationReminder.java index 74327b77c..67acdf1e6 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationReminder.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationReminder.java @@ -27,7 +27,7 @@ public class TaskListNotificationReminder implements ITaskListNotification { private final AbstractTask task; - private DecoratingLabelProvider labelProvider = new DecoratingLabelProvider(new TaskElementLabelProvider(), + private DecoratingLabelProvider labelProvider = new DecoratingLabelProvider(new TaskElementLabelProvider(true), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()); private Date date; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskNavigateDropDownAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskNavigateDropDownAction.java index b39f42cd2..1cfb08256 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskNavigateDropDownAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskNavigateDropDownAction.java @@ -33,7 +33,7 @@ public abstract class TaskNavigateDropDownAction extends Action implements IMenu protected Menu dropDownMenu = null; - protected TaskElementLabelProvider labelProvider = new TaskElementLabelProvider(); + protected TaskElementLabelProvider labelProvider = new TaskElementLabelProvider(false); /** Maximum number of items to appear in the drop-down menu */ protected final static int MAX_ITEMS_TO_DISPLAY = 12; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java index 87ead38ac..c1eed843d 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java @@ -148,7 +148,7 @@ public class TaskSelectionDialog extends SelectionStatusDialog { openInBrowserCheck.setSelection(openInBrowser); } - final TaskElementLabelProvider labelProvider = new TaskElementLabelProvider(); + final TaskElementLabelProvider labelProvider = new TaskElementLabelProvider(true); viewer.setLabelProvider(labelProvider); viewer.setContentProvider(new ArrayContentProvider()); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/commands/RemoteTaskSelectionDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/commands/RemoteTaskSelectionDialog.java index d69ceeb47..94f935bc8 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/commands/RemoteTaskSelectionDialog.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/commands/RemoteTaskSelectionDialog.java @@ -118,7 +118,7 @@ public class RemoteTaskSelectionDialog extends SelectionStatusDialog { matchingTasksLabel.setText("&Matching tasks:"); tasksViewer = new TableViewer(area, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); tasksViewer.getControl().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).hint(400, 200).create()); - tasksViewer.setLabelProvider(new DecoratingLabelProvider(new TaskElementLabelProvider(), PlatformUI + tasksViewer.setLabelProvider(new DecoratingLabelProvider(new TaskElementLabelProvider(true), PlatformUI .getWorkbench().getDecoratorManager().getLabelDecorator())); tasksViewer.setContentProvider(new ArrayContentProvider()); tasksViewer.addFilter(new ViewerFilter() { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizardPage.java index cc862bfe9..256ece68b 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizardPage.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizardPage.java @@ -71,7 +71,7 @@ public class TaskActivityWizardPage extends WizardPage { private Table filtersTable; - private TaskElementLabelProvider labelProvider = new TaskElementLabelProvider(); + private TaskElementLabelProvider labelProvider = new TaskElementLabelProvider(false); public TaskActivityWizardPage() { super(TITLE); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanLabelProvider.java index cf2ded806..15926a599 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanLabelProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanLabelProvider.java @@ -25,6 +25,10 @@ import org.eclipse.swt.graphics.Image; */ public class TaskPlanLabelProvider extends TaskElementLabelProvider implements ITableLabelProvider { + public TaskPlanLabelProvider() { + super(true); + } + // {".", "Description", "Priority", "Estimated Time", "Reminder Date"}; public Image getColumnImage(Object element, int columnIndex) { if (columnIndex == 0) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.java index a29a3db7e..c1b5b5900 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.java @@ -28,7 +28,11 @@ import org.eclipse.swt.graphics.Image; */ public class TaskPlannerLabelProvider extends TaskElementLabelProvider implements ITableLabelProvider, IColorProvider { - private TaskElementLabelProvider taskListLabelProvider = new TaskElementLabelProvider(); + public TaskPlannerLabelProvider() { + super(true); + } + + private TaskElementLabelProvider taskListLabelProvider = new TaskElementLabelProvider(true); public Image getColumnImage(Object element, int columnIndex) { if (columnIndex == 0) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResultView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResultView.java index 21d1308bf..1d14918ad 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResultView.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResultView.java @@ -152,7 +152,7 @@ public class RepositorySearchResultView extends AbstractTextSearchViewPage imple TaskListColorsAndFonts.THEME_COLOR_TASKLIST_CATEGORY); SearchViewTableLabelProvider taskListTableLabelProvider = new SearchViewTableLabelProvider( - new TaskElementLabelProvider(), + new TaskElementLabelProvider(true), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator(), categoryBackground); viewer.setLabelProvider(taskListTableLabelProvider); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java index 094b4737a..96ffb1d3f 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java @@ -48,30 +48,41 @@ public class TaskElementLabelProvider extends LabelProvider implements IColorPro private static final Pattern pattern = Pattern.compile("\\d*: .*"); + private boolean compositeImages = false; + private class CompositeImageDescriptor { ImageDescriptor icon; ImageDescriptor overlayKind; - + }; - public TaskElementLabelProvider() { +// public TaskElementLabelProvider() { +// super(); +// } + + public TaskElementLabelProvider(boolean compositeImages) { super(); + this.compositeImages = compositeImages; } @Override public Image getImage(Object element) { CompositeImageDescriptor compositeDescriptor = getImageDescriptor(element); - if (element instanceof AbstractTask) { - if (compositeDescriptor.overlayKind == null) { - compositeDescriptor.overlayKind = TasksUiImages.OVERLAY_BLANK; - } - return TasksUiImages.getCompositeTaskImage(compositeDescriptor.icon, compositeDescriptor.overlayKind); - } else if (element instanceof AbstractTaskContainer) { - return TasksUiImages.getCompositeTaskImage(compositeDescriptor.icon, TasksUiImages.OVERLAY_BLANK); + if (!compositeImages) { + return TasksUiImages.getImage(compositeDescriptor.icon); } else { - return TasksUiImages.getCompositeTaskImage(compositeDescriptor.icon, null); + if (element instanceof AbstractTask) { + if (compositeDescriptor.overlayKind == null) { + compositeDescriptor.overlayKind = TasksUiImages.OVERLAY_BLANK; + } + return TasksUiImages.getCompositeTaskImage(compositeDescriptor.icon, compositeDescriptor.overlayKind); + } else if (element instanceof AbstractTaskContainer) { + return TasksUiImages.getCompositeTaskImage(compositeDescriptor.icon, TasksUiImages.OVERLAY_BLANK); + } else { + return TasksUiImages.getCompositeTaskImage(compositeDescriptor.icon, null); + } } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java index 6ca90190e..d0dfdd7d4 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java @@ -834,7 +834,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { final IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager(); Color categoryBackground = themeManager.getCurrentTheme().getColorRegistry().get( TaskListColorsAndFonts.THEME_COLOR_TASKLIST_CATEGORY); - taskListTableLabelProvider = new TaskTableLabelProvider(new TaskElementLabelProvider(), + taskListTableLabelProvider = new TaskTableLabelProvider(new TaskElementLabelProvider(true), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator(), categoryBackground); getViewer().setLabelProvider(taskListTableLabelProvider); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizardPage.java index a1d5af682..5c0d9e0e9 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizardPage.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizardPage.java @@ -58,7 +58,7 @@ public class ContextRetrieveWizardPage extends WizardPage { private AbstractTask task; - private TaskElementLabelProvider labelProvider = new TaskElementLabelProvider(); + private TaskElementLabelProvider labelProvider = new TaskElementLabelProvider(false); private RepositoryAttachment selectedContextAttachment = null; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskElementFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskElementFactory.java deleted file mode 100644 index 4bd0b070c..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskElementFactory.java +++ /dev/null @@ -1,38 +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.mylyn.internal.tasks.ui.workingsets; - -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.tasks.core.TaskList; -import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; -import org.eclipse.ui.IElementFactory; -import org.eclipse.ui.IMemento; - -/** - * Element factory used to restore task containers for working sets - * - * @author Eugene Kuleshov - */ -public class TaskElementFactory implements IElementFactory { - - public static final String ID_HANDLE = "handle"; - - public IAdaptable createElement(IMemento memento) { - TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList(); - - String handle = memento.getString(ID_HANDLE); - for (AbstractTaskContainer element : taskList.getRootElements()) { - if (element instanceof AbstractTaskContainer && element.getHandleIdentifier().equals(handle)) { - return (IAdaptable) element; - } - } - return null; - } -}
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskAdapterFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetAdapterFactory.java index b33e619bc..afe940e5b 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskAdapterFactory.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetAdapterFactory.java @@ -8,6 +8,7 @@ package org.eclipse.mylyn.internal.tasks.ui.workingsets; +import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.ui.IMemento; @@ -18,9 +19,9 @@ import org.eclipse.ui.IPersistableElement; * * @author Eugene Kuleshov */ -public class TaskAdapterFactory implements IAdapterFactory { +public class TaskWorkingSetAdapterFactory implements IAdapterFactory { - private static final String TASK_ELEMENT_FACTORY_ID = "org.eclipse.mylyn.tasks.ui.elementFactory"; + private static final String TASK_ELEMENT_FACTORY_ID = "org.eclipse.mylyn.tasks.ui.workingSets.elementFactory"; @SuppressWarnings("unchecked") private static final Class[] ADAPTER_TYPES = new Class[] { IPersistableElement.class }; @@ -32,11 +33,21 @@ public class TaskAdapterFactory implements IAdapterFactory { public Object getAdapter(final Object adaptableObject, @SuppressWarnings("unchecked") Class adapterType) { if (adapterType == IPersistableElement.class && adaptableObject instanceof AbstractTaskContainer) { - return new IPersistableElement() { public void saveState(IMemento memento) { AbstractTaskContainer container = (AbstractTaskContainer) adaptableObject; - memento.putString(TaskElementFactory.ID_HANDLE, container.getHandleIdentifier()); + memento.putString(TaskWorkingSetElementFactory.HANDLE_TASK, container.getHandleIdentifier()); + } + + public String getFactoryId() { + return TASK_ELEMENT_FACTORY_ID; + } + }; + } else if (adapterType == IPersistableElement.class && adaptableObject instanceof IProject) { + return new IPersistableElement() { + public void saveState(IMemento memento) { + IProject project = (IProject) adaptableObject; + memento.putString(TaskWorkingSetElementFactory.HANDLE_PROJECT, project.getName()); } public String getFactoryId() { @@ -46,6 +57,5 @@ public class TaskAdapterFactory implements IAdapterFactory { } return null; } - } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementAdapter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementAdapter.java index 582410556..cd15e76d8 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementAdapter.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementAdapter.java @@ -11,6 +11,7 @@ package org.eclipse.mylyn.internal.tasks.ui.workingsets; import java.util.ArrayList; import java.util.List; +import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.ui.IWorkingSet; @@ -18,6 +19,7 @@ import org.eclipse.ui.IWorkingSetElementAdapter; /** * @author Eugene Kuleshov + * @author Mik Kersten */ public class TaskWorkingSetElementAdapter implements IWorkingSetElementAdapter { @@ -36,6 +38,8 @@ public class TaskWorkingSetElementAdapter implements IWorkingSetElementAdapter { for (IAdaptable adaptable : elements) { if (adaptable instanceof AbstractTaskContainer) { containers.add(adaptable); + } else if (adaptable instanceof IProject) { + containers.add(adaptable); } } return (IAdaptable[]) containers.toArray(new IAdaptable[containers.size()]); @@ -44,5 +48,4 @@ public class TaskWorkingSetElementAdapter implements IWorkingSetElementAdapter { public void dispose() { // ignore } - }
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementFactory.java new file mode 100644 index 000000000..5e2abfcdc --- /dev/null +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementFactory.java @@ -0,0 +1,52 @@ +/******************************************************************************* + * 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.mylyn.internal.tasks.ui.workingsets; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; +import org.eclipse.mylyn.tasks.core.TaskList; +import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; +import org.eclipse.ui.IElementFactory; +import org.eclipse.ui.IMemento; + +/** + * Element factory used to restore task containers and projects for Task+Resource working sets. + * + * @author Eugene Kuleshov + * @author Mik Kersten + */ +public class TaskWorkingSetElementFactory implements IElementFactory { + + static final String HANDLE_TASK = "handle.task"; + + static final String HANDLE_PROJECT = "handle.task"; + + public IAdaptable createElement(IMemento memento) { + String taskHandle = memento.getString(HANDLE_TASK); + if (taskHandle != null) { + // TOOD: this does not support projects and categories/queries have the same name + TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList(); + for (AbstractTaskContainer element : taskList.getRootElements()) { + if (element.getHandleIdentifier().equals(taskHandle)) { + return (IAdaptable) element; + } + } + } + String projectHandle = memento.getString(HANDLE_PROJECT); + if (projectHandle != null) { + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectHandle); + if (project != null) { + return project; + } + } + return null; + } +}
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetPage.java index 7024b0779..abe5f254e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetPage.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetPage.java @@ -111,7 +111,7 @@ public class TaskWorkingSetPage extends WizardPage implements IWorkingSetPage { class AggregateLabelProvider implements ILabelProvider { - private TaskElementLabelProvider taskProvider = new TaskElementLabelProvider(); + private TaskElementLabelProvider taskProvider = new TaskElementLabelProvider(false); private WorkbenchLabelProvider workbenchProvider = new WorkbenchLabelProvider(); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java index 0a57b5dc3..cde9d4d1f 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java @@ -14,6 +14,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.core.ITaskListChangeListener; @@ -51,6 +53,11 @@ public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChang list.add(adaptable); } } + } else if (adaptable instanceof IProject) { + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(((IProject)adaptable).getName()); + if (project != null && project.exists()) { + list.add(project); + } } } workingSet.setElements(list.toArray(new IAdaptable[list.size()])); |