|
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 |
} |