|
Lines 9-20
Link Here
|
| 9 |
package org.eclipse.mylyn.internal.context.ui; |
9 |
package org.eclipse.mylyn.internal.context.ui; |
| 10 |
|
10 |
|
| 11 |
import java.util.Calendar; |
11 |
import java.util.Calendar; |
|
|
12 |
import java.util.HashSet; |
| 12 |
import java.util.Set; |
13 |
import java.util.Set; |
| 13 |
|
14 |
|
| 14 |
import org.eclipse.core.runtime.IStatus; |
15 |
import org.eclipse.core.runtime.IStatus; |
| 15 |
import org.eclipse.core.runtime.Status; |
16 |
import org.eclipse.core.runtime.Status; |
| 16 |
import org.eclipse.mylyn.context.ui.ContextUiPlugin; |
17 |
import org.eclipse.mylyn.context.ui.ContextUiPlugin; |
| 17 |
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; |
|
|
| 18 |
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector; |
18 |
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector; |
| 19 |
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer; |
19 |
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer; |
| 20 |
import org.eclipse.mylyn.internal.tasks.ui.AbstractTaskListFilter; |
20 |
import org.eclipse.mylyn.internal.tasks.ui.AbstractTaskListFilter; |
|
Lines 59-65
Link Here
|
| 59 |
} |
59 |
} |
| 60 |
|
60 |
|
| 61 |
for (AbstractTask task : children) { |
61 |
for (AbstractTask task : children) { |
| 62 |
if (shouldAlwaysShow(child, task, ITasksCoreConstants.MAX_SUBTASK_DEPTH)) { |
62 |
if (shouldAlwaysShow(child, task, new HashSet<AbstractTaskContainer>())) { |
| 63 |
return true; |
63 |
return true; |
| 64 |
} |
64 |
} |
| 65 |
} |
65 |
} |
|
Lines 85-94
Link Here
|
| 85 |
|
85 |
|
| 86 |
// TODO: make meta-context more explicit |
86 |
// TODO: make meta-context more explicit |
| 87 |
protected boolean isInteresting(Object parent, AbstractTask task) { |
87 |
protected boolean isInteresting(Object parent, AbstractTask task) { |
| 88 |
return shouldAlwaysShow(parent, task, ITasksCoreConstants.MAX_SUBTASK_DEPTH); |
88 |
return shouldAlwaysShow(parent, task, new HashSet<AbstractTaskContainer>()); |
| 89 |
} |
89 |
} |
| 90 |
|
90 |
|
| 91 |
public boolean shouldAlwaysShow(Object parent, AbstractTask task, int depth) { |
91 |
public boolean shouldAlwaysShow(Object parent, AbstractTask task, Set<AbstractTaskContainer> visitedContainers) { |
| 92 |
|
92 |
|
| 93 |
return task.isActive() |
93 |
return task.isActive() |
| 94 |
|| TasksUiPlugin.getTaskActivityManager().isCompletedToday(task) |
94 |
|| TasksUiPlugin.getTaskActivityManager().isCompletedToday(task) |
|
Lines 96-115
Link Here
|
| 96 |
|| !task.isCompleted() |
96 |
|| !task.isCompleted() |
| 97 |
&& (LocalRepositoryConnector.DEFAULT_SUMMARY.equals(task.getSummary()) |
97 |
&& (LocalRepositoryConnector.DEFAULT_SUMMARY.equals(task.getSummary()) |
| 98 |
|| shouldShowInFocusedWorkweekDateContainer(parent, task) |
98 |
|| shouldShowInFocusedWorkweekDateContainer(parent, task) |
| 99 |
|| TasksUiPlugin.getTaskActivityManager().isOverdue(task) || isInterestingForThisWeek(parent, task) || hasInterestingSubTasks( |
99 |
|| TasksUiPlugin.getTaskActivityManager().isOverdue(task) |
| 100 |
parent, task, depth)); |
100 |
|| isInterestingForThisWeek(parent, task) || hasInterestingSubTasks(parent, task, |
| 101 |
} |
101 |
visitedContainers)); |
| 102 |
|
102 |
} |
| 103 |
private boolean hasInterestingSubTasks(Object parent, AbstractTask task, int depth) { |
103 |
|
| 104 |
if (depth > 0) { |
104 |
private boolean hasInterestingSubTasks(Object parent, AbstractTask task, |
| 105 |
if (!TasksUiPlugin.getDefault().groupSubtasks(task)) { |
105 |
Set<AbstractTaskContainer> visitedContainers) { |
| 106 |
return false; |
106 |
if (!TasksUiPlugin.getDefault().groupSubtasks(task)) { |
| 107 |
} |
107 |
return false; |
| 108 |
if (task.getChildren() != null && task.getChildren().size() > 0) { |
108 |
} |
| 109 |
for (AbstractTask subTask : task.getChildren()) { |
109 |
if (task.getChildren() != null && task.getChildren().size() > 0) { |
| 110 |
if (shouldAlwaysShow(parent, subTask, depth - 1)) { |
110 |
for (AbstractTask subTask : task.getChildren()) { |
| 111 |
return true; |
111 |
if (visitedContainers.contains(subTask)) { |
| 112 |
} |
112 |
continue; |
|
|
113 |
} |
| 114 |
visitedContainers.add(subTask); |
| 115 |
if (shouldAlwaysShow(parent, subTask, visitedContainers)) { |
| 116 |
return true; |
| 113 |
} |
117 |
} |
| 114 |
} |
118 |
} |
| 115 |
} |
119 |
} |