diff options
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.java | 17 |
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); |