diff --git a/plugins/tasks/tasks-core/src/META-INF/plugin.xml b/plugins/tasks/tasks-core/src/META-INF/plugin.xml index d98076e1c6aa..8bce7dacb317 100644 --- a/plugins/tasks/tasks-core/src/META-INF/plugin.xml +++ b/plugins/tasks/tasks-core/src/META-INF/plugin.xml @@ -112,6 +112,7 @@ + diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskRepositoriesConfigurable.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskRepositoriesConfigurable.java index e9ec6be7b39b..7a0e829b068e 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskRepositoriesConfigurable.java +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskRepositoriesConfigurable.java @@ -8,6 +8,7 @@ import com.intellij.openapi.actionSystem.Separator; import com.intellij.openapi.options.BaseConfigurable; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; +import com.intellij.openapi.options.SearchableConfigurable; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ui.configuration.actions.IconWithTextAction; @@ -40,9 +41,11 @@ import java.util.List; * @author Dmitry Avdeev */ @SuppressWarnings("unchecked") -public class TaskRepositoriesConfigurable extends BaseConfigurable implements Configurable.NoScroll { +public class TaskRepositoriesConfigurable extends BaseConfigurable implements Configurable.NoScroll, SearchableConfigurable { + public static final String ID = "tasks.servers"; private static final String EMPTY_PANEL = "empty.panel"; + private JPanel myPanel; private JPanel myServersPanel; private final JBList myRepositoriesList; @@ -257,6 +260,20 @@ public class TaskRepositoriesConfigurable extends BaseConfigurable implements Co } } + @NotNull + @Override + public String getId() { + return ID; + } + + @Nullable + @Override + public Runnable enableSearch(String option) { + TaskRepository matched = + myRepositories.stream().filter(repository -> repository.getRepositoryType().getName().contains(option)).findFirst().orElse(null); + return matched == null ? null : () -> myRepositoriesList.setSelectedValue(matched, true); + } + private abstract class AddServerAction extends IconWithTextAction implements DumbAware { public AddServerAction(TaskRepositorySubtype subtype) { diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskSearchableOptionContributor.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskSearchableOptionContributor.java new file mode 100644 index 000000000000..ce4e8d216852 --- /dev/null +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/config/TaskSearchableOptionContributor.java @@ -0,0 +1,17 @@ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.tasks.config; + +import com.intellij.ide.ui.search.SearchableOptionContributor; +import com.intellij.ide.ui.search.SearchableOptionProcessor; +import com.intellij.tasks.TaskRepositoryType; +import org.jetbrains.annotations.NotNull; + +public class TaskSearchableOptionContributor extends SearchableOptionContributor { + @Override + public void processOptions(@NotNull SearchableOptionProcessor processor) { + TaskRepositoryType[] types = TaskRepositoryType.getRepositoryTypes(); + for (TaskRepositoryType type : types) { + processor.addOptions(type.getName(), null, null, TaskRepositoriesConfigurable.ID, null, true); + } + } +}