Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkersten2005-09-29 23:59:03 +0000
committermkersten2005-09-29 23:59:03 +0000
commitf6f84eb028a7a5283eb9d018f2f5a862271a07ca (patch)
tree61d7674122a78f590b48e6187fca623ccb815b57
parentd175b80eb3990c43f701eaf7f55eb0049beea330 (diff)
downloadorg.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
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/plugin.xml75
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/bugzilla/ui/actions/CreateNewBugzillaTaskAction.java9
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/bugs/search/BugzillaReferencesProvider.java2
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskHistoryTest.java86
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/TaskListManager.java4
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/DropDownTaskNavigateAction.java9
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskActivationHistory.java1
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskListView.java99
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();

Back to the top