diff options
author | mkersten | 2005-09-29 23:59:03 +0000 |
---|---|---|
committer | mkersten | 2005-09-29 23:59:03 +0000 |
commit | f6f84eb028a7a5283eb9d018f2f5a862271a07ca (patch) | |
tree | 61d7674122a78f590b48e6187fca623ccb815b57 | |
parent | d175b80eb3990c43f701eaf7f55eb0049beea330 (diff) | |
download | org.eclipse.mylyn.tasks-f6f84eb028a7a5283eb9d018f2f5a862271a07ca.tar.gz org.eclipse.mylyn.tasks-f6f84eb028a7a5283eb9d018f2f5a862271a07ca.tar.xz org.eclipse.mylyn.tasks-f6f84eb028a7a5283eb9d018f2f5a862271a07ca.zip |
Patch for Bug #110506: provide context for previous/next task actions
and misc fixes
8 files changed, 153 insertions, 132 deletions
diff --git a/org.eclipse.mylyn.bugzilla.ui/plugin.xml b/org.eclipse.mylyn.bugzilla.ui/plugin.xml index e0cf9c7a4..09fe646c2 100644 --- a/org.eclipse.mylyn.bugzilla.ui/plugin.xml +++ b/org.eclipse.mylyn.bugzilla.ui/plugin.xml @@ -120,47 +120,50 @@ <viewContribution id="org.eclipse.mylar.bugzilla.ui.tasklist.actions" targetID="org.eclipse.mylar.tasks.ui.views.TaskListView"> + <action - class="org.eclipse.mylar.bugzilla.ui.actions.RefreshBugzillaReportsAction" + class="org.eclipse.mylar.bugzilla.ui.actions.CreateBugzillaTaskAction" enablesFor="*" - icon="icons/etool16/task-bug-refresh.gif" - id="org.eclipse.mylar.bugzilla.tasklist.refresh" - label="Synchronize Unresolved Reports" - menubarPath="mylar" + icon="icons/etool16/task-bug.gif" + id="org.eclipse.mylar.bugzilla.tasklist.addExisting" + label="Add Existing Bugzilla Report" + menubarPath="bugzilla" style="push" - tooltip="Synchronize Unresolved Reports"> + tooltip="Add Existing Bugzilla Report"> </action> + <action - class="org.eclipse.mylar.bugzilla.ui.actions.CreateBugzillaQueryCategoryAction" - enablesFor="*" - icon="icons/etool16/category-query-new.gif" - id="org.eclipse.mylar.bugzilla.tasklist.addQuery" - label="Add Bugzilla Query" - style="push" - toolbarPath="mylar" - tooltip="Add Bugzilla Query"> + class="org.eclipse.mylar.bugzilla.ui.actions.CreateNewBugzillaTaskAction" + enablesFor="*" + icon="icons/etool16/task-bug-new.gif" + id="org.eclipse.mylar.bugzilla.tasklist.addNew" + label="Add New Bugzilla Report" + style="push" + toolbarPath="reports" + tooltip="Add New Bugzilla Report"> </action> + <action - class="org.eclipse.mylar.bugzilla.ui.actions.CreateNewBugzillaTaskAction" - enablesFor="*" - icon="icons/etool16/task-bug-new.gif" - id="org.eclipse.mylar.bugzilla.tasklist.addNew" - label="Create and Add New Bugzilla Report" - style="push" - toolbarPath="mylar" - tooltip="Create and Add New Bugzilla Report"> - </action> - <action - class="org.eclipse.mylar.bugzilla.ui.actions.CreateBugzillaTaskAction" - enablesFor="*" - icon="icons/etool16/task-bug.gif" - id="org.eclipse.mylar.bugzilla.tasklist.addExisting" - label="Add Existing Bugzilla Report" - style="push" - toolbarPath="mylar" - tooltip="Add Existing Bugzilla Report"> + class="org.eclipse.mylar.bugzilla.ui.actions.CreateBugzillaQueryCategoryAction" + enablesFor="*" + icon="icons/etool16/category-query-new.gif" + id="org.eclipse.mylar.bugzilla.tasklist.addQuery" + label="Add Bugzilla Query" + style="push" + toolbarPath="reports" + tooltip="Add Bugzilla Query"> </action> + + <action + class="org.eclipse.mylar.bugzilla.ui.actions.RefreshBugzillaAction" + enablesFor="*" + icon="icons/etool16/task-bug-refresh.gif" + id="org.eclipse.mylar.bugzilla.ui.popup.refresh" + label="Synchronize Reports" + menubarPath="bugzilla" + tooltip="Synchronize Reports"> + </action> </viewContribution> </extension> @@ -175,7 +178,7 @@ icon="icons/etool16/task-bug.gif" id="org.eclipse.mylar.bugzilla.ui.popup.addExisting" label="Add Existing Bugzilla Report" - menubarPath="mylar" + menubarPath="reports" tooltip="Add Existing Bugzilla Report"> <enablement> <objectClass name="org.eclipse.mylar.tasklist.internal.TaskCategory"/> @@ -186,9 +189,9 @@ enablesFor="*" icon="icons/etool16/task-bug-refresh.gif" id="org.eclipse.mylar.bugzilla.ui.popup.refresh" - label="Bugzilla Refresh" - menubarPath="mylar" - tooltip="Bugzilla Refresh"> + label="Synchronize Reports" + menubarPath="reports" + tooltip="Synchronize Reports"> <enablement> <or> <objectClass name="org.eclipse.mylar.bugzilla.ui.tasklist.BugzillaTask"/> 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 331065e35..dac5a3bc9 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 @@ -18,7 +18,6 @@ import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.mylar.bugzilla.ui.BugzillaImages; import org.eclipse.mylar.bugzilla.ui.BugzillaUiPlugin; import org.eclipse.mylar.bugzilla.ui.tasklist.BugzillaTask; import org.eclipse.mylar.bugzilla.ui.wizard.NewBugWizard; @@ -41,10 +40,10 @@ public class CreateNewBugzillaTaskAction extends Action implements IViewActionDe public static final String ID = "org.eclipse.mylar.tasklist.actions.create.bug"; public CreateNewBugzillaTaskAction() { - setText("Create and Add Bugzilla Report"); - setToolTipText("Create and Add Bugzilla Report"); - setId(ID); - setImageDescriptor(BugzillaImages.TASK_BUGZILLA_NEW); +// setText("Create and Add Bugzilla Report"); +// setToolTipText("Create and Add Bugzilla Report"); +// setId(ID); +// setImageDescriptor(BugzillaImages.TASK_BUGZILLA_NEW); } @Override diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/bugs/search/BugzillaReferencesProvider.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/bugs/search/BugzillaReferencesProvider.java index 7dc179a7a..4a98280bd 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/bugs/search/BugzillaReferencesProvider.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/bugs/search/BugzillaReferencesProvider.java @@ -110,7 +110,7 @@ public class BugzillaReferencesProvider extends AbstractRelationshipProvider { } }); - search.run(new NullProgressMonitor(), Job.DECORATE); + search.run(new NullProgressMonitor(), Job.DECORATE-10); } @Override diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskHistoryTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskHistoryTest.java index ab5b26f75..5c8058246 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskHistoryTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskHistoryTest.java @@ -11,13 +11,20 @@ package org.eclipse.mylar.tasklist.tests; +import java.util.List; + import junit.framework.TestCase; import org.eclipse.mylar.core.MylarPlugin; +import org.eclipse.mylar.tasklist.ITask; import org.eclipse.mylar.tasklist.MylarTasklistPlugin; import org.eclipse.mylar.tasklist.Task; import org.eclipse.mylar.tasklist.TaskListManager; +import org.eclipse.mylar.tasklist.ui.actions.NextTaskDropDownAction; +import org.eclipse.mylar.tasklist.ui.actions.PreviousTaskDropDownAction; import org.eclipse.mylar.tasklist.ui.actions.TaskActivateAction; +import org.eclipse.mylar.tasklist.ui.actions.DropDownTaskNavigateAction.TaskNavigateAction; +import org.eclipse.mylar.tasklist.ui.views.TaskActivationHistory; import org.eclipse.mylar.tasklist.ui.views.TaskListView; import org.eclipse.ui.PartInitException; @@ -36,7 +43,7 @@ public class TaskHistoryTest extends TestCase { protected void setUp() throws Exception { super.setUp(); - MylarPlugin.getContextManager().resetActivityHistory(); + try { MylarTasklistPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("org.eclipse.mylar.tasks.ui.views.TaskListView"); @@ -49,7 +56,7 @@ public class TaskHistoryTest extends TestCase { assertNotNull(TaskListView.getDefault()); taskView = TaskListView.getDefault(); - taskView.clearTaskHistory(); + resetHistory(); task1 = new Task(MylarTasklistPlugin.getTaskListManager().genUniqueTaskId(), "task 1", true); task2 = new Task(MylarTasklistPlugin.getTaskListManager().genUniqueTaskId(), "task 2", true); @@ -63,8 +70,15 @@ public class TaskHistoryTest extends TestCase { } - public void testHistory(){ - + private void resetHistory(){ + taskView.clearTaskHistory(); + MylarPlugin.getContextManager().resetActivityHistory(); + } + + /** + * Tests the next task and previous task navigation + */ + public void testBasicHistoryNavigation(){ (new TaskActivateAction(task1)).run(); taskView.addTaskToHistory(task1); //Simulate clicking on it rather than navigating next or previous (new TaskActivateAction(task2)).run(); @@ -113,6 +127,70 @@ public class TaskHistoryTest extends TestCase { assertTrue(task4.isActive()); } + + /** + * Tests navigation to previous/next tasks that + * are chosen from a list rather than being + * sequentially navigated + */ + public void testArbitraryHistoryNavigation(){ + + resetHistory(); + + //Simulate activating the tasks by clicking rather than + //navigating previous/next + (new TaskActivateAction(task1)).run(); + taskView.addTaskToHistory(task1); + (new TaskActivateAction(task2)).run(); + taskView.addTaskToHistory(task2); + (new TaskActivateAction(task3)).run(); + taskView.addTaskToHistory(task3); + (new TaskActivateAction(task4)).run(); + taskView.addTaskToHistory(task4); + + assertTrue(task4.isActive()); + TaskActivationHistory taskHistory = taskView.getTaskActivationHistory(); + List<ITask> prevHistoryList = taskHistory.getPreviousTasks(); + + //Check that the previous history list looks right + assertTrue(prevHistoryList.size() >= 3); + assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task3); + assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task2); + assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task1); + + //Get a task from the list and activate it + PreviousTaskDropDownAction prevAction = new PreviousTaskDropDownAction(taskView, taskHistory); + TaskNavigateAction navigateAction = prevAction.new TaskNavigateAction(task2); + navigateAction.run(); + taskHistory.navigatedToTask(task2); + + assertTrue(task2.isActive()); + + // Now check that the next and prev lists look right + prevHistoryList = taskHistory.getPreviousTasks(); + assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task1); + List<ITask> nextHistoryList = taskHistory.getNextTasks(); + assertTrue(nextHistoryList.get(0) == task3); + assertTrue(nextHistoryList.get(1) == task4); + + //Navigate to a next item + NextTaskDropDownAction nextAction = new NextTaskDropDownAction(taskView, taskHistory); + navigateAction = nextAction.new TaskNavigateAction(task4); + navigateAction.run(); + taskHistory.navigatedToTask(task4); + + assertTrue(task4.isActive()); + + // Check that the prev and next lists look right + nextHistoryList = taskHistory.getNextTasks(); + prevHistoryList = taskHistory.getPreviousTasks(); + assertTrue(nextHistoryList.size() == 0); + assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task3); + assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task2); + assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task1); + + } + protected void tearDown() throws Exception { super.tearDown(); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/TaskListManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/TaskListManager.java index 5ee1caa13..2207df24a 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/TaskListManager.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/TaskListManager.java @@ -139,9 +139,7 @@ public class TaskListManager { for (ITaskActivityListener listener : listeners) listener.taskDeactivated(t); } taskList.clearActiveTasks(); - } else { - return; - } + } } taskList.setActive(task, true, false); TaskActiveTimerListener activeListener = new TaskActiveTimerListener(task); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/DropDownTaskNavigateAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/DropDownTaskNavigateAction.java index 26c61c2ec..51ab3cf7e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/DropDownTaskNavigateAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/DropDownTaskNavigateAction.java @@ -12,7 +12,7 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Menu; /** - * This abstract class contains a lot of common code used by + * This abstract class contains some common code used by * NextTaskDropDownAction and PreviousTaskDropDownAction * * @author Wesley Coelho @@ -33,7 +33,12 @@ public abstract class DropDownTaskNavigateAction extends Action implements IMenu setMenuCreator(this); } - protected class TaskNavigateAction extends Action { + /** + * Action for navigating to a specified task. + * This class should be protected but has been + * made public for testing only + */ + public class TaskNavigateAction extends Action { private ITask targetTask; private static final int MAX_LABEL_LENGTH = 40; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskActivationHistory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskActivationHistory.java index b87eee72f..f6a53f206 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskActivationHistory.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskActivationHistory.java @@ -214,6 +214,7 @@ public class TaskActivationHistory { public void clear() { try { history.clear(); + currentIndex = -1; } catch (RuntimeException e) { MylarPlugin.fail(e, "could not clear history", false); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskListView.java index a69a90f26..ba0e02d4c 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskListView.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskListView.java @@ -128,6 +128,8 @@ import org.eclipse.ui.part.ViewPart; */ public class TaskListView extends ViewPart { + private static final String SEPARATOR_ID_REPORTS = "reports"; + private static TaskListView INSTANCE; private FilteredTree tree; @@ -877,9 +879,9 @@ public class TaskListView extends ViewPart { drillDownAdapter = new DrillDownAdapter(getViewer()); getViewer().setContentProvider(new TaskListContentProvider()); - TaskListLabelProvider lp = new TaskListLabelProvider(); - lp.setBackgroundColor(parent.getBackground()); - getViewer().setLabelProvider(lp); + TaskListLabelProvider labelProvider = new TaskListLabelProvider(); + labelProvider.setBackgroundColor(parent.getBackground()); + getViewer().setLabelProvider(labelProvider); getViewer().setInput(getViewSite()); getViewer().getTree().addKeyListener(new KeyListener(){ @@ -1070,12 +1072,12 @@ public class TaskListView extends ViewPart { private void fillLocalPullDown(IMenuManager manager) { updateDrillDownActions(); manager.add(collapseAll); - manager.add(new Separator()); manager.add(goBackAction); +// manager.add(new Separator()); manager.add(autoClose); autoClose.setEnabled(true); manager.add(workOffline); - workOffline.setEnabled(true); +// workOffline.setEnabled(true); manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } @@ -1373,97 +1375,24 @@ public class TaskListView extends ViewPart { public TaskCompleteFilter getCompleteFilter() { return COMPLETE_FILTER; } - -// public ViewerFilter getInCompleteFilter() { -// return inCompleteFilter; -// } + public TaskPriorityFilter getPriorityFilter() { return PRIORITY_FILTER; } - -// public class TaskInputDialog extends Dialog { -// private String taskName = ""; -// private String priority = "P3"; -// private Text text; -// public TaskInputDialog(Shell parentShell) { -// super(parentShell); -// } -// protected Control createDialogArea(Composite parent) { -// Composite composite = (Composite)super.createDialogArea(parent); -// GridLayout gl = new GridLayout(3, false); -// composite.setLayout(gl); -// GridData data = new GridData(GridData.GRAB_HORIZONTAL -// | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL -// | GridData.VERTICAL_ALIGN_CENTER); -// data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH); -// composite.setLayoutData(data); -// -// -// Label label = new Label(composite, SWT.WRAP); -// label.setText("Task name:"); -// label.setFont(parent.getFont()); -// -// text = new Text(composite, SWT.SINGLE | SWT.BORDER); -// text.setLayoutData(data); -// text.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL -// | GridData.HORIZONTAL_ALIGN_FILL)); -// -// -// final Combo c = new Combo(composite, SWT.NO_BACKGROUND -// | SWT.MULTI | SWT.V_SCROLL | SWT.READ_ONLY | SWT.DROP_DOWN); -// c.setItems(PRIORITY_LEVELS); -// c.setText(priority); -// c.addSelectionListener(new SelectionListener() { -// -// public void widgetSelected(SelectionEvent e) { -// priority = c.getText(); -// } -// -// public void widgetDefaultSelected(SelectionEvent e) { -// widgetSelected(e); -// } -// }); -// label = new Label(composite, SWT.NONE); -// return composite; -// } -// public String getSelectedPriority() { -// return priority; -// } -// public String getTaskname() { -// return taskName; -// } -// protected void buttonPressed(int buttonId) { -// if (buttonId == IDialogConstants.OK_ID) { -// taskName = text.getText(); -// } else { -// taskName = null; -// } -// super.buttonPressed(buttonId); -// } -// protected void configureShell(Shell shell) { -// super.configureShell(shell); -// shell.setText("Enter Task Name"); -// } -// } private void fillLocalToolBar(IToolBarManager manager) { manager.removeAll(); - manager.add(createTaskToolbar); manager.add(createCategory); - manager.add(new Separator("mylar")); - + manager.add(new Separator(SEPARATOR_ID_REPORTS)); manager.add(new Separator()); manager.add(filterCompleteTask); manager.add(filterOnPriority); - manager.add(new Separator()); +// manager.add(new Separator()); manager.add(previousTaskAction); manager.add(nextTaskAction); manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - -// manager.markDirty(); -// manager.update(true); } @@ -1518,6 +1447,14 @@ public class TaskListView extends ViewPart { public void setInRenameAction(boolean b) { isInRenameAction = b; } + + /** + * This method is for testing only + */ + public TaskActivationHistory getTaskActivationHistory(){ + return taskHistory; + } + } //TextTransfer textTransfer = TextTransfer.getInstance(); |