Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 217344 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java (-6 / +75 lines)
Lines 13-18 Link Here
13
import java.util.Set;
13
import java.util.Set;
14
14
15
import org.eclipse.core.runtime.CoreException;
15
import org.eclipse.core.runtime.CoreException;
16
import org.eclipse.core.runtime.IAdaptable;
16
import org.eclipse.core.runtime.IProgressMonitor;
17
import org.eclipse.core.runtime.IProgressMonitor;
17
import org.eclipse.core.runtime.IStatus;
18
import org.eclipse.core.runtime.IStatus;
18
import org.eclipse.core.runtime.Status;
19
import org.eclipse.core.runtime.Status;
Lines 33-38 Link Here
33
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListFilteredTree;
34
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListFilteredTree;
34
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
35
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
35
import org.eclipse.mylyn.tasks.core.AbstractTask;
36
import org.eclipse.mylyn.tasks.core.AbstractTask;
37
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
36
import org.eclipse.mylyn.tasks.core.TaskList;
38
import org.eclipse.mylyn.tasks.core.TaskList;
37
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
39
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
38
import org.eclipse.search.internal.ui.SearchDialog;
40
import org.eclipse.search.internal.ui.SearchDialog;
Lines 43-48 Link Here
43
import org.eclipse.swt.widgets.Shell;
45
import org.eclipse.swt.widgets.Shell;
44
import org.eclipse.ui.IMemento;
46
import org.eclipse.ui.IMemento;
45
import org.eclipse.ui.IWorkbenchWindow;
47
import org.eclipse.ui.IWorkbenchWindow;
48
import org.eclipse.ui.IWorkingSet;
46
import org.eclipse.ui.PlatformUI;
49
import org.eclipse.ui.PlatformUI;
47
import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog;
50
import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog;
48
import org.eclipse.ui.dialogs.SearchPattern;
51
import org.eclipse.ui.dialogs.SearchPattern;
Lines 65-70 Link Here
65
68
66
	private static final String SHOW_COMPLETED_TASKS_SETTING = "ShowCompletedTasks";
69
	private static final String SHOW_COMPLETED_TASKS_SETTING = "ShowCompletedTasks";
67
70
71
	private static final String FILTER_BY_WORKING_SETS_SETTING = "FilterByWorkingSets";
72
68
	private boolean openInBrowser;
73
	private boolean openInBrowser;
69
74
70
	public boolean getOpenInBrowser() {
75
	public boolean getOpenInBrowser() {
Lines 85-90 Link Here
85
		return insertInHistory;
90
		return insertInHistory;
86
	}
91
	}
87
92
93
	private Set<IWorkingSet> activeWorkingSets;
94
88
	/**
95
	/**
89
	 * Integrates {@link FilteredItemsSelectionDialog} history management with Mylyn's task list activation history
96
	 * Integrates {@link FilteredItemsSelectionDialog} history management with Mylyn's task list activation history
90
	 * <p>
97
	 * <p>
Lines 153-161 Link Here
153
		setSelectionHistory(new TaskSelectionHistory());
160
		setSelectionHistory(new TaskSelectionHistory());
154
161
155
		labelProvider = new TaskElementLabelProvider(false);
162
		labelProvider = new TaskElementLabelProvider(false);
156
		
163
157
		setListLabelProvider(labelProvider);
164
		setListLabelProvider(labelProvider);
158
		
165
159
//		setListLabelProvider(new DecoratingLabelProvider(labelProvider, PlatformUI.getWorkbench()
166
//		setListLabelProvider(new DecoratingLabelProvider(labelProvider, PlatformUI.getWorkbench()
160
//				.getDecoratorManager()
167
//				.getDecoratorManager()
161
//				.getLabelDecorator()));
168
//				.getLabelDecorator()));
Lines 174-179 Link Here
174
			}
181
			}
175
			setInitialPattern(text);
182
			setInitialPattern(text);
176
		}
183
		}
184
185
		activeWorkingSets = TaskListView.getActiveWorkingSets();
177
	}
186
	}
178
187
179
	private boolean showExtendedOpeningOptions;
188
	private boolean showExtendedOpeningOptions;
Lines 188-201 Link Here
188
197
189
	private ShowCompletedTasksAction showCompletedTasksAction = new ShowCompletedTasksAction();
198
	private ShowCompletedTasksAction showCompletedTasksAction = new ShowCompletedTasksAction();
190
199
200
	private FilterByWorkingSetsAction filterByWorkingSetsAction = new FilterByWorkingSetsAction();
201
191
	@Override
202
	@Override
192
	protected void fillViewMenu(IMenuManager menuManager) {
203
	protected void fillViewMenu(IMenuManager menuManager) {
193
		super.fillViewMenu(menuManager);
204
		super.fillViewMenu(menuManager);
194
		menuManager.add(showCompletedTasksAction);
205
		menuManager.add(showCompletedTasksAction);
206
		menuManager.add(filterByWorkingSetsAction);
195
	}
207
	}
196
208
197
	private boolean showCompletedTasks;
209
	private boolean showCompletedTasks;
198
210
211
	private boolean filterByWorkingSets;
212
199
	private class ShowCompletedTasksAction extends Action {
213
	private class ShowCompletedTasksAction extends Action {
200
214
201
		public ShowCompletedTasksAction() {
215
		public ShowCompletedTasksAction() {
Lines 210-215 Link Here
210
224
211
	}
225
	}
212
226
227
	private class FilterByWorkingSetsAction extends Action {
228
229
		public FilterByWorkingSetsAction() {
230
			super("&Filter by Active Working Set", IAction.AS_CHECK_BOX);
231
		}
232
233
		@Override
234
		public void run() {
235
			filterByWorkingSets = isChecked();
236
			applyFilter();
237
		}
238
	}
239
213
	@Override
240
	@Override
214
	protected Control createExtendedContentArea(Composite parent) {
241
	protected Control createExtendedContentArea(Composite parent) {
215
		if (!showExtendedOpeningOptions) {
242
		if (!showExtendedOpeningOptions) {
Lines 252-262 Link Here
252
279
253
		private boolean showCompletedTasks;
280
		private boolean showCompletedTasks;
254
281
255
		public TasksFilter(boolean showCompletedTasks) {
282
		private boolean filterByWorkingSets;
283
284
		private Set<AbstractTask> allTasksFromWorkingSets;
285
286
		public TasksFilter(boolean showCompletedTasks, boolean filterByWorkingSets) {
256
			super(new SearchPattern());
287
			super(new SearchPattern());
257
			// Little hack to force always a match inside any part of task text
288
			// Little hack to force always a match inside any part of task text
258
			patternMatcher.setPattern("*" + patternMatcher.getPattern());
289
			patternMatcher.setPattern("*" + patternMatcher.getPattern());
259
			this.showCompletedTasks = showCompletedTasks;
290
			this.showCompletedTasks = showCompletedTasks;
291
			this.filterByWorkingSets = filterByWorkingSets;
260
		}
292
		}
261
293
262
		@Override
294
		@Override
Lines 265-271 Link Here
265
				return false;
297
				return false;
266
			}
298
			}
267
			if (filter instanceof TasksFilter) {
299
			if (filter instanceof TasksFilter) {
268
				return showCompletedTasks == ((TasksFilter) filter).showCompletedTasks;
300
				if (showCompletedTasks && !filterByWorkingSets) {
301
					return true;
302
				}
303
				if (!showCompletedTasks && !filterByWorkingSets) {
304
					return !((TasksFilter) filter).showCompletedTasks;
305
				}
306
				if (showCompletedTasks && filterByWorkingSets) {
307
					return ((TasksFilter) filter).filterByWorkingSets;
308
				}
309
				if (!showCompletedTasks && filterByWorkingSets) {
310
					return !((TasksFilter) filter).showCompletedTasks && ((TasksFilter) filter).filterByWorkingSets;
311
				}
269
			}
312
			}
270
			return true;
313
			return true;
271
		}
314
		}
Lines 276-282 Link Here
276
				return false;
319
				return false;
277
			}
320
			}
278
			if (filter instanceof TasksFilter) {
321
			if (filter instanceof TasksFilter) {
279
				return showCompletedTasks == ((TasksFilter) filter).showCompletedTasks;
322
				return showCompletedTasks == ((TasksFilter) filter).showCompletedTasks
323
						&& filterByWorkingSets == ((TasksFilter) filter).filterByWorkingSets;
280
			}
324
			}
281
			return true;
325
			return true;
282
		}
326
		}
Lines 294-306 Link Here
294
			if (!showCompletedTasks && ((AbstractTask) item).isCompleted()) {
338
			if (!showCompletedTasks && ((AbstractTask) item).isCompleted()) {
295
				return false;
339
				return false;
296
			}
340
			}
341
			if (filterByWorkingSets && !activeWorkingSets.isEmpty()) {
342
				if (allTasksFromWorkingSets == null) {
343
					populateTasksFromWorkingSets();
344
				}
345
				if (!allTasksFromWorkingSets.contains(item)) {
346
					return false;
347
				}
348
			}
297
			return matches(labelProvider.getText(item));
349
			return matches(labelProvider.getText(item));
298
		}
350
		}
351
352
		private void populateTasksFromWorkingSets() {
353
			allTasksFromWorkingSets = new HashSet<AbstractTask>(1000);
354
			for (IWorkingSet workingSet : activeWorkingSets) {
355
				for (IAdaptable adaptable : workingSet.getElements()) {
356
					AbstractTaskContainer atc = (AbstractTaskContainer) adaptable.getAdapter(AbstractTaskContainer.class);
357
					if (atc == null) {
358
						continue;
359
					}
360
					allTasksFromWorkingSets.addAll(atc.getChildren());
361
				}
362
			}
363
		}
299
	}
364
	}
300
365
301
	@Override
366
	@Override
302
	protected ItemsFilter createFilter() {
367
	protected ItemsFilter createFilter() {
303
		return new TasksFilter(showCompletedTasks);
368
		return new TasksFilter(showCompletedTasks, filterByWorkingSets);
304
	}
369
	}
305
370
306
	/**
371
	/**
Lines 339-344 Link Here
339
			section = settings.addNewSection(TASK_SELECTION_DIALOG_SECTION);
404
			section = settings.addNewSection(TASK_SELECTION_DIALOG_SECTION);
340
			section.put(OPEN_IN_BROWSER_SETTING, false);
405
			section.put(OPEN_IN_BROWSER_SETTING, false);
341
			section.put(SHOW_COMPLETED_TASKS_SETTING, true);
406
			section.put(SHOW_COMPLETED_TASKS_SETTING, true);
407
			section.put(FILTER_BY_WORKING_SETS_SETTING, true);
342
		}
408
		}
343
		return section;
409
		return section;
344
	}
410
	}
Lines 348-353 Link Here
348
		openInBrowser = settings.getBoolean(OPEN_IN_BROWSER_SETTING);
414
		openInBrowser = settings.getBoolean(OPEN_IN_BROWSER_SETTING);
349
		showCompletedTasks = settings.getBoolean(SHOW_COMPLETED_TASKS_SETTING);
415
		showCompletedTasks = settings.getBoolean(SHOW_COMPLETED_TASKS_SETTING);
350
		showCompletedTasksAction.setChecked(showCompletedTasks);
416
		showCompletedTasksAction.setChecked(showCompletedTasks);
417
		filterByWorkingSets = settings.getBoolean(FILTER_BY_WORKING_SETS_SETTING);
418
		filterByWorkingSetsAction.setChecked(filterByWorkingSets);
351
		super.restoreDialog(settings);
419
		super.restoreDialog(settings);
352
	}
420
	}
353
421
Lines 355-360 Link Here
355
	protected void storeDialog(IDialogSettings settings) {
423
	protected void storeDialog(IDialogSettings settings) {
356
		settings.put(OPEN_IN_BROWSER_SETTING, openInBrowser);
424
		settings.put(OPEN_IN_BROWSER_SETTING, openInBrowser);
357
		settings.put(SHOW_COMPLETED_TASKS_SETTING, showCompletedTasks);
425
		settings.put(SHOW_COMPLETED_TASKS_SETTING, showCompletedTasks);
426
		settings.put(FILTER_BY_WORKING_SETS_SETTING, filterByWorkingSets);
358
		super.storeDialog(settings);
427
		super.storeDialog(settings);
359
	}
428
	}

Return to bug 217344