summaryrefslogtreecommitdiff
path: root/platform/vcs-api/src/com/intellij/openapi/vcs/VcsTaskHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/vcs-api/src/com/intellij/openapi/vcs/VcsTaskHandler.java')
-rw-r--r--platform/vcs-api/src/com/intellij/openapi/vcs/VcsTaskHandler.java17
1 files changed, 15 insertions, 2 deletions
diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/VcsTaskHandler.java b/platform/vcs-api/src/com/intellij/openapi/vcs/VcsTaskHandler.java
index 6f5ea05abea3..28f162908a20 100644
--- a/platform/vcs-api/src/com/intellij/openapi/vcs/VcsTaskHandler.java
+++ b/platform/vcs-api/src/com/intellij/openapi/vcs/VcsTaskHandler.java
@@ -17,16 +17,27 @@ package com.intellij.openapi.vcs;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.Condition;
+import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.MultiMap;
+import java.util.List;
+
/**
* @author Dmitry Avdeev
* Date: 16.07.13
*/
public abstract class VcsTaskHandler {
- public static VcsTaskHandler[] getAllHandlers(Project project) {
- return EXTENSION_POINT_NAME.getExtensions(project);
+ public static VcsTaskHandler[] getAllHandlers(final Project project) {
+ VcsTaskHandler[] extensions = EXTENSION_POINT_NAME.getExtensions(project);
+ List<VcsTaskHandler> handlers = ContainerUtil.filter(extensions, new Condition<VcsTaskHandler>() {
+ @Override
+ public boolean value(VcsTaskHandler handler) {
+ return handler.isEnabled(project);
+ }
+ });
+ return handlers.toArray(new VcsTaskHandler[handlers.size()]);
}
public static class TaskInfo {
@@ -49,6 +60,8 @@ public abstract class VcsTaskHandler {
private static final ExtensionPointName<VcsTaskHandler> EXTENSION_POINT_NAME = ExtensionPointName.create("com.intellij.vcs.taskHandler");
+ public abstract boolean isEnabled(Project project);
+
public abstract TaskInfo startNewTask(String taskName);
public abstract void switchToTask(TaskInfo taskInfo, Runnable invokeAfter);