move configurationFactoriesWithoutUnknown to API

This commit is contained in:
Vladimir Krivosheev
2017-04-11 09:42:05 +02:00
parent 6290fc9107
commit 57fb5f8d65
11 changed files with 54 additions and 75 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -51,9 +51,7 @@ class RunConfigurationByRecordProvider implements ConfigurationByRecordProvider
private void initRunConfigurationsMap() {
RunManagerEx manager = RunManagerEx.getInstanceEx(myProject);
ConfigurationType[] types = manager.getConfigurationFactories();
for (ConfigurationType type : types) {
for (ConfigurationType type : manager.getConfigurationFactories()) {
Map<String, List<RunnerAndConfigurationSettings>> structure = manager.getStructure(type);
for (Map.Entry<String, List<RunnerAndConfigurationSettings>> e : structure.entrySet()) {
for (RunnerAndConfigurationSettings settings : e.getValue()) {
@@ -62,7 +60,6 @@ class RunConfigurationByRecordProvider implements ConfigurationByRecordProvider
}
}
}
}
@@ -58,6 +58,8 @@ abstract class RunManager {
*/
abstract val configurationFactories: Array<ConfigurationType>
abstract val configurationFactoriesWithoutUnknown: List<ConfigurationType>
/**
* Returns the list of all configurations of a specified type.
* @param type a run configuration type.
@@ -18,7 +18,6 @@ package com.intellij.execution.actions;
import com.intellij.execution.*;
import com.intellij.execution.configurations.ConfigurationType;
import com.intellij.execution.configurations.UnknownConfigurationType;
import com.intellij.execution.impl.EditConfigurationsDialog;
import com.intellij.execution.impl.RunDialog;
import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl;
@@ -981,36 +980,34 @@ public class ChooseRunConfigurationPopup implements ExecutorProvider {
}
Map<RunnerAndConfigurationSettings, ItemWrapper> wrappedExisting = new LinkedHashMap<>();
for (ConfigurationType type : manager.getConfigurationFactories()) {
if (!(type instanceof UnknownConfigurationType)) {
Map<String, List<RunnerAndConfigurationSettings>> structure = manager.getStructure(type);
for (Map.Entry<String, List<RunnerAndConfigurationSettings>> entry : structure.entrySet()) {
if (entry.getValue().isEmpty()) {
continue;
}
for (ConfigurationType type : manager.getConfigurationFactoriesWithoutUnknown()) {
Map<String, List<RunnerAndConfigurationSettings>> structure = manager.getStructure(type);
for (Map.Entry<String, List<RunnerAndConfigurationSettings>> entry : structure.entrySet()) {
if (entry.getValue().isEmpty()) {
continue;
}
final String key = entry.getKey();
if (key != null) {
boolean isSelected = entry.getValue().contains(selectedConfiguration);
if (isSelected) {
assert selectedConfiguration != null;
}
FolderWrapper folderWrapper = new FolderWrapper(project, executorProvider,
key + (isSelected ? " (mnemonic is to \"" + selectedConfiguration.getName() + "\")" : ""),
entry.getValue());
if (isSelected) {
folderWrapper.setMnemonic(1);
}
result.add(folderWrapper);
final String key = entry.getKey();
if (key != null) {
boolean isSelected = entry.getValue().contains(selectedConfiguration);
if (isSelected) {
assert selectedConfiguration != null;
}
else {
for (RunnerAndConfigurationSettings configuration : entry.getValue()) {
final ItemWrapper wrapped = ItemWrapper.wrap(project, configuration);
if (configuration == selectedConfiguration) {
wrapped.setMnemonic(1);
}
wrappedExisting.put(configuration, wrapped);
FolderWrapper folderWrapper = new FolderWrapper(project, executorProvider,
key + (isSelected ? " (mnemonic is to \"" + selectedConfiguration.getName() + "\")" : ""),
entry.getValue());
if (isSelected) {
folderWrapper.setMnemonic(1);
}
result.add(folderWrapper);
}
else {
for (RunnerAndConfigurationSettings configuration : entry.getValue()) {
final ItemWrapper wrapped = ItemWrapper.wrap(project, configuration);
if (configuration == selectedConfiguration) {
wrapped.setMnemonic(1);
}
wrappedExisting.put(configuration, wrapped);
}
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,8 +30,6 @@ import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.IndexNotReadyException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.wm.ex.WindowManagerEx;
import com.intellij.openapi.wm.impl.IdeFrameImpl;
import com.intellij.ui.IdeBorderFactory;
import com.intellij.ui.SizedIcon;
import com.intellij.ui.components.panels.NonOpaquePanel;
@@ -156,8 +154,7 @@ public class RunConfigurationsComboBoxAction extends ComboBoxAction implements D
allActionsGroup.addSeparator();
}
final ConfigurationType[] types = runManager.getConfigurationFactories();
for (ConfigurationType type : types) {
for (ConfigurationType type : runManager.getConfigurationFactories()) {
final DefaultActionGroup actionGroup = new DefaultActionGroup();
Map<String,List<RunnerAndConfigurationSettings>> structure = runManager.getStructure(type);
for (Map.Entry<String, List<RunnerAndConfigurationSettings>> entry : structure.entrySet()) {
@@ -273,7 +270,7 @@ public class RunConfigurationsComboBoxAction extends ComboBoxAction implements D
myConfiguration = configuration;
myProject = project;
String name = configuration.getName();
if (name == null || name.length() == 0) {
if (name.isEmpty()) {
name = " ";
}
final Presentation presentation = getTemplatePresentation();
@@ -19,7 +19,6 @@ import com.intellij.execution.BeforeRunTask;
import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.configurations.ConfigurationType;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.configurations.UnknownConfigurationType;
import com.intellij.execution.impl.RunConfigurationBeforeRunProvider;
import com.intellij.execution.impl.RunConfigurationSelector;
import com.intellij.execution.impl.RunManagerImpl;
@@ -119,13 +118,10 @@ public class CompoundRunConfigurationSettingsEditor extends SettingsEditor<Compo
return decorator.disableUpDownActions().setAddAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
final List<RunConfiguration> all = new ArrayList<>();
for (ConfigurationType type : myRunManager.getConfigurationFactories()) {
if (!(type instanceof UnknownConfigurationType)) {
for (RunnerAndConfigurationSettings settings : myRunManager.getConfigurationSettingsList(type)) {
all.add(settings.getConfiguration());
}
for (ConfigurationType type : myRunManager.getConfigurationFactoriesWithoutUnknown()) {
for (RunnerAndConfigurationSettings settings : myRunManager.getConfigurationSettingsList(type)) {
all.add(settings.getConfiguration());
}
}
@@ -146,9 +146,7 @@ public abstract class BaseExecuteBeforeRunDialog<T extends BeforeRunTask> extend
private DefaultMutableTreeNode buildNodes() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode(new Descriptor());
RunManager runManager = RunManager.getInstance(myProject);
final ConfigurationType[] configTypes = runManager.getConfigurationFactories();
for (final ConfigurationType type : configTypes) {
for (final ConfigurationType type : runManager.getConfigurationFactories()) {
final Icon icon = type.getIcon();
DefaultMutableTreeNode typeNode = new DefaultMutableTreeNode(new ConfigurationTypeDescriptor(type, icon, isConfigurationAssigned(type)));
root.add(typeNode);
@@ -204,8 +204,7 @@ class RunConfigurable extends BaseConfigurable {
}
});
final RunManagerEx manager = getRunManager();
final ConfigurationType[] factories = manager.getConfigurationFactories();
for (ConfigurationType type : factories) {
for (ConfigurationType type : manager.getConfigurationFactories()) {
final List<RunnerAndConfigurationSettings> configurations = manager.getConfigurationSettingsList(type);
if (!configurations.isEmpty()) {
final DefaultMutableTreeNode typeNode = new DefaultMutableTreeNode(type);
@@ -232,16 +231,13 @@ class RunConfigurable extends BaseConfigurable {
// add defaults
final DefaultMutableTreeNode defaults = new DefaultMutableTreeNode(DEFAULTS);
final ConfigurationType[] configurationTypes = RunManagerImpl.getInstanceImpl(myProject).getConfigurationFactories();
for (final ConfigurationType type : configurationTypes) {
if (!(type instanceof UnknownConfigurationType)) {
ConfigurationFactory[] configurationFactories = type.getConfigurationFactories();
DefaultMutableTreeNode typeNode = new DefaultMutableTreeNode(type);
defaults.add(typeNode);
if (configurationFactories.length != 1) {
for (ConfigurationFactory factory : configurationFactories) {
typeNode.add(new DefaultMutableTreeNode(factory));
}
for (final ConfigurationType type : RunManagerImpl.getInstanceImpl(myProject).getConfigurationFactoriesWithoutUnknown()) {
ConfigurationFactory[] configurationFactories = type.getConfigurationFactories();
DefaultMutableTreeNode typeNode = new DefaultMutableTreeNode(type);
defaults.add(typeNode);
if (configurationFactories.length != 1) {
for (ConfigurationFactory factory : configurationFactories) {
typeNode.add(new DefaultMutableTreeNode(factory));
}
}
}
@@ -668,7 +664,6 @@ class RunConfigurable extends BaseConfigurable {
updateActiveConfigurationFromSelected();
final RunManagerImpl manager = getRunManager();
final ConfigurationType[] types = manager.getConfigurationFactories();
List<ConfigurationType> configurationTypes = new ArrayList<>();
for (int i = 0; i < myRoot.getChildCount(); i++) {
final DefaultMutableTreeNode node = (DefaultMutableTreeNode)myRoot.getChildAt(i);
@@ -677,7 +672,7 @@ class RunConfigurable extends BaseConfigurable {
configurationTypes.add((ConfigurationType)userObject);
}
}
for (ConfigurationType type : types) {
for (ConfigurationType type : manager.getConfigurationFactories()) {
if (!configurationTypes.contains(type))
configurationTypes.add(type);
}
@@ -204,7 +204,7 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent
override val configurationFactories by lazy { idToType.values.toTypedArray() }
val configurationFactoriesWithoutUnknown: List<ConfigurationType>
override val configurationFactoriesWithoutUnknown: List<ConfigurationType>
get() = idToType.values.filterSmart { it !is UnknownConfigurationType }
/**
@@ -232,7 +232,7 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent
fun getSettings(configuration: RunConfiguration) = sortedConfigurations.firstOrNull { it.configuration === configuration } as? RunnerAndConfigurationSettingsImpl
override fun getConfigurationSettingsList(type: ConfigurationType) = sortedConfigurations.filterSmart { it.type?.id == type.id }
override fun getConfigurationSettingsList(type: ConfigurationType) = lock.read { sortedConfigurations.filterSmart { it.type?.id == type.id } }
fun getConfigurationSettings() = idToSettings.values.toTypedArray()
@@ -20,7 +20,6 @@ import com.intellij.execution.actions.ChooseRunConfigurationPopup;
import com.intellij.execution.actions.ExecutorProvider;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.execution.configurations.ConfigurationType;
import com.intellij.execution.configurations.UnknownConfigurationType;
import com.intellij.execution.executors.DefaultRunExecutor;
import com.intellij.execution.impl.EditConfigurationsDialog;
import com.intellij.execution.impl.NewRunConfigurationPopup;
@@ -220,20 +219,17 @@ public class ProjectStartupConfigurable implements SearchableConfigurable, Confi
@Override
public void perform(@NotNull final Project project, @NotNull final Executor executor, @NotNull DataContext context) {
final RunManagerImpl runManager = RunManagerImpl.getInstanceImpl(project);
final ConfigurationType[] factories = runManager.getConfigurationFactories();
final Condition<ConfigurationType> filter = new Condition<ConfigurationType>() {
private final RunnerRegistry myRegistry = RunnerRegistry.getInstance();
@Override
public boolean value(ConfigurationType configurationType) {
ConfigurationFactory factory;
return !UnknownConfigurationType.INSTANCE.equals(configurationType) &&
((factory = runManager.getFactory(configurationType.getId(), null)) != null) &&
return ((factory = runManager.getFactory(configurationType.getId(), null)) != null) &&
myRegistry.getRunner(executor.getId(), runManager.getConfigurationTemplate(factory).getConfiguration()) != null;
}
};
final List<ConfigurationType> factoriesList = ContainerUtil.filter(Arrays.asList(factories), filter);
final ListPopup popup = NewRunConfigurationPopup.createAddPopup(factoriesList, "",
final ListPopup popup = NewRunConfigurationPopup.createAddPopup(ContainerUtil.filter(runManager.getConfigurationFactoriesWithoutUnknown(), filter), "",
factory -> ApplicationManager.getApplication().invokeLater(() -> {
final EditConfigurationsDialog dialog = new EditConfigurationsDialog(project, factory);
if (dialog.showAndGet()) {
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,9 +36,7 @@ public class DumpConfigurationTypesAction extends AnAction implements DumbAware
@Override
public void actionPerformed(AnActionEvent e) {
final Project project = e.getProject();
final ConfigurationType[] factories =
RunManager.getInstance(project).getConfigurationFactories();
for (ConfigurationType factory : factories) {
for (ConfigurationType factory : RunManager.getInstance(project).getConfigurationFactories()) {
System.out.println(factory.getDisplayName() + " : " + factory.getId());
}
}
@@ -36,6 +36,9 @@ class MockRunManager : RunManagerEx() {
override val configurationFactories: Array<ConfigurationType>
get() = emptyArray()
override val configurationFactoriesWithoutUnknown: List<ConfigurationType>
get() = emptyList()
override val allConfigurationsList: List<RunConfiguration>
get() = emptyList()