Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/commands/AbstractTaskHandler.java')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/commands/AbstractTaskHandler.java32
1 files changed, 31 insertions, 1 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/commands/AbstractTaskHandler.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/commands/AbstractTaskHandler.java
index 976c7f366..6a7a0468b 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/commands/AbstractTaskHandler.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/commands/AbstractTaskHandler.java
@@ -11,6 +11,8 @@
package org.eclipse.mylyn.internal.tasks.ui.commands;
+import java.util.Set;
+
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
@@ -19,6 +21,8 @@ import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
+import org.eclipse.mylyn.internal.tasks.ui.AbstractTaskListFilter;
+import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
import org.eclipse.mylyn.tasks.core.IRepositoryElement;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.ITaskContainer;
@@ -35,6 +39,8 @@ public abstract class AbstractTaskHandler extends AbstractHandler {
protected boolean singleTask;
+ private boolean filterBasedOnActiveTaskList;
+
public AbstractTaskHandler() {
}
@@ -89,11 +95,35 @@ public abstract class AbstractTaskHandler extends AbstractHandler {
protected void execute(ExecutionEvent event, ITaskContainer item) throws ExecutionException {
for (ITask task : item.getChildren()) {
- process(event, task, true);
+ if (!filterBasedOnActiveTaskList || isVisibleInTaskList(item, task)) {
+ process(event, task, true);
+ }
+ }
+ }
+
+ public static boolean isVisibleInTaskList(ITaskContainer item, ITask task) {
+ TaskListView taskListView = TaskListView.getFromActivePerspective();
+ if (taskListView == null) {
+ return false;
}
+ Set<AbstractTaskListFilter> filters = taskListView.getFilters();
+ for (AbstractTaskListFilter filter : filters) {
+ if (!filter.select(item, task)) {
+ return false;
+ }
+ }
+ return true;
}
protected void execute(ExecutionEvent event, ITask task) throws ExecutionException {
}
+ public boolean getFilterBasedOnActiveTaskList() {
+ return filterBasedOnActiveTaskList;
+ }
+
+ protected void setFilterBasedOnActiveTaskList(boolean filterBasedOnActiveTaskList) {
+ this.filterBasedOnActiveTaskList = filterBasedOnActiveTaskList;
+ }
+
}

Back to the top