From 70d68021e04ccd1a71cfecfa7c9d6bbe04c8bf99 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 7 Nov 2014 12:12:26 +0300 Subject: [PATCH] IDEA-132523 Task Management: 'Add server' action unavailable in dumb mode --- .../config/TaskRepositoriesConfigurable.java | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) 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 9262b81020e2..02b599ed1340 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.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ui.configuration.actions.IconWithTextAction; import com.intellij.openapi.ui.Splitter; @@ -87,12 +88,10 @@ public class TaskRepositoriesConfigurable extends BaseConfigurable implements Co final List createActions = new ArrayList(); for (final TaskRepositoryType repositoryType : groups) { for (final TaskRepositorySubtype subtype : (List)repositoryType.getAvailableSubtypes()) { - String description = "New " + subtype.getName() + " server"; - createActions.add(new IconWithTextAction(subtype.getName(), description, subtype.getIcon()) { + createActions.add(new AddServerAction(subtype) { @Override - public void actionPerformed(@NotNull AnActionEvent e) { - TaskRepository repository = repositoryType.createRepository(subtype); - addRepository(repository); + protected TaskRepository getRepository() { + return repositoryType.createRepository(subtype); } }); } @@ -112,10 +111,10 @@ public class TaskRepositoriesConfigurable extends BaseConfigurable implements Co if (!repositories.isEmpty()) { group.add(Separator.getInstance()); for (final TaskRepository repository : repositories) { - group.add(new IconWithTextAction(repository.getUrl(), repository.getUrl(), repository.getIcon()) { + group.add(new AddServerAction(repository) { @Override - public void actionPerformed(@NotNull AnActionEvent e) { - addRepository(repository); + protected TaskRepository getRepository() { + return repository; } }); } @@ -123,7 +122,7 @@ public class TaskRepositoriesConfigurable extends BaseConfigurable implements Co JBPopupFactory.getInstance() .createActionGroupPopup("Add server", group, DataManager.getInstance().getDataContext(anActionButton.getContextComponent()), - JBPopupFactory.ActionSelectionAid.SPEEDSEARCH, false).show( + JBPopupFactory.ActionSelectionAid.SPEEDSEARCH, true).show( anActionButton.getPreferredPopupPoint()); } }); @@ -269,4 +268,22 @@ public class TaskRepositoriesConfigurable extends BaseConfigurable implements Co Disposer.dispose(editor); } } + + private abstract class AddServerAction extends IconWithTextAction implements DumbAware { + + public AddServerAction(TaskRepositorySubtype subtype) { + super(subtype.getName(), "New " + subtype.getName() + " server", subtype.getIcon()); + } + + public AddServerAction(TaskRepository repository) { + super(repository.getUrl(), repository.getUrl(), repository.getIcon()); + } + + protected abstract TaskRepository getRepository(); + + @Override + public void actionPerformed(@NotNull AnActionEvent e) { + addRepository(getRepository()); + } + } }