diff options
author | mkersten | 2007-06-16 20:20:55 +0000 |
---|---|---|
committer | mkersten | 2007-06-16 20:20:55 +0000 |
commit | 23522647b2fc4a09610fa2cad536fbf758a3b319 (patch) | |
tree | efd773fafced922e69ac8bfe0d04fd4b93a52071 | |
parent | 3010d84c426f387a0bfde4495bb72a1c320820d5 (diff) | |
download | org.eclipse.mylyn.tasks-23522647b2fc4a09610fa2cad536fbf758a3b319.tar.gz org.eclipse.mylyn.tasks-23522647b2fc4a09610fa2cad536fbf758a3b319.tar.xz org.eclipse.mylyn.tasks-23522647b2fc4a09610fa2cad536fbf758a3b319.zip |
RESOLVED - bug 193005: scope task history switcher and search to working set
https://bugs.eclipse.org/bugs/show_bug.cgi?id=193005
9 files changed, 128 insertions, 85 deletions
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskHistoryTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskHistoryTest.java index 6e6a918cf..2276b09e0 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskHistoryTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskHistoryTest.java @@ -16,7 +16,7 @@ import java.util.List; import junit.framework.TestCase; import org.eclipse.mylyn.context.core.ContextCorePlugin; -import org.eclipse.mylyn.internal.tasks.ui.actions.PreviousTaskDropDownAction; +import org.eclipse.mylyn.internal.tasks.ui.actions.ActiveTaskHistoryDropDownAction; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskActivateAction; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskDeactivateAction; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskNavigateDropDownAction.TaskNavigateAction; @@ -169,7 +169,7 @@ public class TaskHistoryTest extends TestCase { assertTrue(prevHistoryList.get(prevHistoryList.size() - 4) == task1); // Get a task from the list and activate it - PreviousTaskDropDownAction prevAction = new PreviousTaskDropDownAction(history); + ActiveTaskHistoryDropDownAction prevAction = new ActiveTaskHistoryDropDownAction(history, false); TaskNavigateAction navigateAction = prevAction.new TaskNavigateAction(task2); navigateAction.run(); assertTrue(task2.isActive()); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskTrimWidget.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskTrimWidget.java index 625db4706..210201b04 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskTrimWidget.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskTrimWidget.java @@ -25,7 +25,7 @@ import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer; import org.eclipse.mylyn.internal.tasks.ui.actions.CopyTaskDetailsAction; import org.eclipse.mylyn.internal.tasks.ui.actions.OpenTaskListElementAction; import org.eclipse.mylyn.internal.tasks.ui.actions.OpenWithBrowserAction; -import org.eclipse.mylyn.internal.tasks.ui.actions.PreviousTaskDropDownAction; +import org.eclipse.mylyn.internal.tasks.ui.actions.ActiveTaskHistoryDropDownAction; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskActivateAction; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskDeactivateAction; import org.eclipse.mylyn.internal.tasks.ui.views.TaskListFilteredTree; @@ -71,7 +71,7 @@ public class TaskTrimWidget extends WorkbenchWindowControlContribution { private Hyperlink activeTaskLabel; - private PreviousTaskDropDownAction navigateAction; + private ActiveTaskHistoryDropDownAction navigateAction; private OpenWithBrowserAction openWithBrowserAction = new OpenWithBrowserAction(); @@ -147,7 +147,7 @@ public class TaskTrimWidget extends WorkbenchWindowControlContribution { GridData gridData = new GridData(SWT.NONE, SWT.CENTER, false, false); composite.setLayoutData(gridData); - navigateAction = new PreviousTaskDropDownAction(TasksUiPlugin.getTaskListManager().getTaskActivationHistory()); + navigateAction = new ActiveTaskHistoryDropDownAction(TasksUiPlugin.getTaskListManager().getTaskActivationHistory(), false); ToolBarManager manager = new ToolBarManager(SWT.FLAT); manager.add(navigateAction); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/PreviousTaskDropDownAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActiveTaskHistoryDropDownAction.java index 0afad1226..d418d2220 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/PreviousTaskDropDownAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActiveTaskHistoryDropDownAction.java @@ -10,15 +10,23 @@ *******************************************************************************/ package org.eclipse.mylyn.internal.tasks.ui.actions; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.Separator; import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages; import org.eclipse.mylyn.internal.tasks.ui.views.TaskActivationHistory; +import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; import org.eclipse.mylyn.tasks.core.AbstractTask; +import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; +import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.PlatformUI; /** @@ -26,22 +34,44 @@ import org.eclipse.ui.PlatformUI; * @author Mik Kersten * @author Leo Dos Santos */ -public class PreviousTaskDropDownAction extends TaskNavigateDropDownAction { +public class ActiveTaskHistoryDropDownAction extends TaskNavigateDropDownAction { public static final String ID = "org.eclipse.mylyn.tasklist.actions.navigate.previous"; - public PreviousTaskDropDownAction(TaskActivationHistory history) { + private boolean scopeToWorkingSet = false; + + public ActiveTaskHistoryDropDownAction(TaskActivationHistory history, boolean scopeToWorkingSet) { super(history); setText("Previous Task"); setToolTipText("Previous Task"); setId(ID); setEnabled(true); setImageDescriptor(TasksUiImages.NAVIGATE_PREVIOUS); + this.scopeToWorkingSet = scopeToWorkingSet; } @Override protected void addActionsToMenu() { - List<AbstractTask> tasks = taskHistory.getPreviousTasks(); + List<AbstractTask> tasks = new ArrayList<AbstractTask>(taskHistory.getPreviousTasks()); + Set<IWorkingSet> sets = TaskListView.getActiveWorkingSets(); + if (scopeToWorkingSet && !sets.isEmpty()) { + Set<AbstractTask> allWorkingSetTasks = new HashSet<AbstractTask>(); + for (IWorkingSet workingSet : sets) { + IAdaptable[] elements = workingSet.getElements(); + for (IAdaptable adaptable : elements) { + if (adaptable instanceof AbstractTaskContainer) { + allWorkingSetTasks.addAll(((AbstractTaskContainer) adaptable).getChildren()); + } + } + } + List<AbstractTask> allScopedTasks = new ArrayList<AbstractTask>(tasks); + for (AbstractTask task : tasks) { + if (!allWorkingSetTasks.contains(task)) { + allScopedTasks.remove(task); + } + } + tasks = allScopedTasks; + } if (tasks.size() > MAX_ITEMS_TO_DISPLAY) { tasks = tasks.subList(tasks.size() - MAX_ITEMS_TO_DISPLAY, tasks.size()); @@ -91,7 +121,7 @@ public class PreviousTaskDropDownAction extends TaskNavigateDropDownAction { setEnabled(true); setChecked(false); setImageDescriptor(null); - //TasksUiImages.TASK_INACTIVE); + //TasksUiImages.TASK_INACTIVE); } @Override @@ -117,7 +147,7 @@ public class PreviousTaskDropDownAction extends TaskNavigateDropDownAction { setEnabled(true); setChecked(false); setImageDescriptor(null); - //TasksUiImages.TASK_ACTIVE); + //TasksUiImages.TASK_ACTIVE); } @Override diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskWorkingSetAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskWorkingSetAction.java index 07369541d..7e7479892 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskWorkingSetAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskWorkingSetAction.java @@ -30,7 +30,6 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.window.Window; import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; @@ -53,6 +52,7 @@ import org.eclipse.ui.internal.dialogs.WorkingSetLabelProvider; * Derived from SelectWorkingSetsAction * * @author Leo Dos Santos + * @author Mik Kersten */ public class TaskWorkingSetAction extends Action implements IMenuCreator { @@ -165,7 +165,8 @@ public class TaskWorkingSetAction extends Action implements IMenuCreator { return true; } - private boolean areAllTaskWorkingSetsEnabled() { + // TODO: delete if not used + protected boolean areAllTaskWorkingSetsEnabled() { IWorkingSet[] workingSets = getAllWorkingSets(); for (IWorkingSet workingSet : workingSets) { if (workingSet != null && workingSet.getId().equalsIgnoreCase(ID_TASK_WORKING_SET)) { @@ -192,9 +193,7 @@ public class TaskWorkingSetAction extends Action implements IMenuCreator { String[] ids = new String[1]; ids[0] = ID_TASK_WORKING_SET; ConfigureWindowWorkingSetsDialog dialog = new ConfigureWindowWorkingSetsDialog(getWindow(), ids); - if (dialog.open() == Window.OK) { - - } + dialog.open(); } public void run(IAction action) { @@ -324,7 +323,7 @@ public class TaskWorkingSetAction extends Action implements IMenuCreator { .formalModifierLookup(IKeyLookup.M1_NAME)) != 0; if (!modified) { - // Default behaviour is to act as a radio button. + // Default behavior is to act as a radio button. Set<IWorkingSet> tempList = new HashSet<IWorkingSet>(); Iterator<IWorkingSet> iter = newList.iterator(); while (iter.hasNext()) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java index 6c90d1823..ae6656ef8 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java @@ -13,9 +13,11 @@ package org.eclipse.mylyn.internal.tasks.ui.views; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Set; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; @@ -27,6 +29,7 @@ import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.AbstractTaskCategory; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; +import org.eclipse.ui.IWorkingSet; /** * Provides custom content for the task list, e.g. guaranteed visibility of some elements, ability to suppress @@ -59,13 +62,7 @@ public class TaskListContentProvider implements IStructuredContentProvider, ITre } public Object getParent(Object child) { -// if (child instanceof AbstractTask) { -// if (((ITask) child).getParent() != null) { -// return ((ITask) child).getParent(); -// } else { -// return ((AbstractTask) child).getCategory(); -// } -// } + // parents can not be computed since an element can have multiple return null; } @@ -107,28 +104,39 @@ public class TaskListContentProvider implements IStructuredContentProvider, ITre } protected List<AbstractTaskContainer> applyFilter(Set<AbstractTaskContainer> roots) { - String filterText = (this.view.getFilteredTree().getFilterControl()).getText(); + String filterText = (view.getFilteredTree().getFilterControl()).getText(); if (containsNoFilterText(filterText)) { List<AbstractTaskContainer> filteredRoots = new ArrayList<AbstractTaskContainer>(); for (AbstractTaskContainer element : roots) { -// if (element instanceof AbstractTask) { // this case should not happen anymore -// if (!filter(null, element)) { -// filteredRoots.add(element); -// } -// } else + // NOTE: tasks can no longer appear as root elements if (element instanceof AbstractRepositoryQuery) { if (selectQuery((AbstractRepositoryQuery) element)) { filteredRoots.add(element); } } else if (element instanceof AbstractTaskCategory) { - if (selectContainer((AbstractTaskCategory)element)) { + if (selectContainer((AbstractTaskCategory) element)) { filteredRoots.add(element); } } } return filteredRoots; } else { - return new ArrayList<AbstractTaskContainer>(roots); + // only match working sets when filter is on + Set<IWorkingSet> workingSets = TaskListView.getActiveWorkingSets(); + Set<AbstractTaskContainer> workingSetContainers = new HashSet<AbstractTaskContainer>(); + if (workingSets.isEmpty()) { + return new ArrayList<AbstractTaskContainer>(roots); + } else { + for (IWorkingSet workingSet : workingSets) { + IAdaptable[] elements = workingSet.getElements(); + for (IAdaptable adaptable : elements) { + if (adaptable instanceof AbstractTaskContainer && roots.contains(adaptable)) { + workingSetContainers.add((AbstractTaskContainer) adaptable); + } + } + } + return new ArrayList<AbstractTaskContainer>(workingSetContainers); + } } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java index 1236b1611..fbac8592a 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java @@ -20,7 +20,7 @@ import org.eclipse.jface.layout.TreeColumnLayout; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer; import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages; -import org.eclipse.mylyn.internal.tasks.ui.actions.PreviousTaskDropDownAction; +import org.eclipse.mylyn.internal.tasks.ui.actions.ActiveTaskHistoryDropDownAction; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskWorkingSetAction; import org.eclipse.mylyn.tasks.core.AbstractTask; import org.eclipse.mylyn.tasks.core.ITaskActivityListener; @@ -253,9 +253,9 @@ public class TaskListFilteredTree extends AbstractFilteredTree { if (activeTask != null) { indicateActiveTask(activeTask); } - - final PreviousTaskDropDownAction action = new PreviousTaskDropDownAction(TasksUiPlugin.getTaskListManager() - .getTaskActivationHistory()); + + final ActiveTaskHistoryDropDownAction action = new ActiveTaskHistoryDropDownAction(TasksUiPlugin.getTaskListManager() + .getTaskActivationHistory(), true); // action.setImageDescriptor(TasksUiImages.BLANK_TINY); // action.setText(null); @@ -288,25 +288,8 @@ public class TaskListFilteredTree extends AbstractFilteredTree { return activeTaskLink; } - private Set<IWorkingSet> getActiveTaskWorkingSets() { - if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() != null) { - Set<IWorkingSet> allSets = new HashSet<IWorkingSet>(Arrays.asList(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow() - .getActivePage() - .getWorkingSets())); - for (IWorkingSet workingSet : allSets) { - if (!workingSet.getId().equalsIgnoreCase(TaskWorkingSetAction.ID_TASK_WORKING_SET)) { - allSets.remove(workingSet); - } - } - return allSets; - } else { - return Collections.emptySet(); - } - } - public void indicateActiveTaskWorkingSet() { - Set<IWorkingSet> activeSets = getActiveTaskWorkingSets(); + Set<IWorkingSet> activeSets = TaskListView.getActiveWorkingSets(); if (filterComposite.isDisposed() || activeSets == null) { return; } 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 41b4e8dfc..a61a85398 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 @@ -12,6 +12,8 @@ package org.eclipse.mylyn.internal.tasks.ui.views; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; @@ -79,13 +81,14 @@ import org.eclipse.mylyn.internal.tasks.ui.actions.OpenTaskListElementAction; import org.eclipse.mylyn.internal.tasks.ui.actions.OpenTasksUiPreferencesAction; import org.eclipse.mylyn.internal.tasks.ui.actions.OpenWithBrowserAction; import org.eclipse.mylyn.internal.tasks.ui.actions.PresentationDropDownSelectionAction; -import org.eclipse.mylyn.internal.tasks.ui.actions.PreviousTaskDropDownAction; +import org.eclipse.mylyn.internal.tasks.ui.actions.ActiveTaskHistoryDropDownAction; import org.eclipse.mylyn.internal.tasks.ui.actions.RemoveFromCategoryAction; import org.eclipse.mylyn.internal.tasks.ui.actions.RenameAction; import org.eclipse.mylyn.internal.tasks.ui.actions.SynchronizeAutomaticallyAction; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskActivateAction; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskDeactivateAction; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskListElementPropertiesAction; +import org.eclipse.mylyn.internal.tasks.ui.actions.TaskWorkingSetAction; import org.eclipse.mylyn.internal.tasks.ui.views.TaskListTableSorter.SortByIndex; import org.eclipse.mylyn.internal.tasks.ui.wizards.NewLocalTaskWizard; import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; @@ -145,6 +148,7 @@ import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.IWorkingSetManager; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; @@ -252,7 +256,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { private SortyByDropDownAction sortByAction; - PreviousTaskDropDownAction previousTaskAction; + ActiveTaskHistoryDropDownAction previousTaskAction; private PresentationDropDownSelectionAction presentationDropDownSelectionAction; @@ -1339,8 +1343,8 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { filterArchiveCategory = new FilterArchiveContainerAction(this); sortByAction = new SortyByDropDownAction(this); filterOnPriorityAction = new PriorityDropDownAction(this); - previousTaskAction = new PreviousTaskDropDownAction(TasksUiPlugin.getTaskListManager() - .getTaskActivationHistory()); + previousTaskAction = new ActiveTaskHistoryDropDownAction(TasksUiPlugin.getTaskListManager() + .getTaskActivationHistory(), false); linkWithEditorAction = new LinkWithEditorAction(this); ITaskListPresentation[] presentations = { catagorizedPresentation, scheduledPresentation }; presentationDropDownSelectionAction = new PresentationDropDownSelectionAction(this, presentations); @@ -1365,7 +1369,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { previousTaskAction.setEnabled(enable); } - public PreviousTaskDropDownAction getPreviousTaskAction() { + public ActiveTaskHistoryDropDownAction getPreviousTaskAction() { return previousTaskAction; } @@ -1737,10 +1741,10 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { try { getViewer().getControl().setRedraw(false); getViewer().collapseAll(); + getViewer().refresh(); if (isFocusedMode()) { getViewer().expandAll(); } - getViewer().refresh(); } finally { getViewer().getControl().setRedraw(true); } @@ -1768,4 +1772,21 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener { } } + public static Set<IWorkingSet> getActiveWorkingSets() { + if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() != null) { + Set<IWorkingSet> allSets = new HashSet<IWorkingSet>(Arrays.asList(PlatformUI.getWorkbench() + .getActiveWorkbenchWindow() + .getActivePage() + .getWorkingSets())); + for (IWorkingSet workingSet : allSets) { + if (!workingSet.getId().equalsIgnoreCase(TaskWorkingSetAction.ID_TASK_WORKING_SET)) { + allSets.remove(workingSet); + } + } + return allSets; + } else { + return Collections.emptySet(); + } + } + } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskWorkingSetPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskWorkingSetPage.java index 1e06fd545..bd35ba73e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskWorkingSetPage.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingset/TaskWorkingSetPage.java @@ -22,6 +22,7 @@ import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.mylyn.internal.tasks.core.TaskArchive; import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider; import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; @@ -180,7 +181,7 @@ public class TaskWorkingSetPage extends WizardPage implements IWorkingSetPage { ArrayList<Object> containers = new ArrayList<Object>(); for (AbstractTaskContainer element : (Set<AbstractTaskContainer>)TasksUiPlugin.getTaskListManager().getTaskList().getRootElements()) { - if (element instanceof AbstractTaskContainer) { + if (element instanceof AbstractTaskContainer && !(element instanceof TaskArchive)) { containers.add(element); } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractRepositoryTaskEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractRepositoryTaskEditor.java index 6cc3855cf..3d147cca1 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractRepositoryTaskEditor.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractRepositoryTaskEditor.java @@ -210,7 +210,7 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { private static final String LABEL_BUTTON_SUBMIT = "Submit"; private static final String LABEL_COPY_TO_CLIPBOARD = "Copy to Clipboard"; - + private static final String LABEL_SAVE = "Save..."; private RepositoryTaskEditorInput editorInput; @@ -287,7 +287,6 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { } }; - private final ITaskListChangeListener TASKLIST_CHANGE_LISTENER = new ITaskListChangeListener() { public void containersChanged(Set<TaskContainerDelta> containers) { @@ -295,7 +294,7 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { for (TaskContainerDelta taskContainerDelta : containers) { if (repositoryTask != null && repositoryTask.equals(taskContainerDelta.getContainer())) { if (taskContainerDelta.getKind().equals(TaskContainerDelta.Kind.CONTENT)) { - taskToRefresh = (AbstractTask)taskContainerDelta.getContainer(); + taskToRefresh = (AbstractTask) taskContainerDelta.getContainer(); break; } } @@ -323,10 +322,9 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { } } }); - } + } } }; - private List<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); @@ -383,7 +381,7 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { private Action historyAction; private Action openBrowserAction; - + /** * Call upon change to attribute value * @@ -586,17 +584,19 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { historyAction.setToolTipText(LABEL_HISTORY); parentEditor.getTopForm().getToolBarManager().add(historyAction); } - - openBrowserAction = new Action() { - @Override - public void run() { - TasksUiUtil.openUrl(repositoryTask.getTaskUrl(), false); - } - }; - openBrowserAction.setImageDescriptor(TasksUiImages.BROWSER_SMALL); - openBrowserAction.setToolTipText("Open with Web Browser"); - parentEditor.getTopForm().getToolBarManager().add(openBrowserAction); + if (repositoryTask != null) { + openBrowserAction = new Action() { + @Override + public void run() { + TasksUiUtil.openUrl(repositoryTask.getTaskUrl(), false); + } + }; + + openBrowserAction.setImageDescriptor(TasksUiImages.BROWSER_SMALL); + openBrowserAction.setToolTipText("Open with Web Browser"); + parentEditor.getTopForm().getToolBarManager().add(openBrowserAction); + } activateAction = new Action() { @Override @@ -615,7 +615,7 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { activateAction.setEnabled(!repositoryTask.isActive()); parentEditor.getTopForm().getToolBarManager().add(activateAction); } - + // Header drop down menu additions: // form.getForm().getMenuManager().add(new // SynchronizeSelectedAction()); @@ -1254,7 +1254,7 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { popupMenu.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager manager) { popupMenu.removeAll(); - + ISelection selection = attachmentsTableViewer.getSelection(); if (selection.isEmpty()) { return; @@ -1281,12 +1281,12 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { popupMenu.add(copyToClipAction); } popupMenu.add(new Separator("actions")); - + // TODO: use workbench mechanism for this? ObjectActionContributorManager.getManager().contributeObjectActions( AbstractRepositoryTaskEditor.this, popupMenu, attachmentsTableViewer); } - }); + }); } else { Label label = toolkit.createLabel(attachmentsComposite, "No attachments"); registerDropListener(label); @@ -1299,7 +1299,8 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { /* Launch a NewAttachemntWizard */ Button addAttachmentButton = toolkit.createButton(attachmentControlsComposite, "Attach File...", SWT.PUSH); - AbstractTask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(repository.getUrl(), taskData.getId()); + AbstractTask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(repository.getUrl(), + taskData.getId()); if (task == null) { addAttachmentButton.setEnabled(false); } @@ -1915,7 +1916,8 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { toolkit.createLabel(buttonComposite, " "); - AbstractTask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(repository.getUrl(), taskData.getId()); + AbstractTask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(repository.getUrl(), + taskData.getId()); if (attachContextEnabled && task != null) { addAttachContextButton(buttonComposite, task); } @@ -2550,9 +2552,8 @@ public abstract class AbstractRepositoryTaskEditor extends TaskFormPage { "Task could not be created. No additional information was provided by the connector.")); } } else { - modifiedTask = (AbstractTask) TasksUiPlugin.getTaskListManager() - .getTaskList() - .getTask(repository.getUrl(), taskData.getId()); + modifiedTask = (AbstractTask) TasksUiPlugin.getTaskListManager().getTaskList().getTask( + repository.getUrl(), taskData.getId()); } // Synchronization accounting... |