### Eclipse Workspace Patch 1.0 #P org.eclipse.mylyn.tasks.ui Index: src/org/eclipse/mylyn/internal/tasks/ui/actions/Messages.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/Messages.java,v retrieving revision 1.10 diff -u -r1.10 Messages.java --- src/org/eclipse/mylyn/internal/tasks/ui/actions/Messages.java 20 Feb 2009 22:47:05 -0000 1.10 +++ src/org/eclipse/mylyn/internal/tasks/ui/actions/Messages.java 8 May 2009 08:33:25 -0000 @@ -229,6 +229,8 @@ public static String TaskSelectionDialog_Open_with_Browser; + public static String TaskSelectionDialog_Random_Task; + public static String TaskSelectionDialog_Scanning_tasks; public static String TaskSelectionDialog_Search_for_tasks; Index: src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java,v retrieving revision 1.50 diff -u -r1.50 TaskSelectionDialog.java --- src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java 7 Dec 2008 02:43:32 -0000 1.50 +++ src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java 8 May 2009 08:33:25 -0000 @@ -21,6 +21,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.Set; import org.eclipse.core.runtime.CoreException; @@ -48,6 +49,7 @@ import org.eclipse.mylyn.internal.provisional.commons.ui.CommonColors; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer; +import org.eclipse.mylyn.internal.tasks.core.DateRange; import org.eclipse.mylyn.internal.tasks.core.TaskActivationHistory; import org.eclipse.mylyn.internal.tasks.core.TaskList; import org.eclipse.mylyn.internal.tasks.ui.TaskSearchPage; @@ -59,7 +61,9 @@ import org.eclipse.mylyn.internal.tasks.ui.workingsets.WorkingSetLabelComparator; import org.eclipse.mylyn.tasks.core.ITask; import org.eclipse.mylyn.tasks.core.ITaskContainer; +import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel; import org.eclipse.mylyn.tasks.ui.TaskElementLabelProvider; +import org.eclipse.mylyn.tasks.ui.TasksUi; import org.eclipse.search.internal.ui.SearchDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; @@ -362,6 +366,8 @@ private static final int CREATE_ID = SEARCH_ID + 1; + private static final int RANDOM_ID = CREATE_ID + 1; + private static final String IS_USING_WINDOW_WORKING_SET_SETTING = "IsUsingWindowWorkingSet"; //$NON-NLS-1$ private static final String OPEN_IN_BROWSER_SETTING = "OpenInBrowser"; //$NON-NLS-1$ @@ -379,6 +385,8 @@ private Button createTaskButton; + private Button randomTaskButton; + /** * Mylyn's task activation history */ @@ -505,6 +513,41 @@ }); } + randomTaskButton = createButton(composite, RANDOM_ID, Messages.TaskSelectionDialog_Random_Task, false); + randomTaskButton.addSelectionListener(new SelectionListener() { + + public void widgetDefaultSelected(SelectionEvent e) { + // ignore + } + + public void widgetSelected(SelectionEvent e) { + List potentialTasks = new ArrayList(); + for (AbstractTask task : allTasks) { + DateRange scheduledForDate = task.getScheduledForDate(); + if (!task.getSynchronizationState().isIncoming()) { //don't consider tasks with incomings + if (scheduledForDate == null + || !TasksUiPlugin.getTaskActivityManager().isScheduledForThisWeek(scheduledForDate)) { //don't consider tasks scheduled for current week + potentialTasks.add(task); + if (task.getPriority().equals(PriorityLevel.P4) + || task.getPriority().equals(PriorityLevel.P5)) { //tasks with low priority have more chances to be chosen + potentialTasks.add(task); + } + } + } + } + + if (potentialTasks.size() == 0) { + potentialTasks.addAll(allTasks); + } + + int randomTaskIndex = new Random().nextInt(potentialTasks.size()); + ITask randomTask = potentialTasks.get(randomTaskIndex); + + TasksUi.getTaskActivityManager().activateTask(randomTask); //activate the chosen task + close(); //close the dialog + } + }); + Label filler = new Label(composite, SWT.NONE); filler.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL)); layout.numColumns++; @@ -722,7 +765,8 @@ if (item instanceof ITask) { return Status.OK_STATUS; } - return new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, Messages.TaskSelectionDialog_Selected_item_is_not_a_task); + return new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, + Messages.TaskSelectionDialog_Selected_item_is_not_a_task); } } Index: src/org/eclipse/mylyn/internal/tasks/ui/actions/messages.properties =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/messages.properties,v retrieving revision 1.11 diff -u -r1.11 messages.properties --- src/org/eclipse/mylyn/internal/tasks/ui/actions/messages.properties 20 Feb 2009 22:47:05 -0000 1.11 +++ src/org/eclipse/mylyn/internal/tasks/ui/actions/messages.properties 8 May 2009 08:33:25 -0000 @@ -138,6 +138,7 @@ TaskSelectionDialog_Edit_Active_Working_Set_=&Edit Active Working Set... TaskSelectionDialog_New_Task_=&New Task... TaskSelectionDialog_Open_with_Browser=Open with &Browser +TaskSelectionDialog_Random_Task=&Random Task TaskSelectionDialog_Scanning_tasks=Scanning tasks TaskSelectionDialog_Search_for_tasks=Search for tasks TaskSelectionDialog_Select_Working_Set_=Select &Working Set...