mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Platform:Run Configurations: do not remove and recreate all configurations on 'Edit Configurations->apply'
AppCode:Schemes: do not spoil schemes after editing Run Configurations (OC-3024)
This commit is contained in:
@@ -41,10 +41,12 @@ import com.intellij.ui.treeStructure.Tree;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.PlatformIcons;
|
||||
import com.intellij.util.config.StorageAccessors;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.Convertor;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -618,11 +620,18 @@ class RunConfigurable extends BaseConfigurable {
|
||||
}
|
||||
|
||||
// if apply succeeded, update the list of configurations in RunManager
|
||||
manager.removeConfigurations(type);
|
||||
for (final RunConfigurationBean stableConfiguration : stableConfigurations) {
|
||||
manager.addConfiguration(stableConfiguration.getSettings(),
|
||||
stableConfiguration.isShared(),
|
||||
stableConfiguration.getStepsBeforeLaunch());
|
||||
Set<RunnerAndConfigurationSettings> toDeleteSettings = new THashSet<RunnerAndConfigurationSettings>();
|
||||
for (RunConfiguration each : manager.getConfigurations(type)) {
|
||||
ContainerUtil.addIfNotNull(toDeleteSettings, manager.getSettings(each));
|
||||
}
|
||||
|
||||
for (RunConfigurationBean each : stableConfigurations) {
|
||||
toDeleteSettings.remove(each.getSettings());
|
||||
manager.addConfiguration(each.getSettings(), each.isShared(), each.getStepsBeforeLaunch());
|
||||
}
|
||||
|
||||
for (RunnerAndConfigurationSettings each : toDeleteSettings) {
|
||||
manager.removeConfiguration(each);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -249,9 +249,10 @@ public class RunManagerImpl extends RunManagerEx implements JDOMExternalizable,
|
||||
|
||||
Integer existingId = findConfigurationIdByUniqueName(getUniqueName(settings));
|
||||
Integer newId = configuration.getUniqueID();
|
||||
RunnerAndConfigurationSettings existingSettings = null;
|
||||
|
||||
if (existingId != null) {
|
||||
myConfigurations.remove(existingId);
|
||||
existingSettings = myConfigurations.remove(existingId);
|
||||
mySharedConfigurations.remove(existingId);
|
||||
}
|
||||
|
||||
@@ -261,7 +262,13 @@ public class RunManagerImpl extends RunManagerEx implements JDOMExternalizable,
|
||||
|
||||
mySharedConfigurations.put(newId, shared);
|
||||
setBeforeRunTasks(configuration, tasks);
|
||||
myDispatcher.getMulticaster().runConfigurationAdded(settings);
|
||||
|
||||
if (existingSettings == settings) {
|
||||
myDispatcher.getMulticaster().runConfigurationChanged(settings);
|
||||
}
|
||||
else {
|
||||
myDispatcher.getMulticaster().runConfigurationAdded(settings);
|
||||
}
|
||||
}
|
||||
|
||||
void checkRecentsLimit() {
|
||||
@@ -285,31 +292,6 @@ public class RunManagerImpl extends RunManagerEx implements JDOMExternalizable,
|
||||
(config instanceof UnknownRunConfiguration ? config.getUniqueID() : "");
|
||||
}
|
||||
|
||||
public void removeConfigurations(@NotNull final ConfigurationType type) {
|
||||
List<RunnerAndConfigurationSettings> removed = new ArrayList<RunnerAndConfigurationSettings>();
|
||||
for (Iterator<RunnerAndConfigurationSettings> it = getSortedConfigurations().iterator(); it.hasNext(); ) {
|
||||
final RunnerAndConfigurationSettings configuration = it.next();
|
||||
final ConfigurationType configurationType = configuration.getType();
|
||||
if (configurationType != null && type.getId().equals(configurationType.getId())) {
|
||||
removed.add(configuration);
|
||||
invalidateConfigurationIcon(configuration);
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
fireRunConfigurationsRemoved(removed);
|
||||
|
||||
final RunnerAndConfigurationSettings selectedConfiguration = getSelectedConfiguration();
|
||||
if (selectedConfiguration != null && removed.contains(selectedConfiguration)) {
|
||||
final Collection<RunnerAndConfigurationSettings> sortedConfigurations = getSortedConfigurations();
|
||||
RunnerAndConfigurationSettings toSelect = null;
|
||||
if (sortedConfigurations.size() > 0) {
|
||||
toSelect = sortedConfigurations.iterator().next();
|
||||
}
|
||||
|
||||
setSelectedConfiguration(toSelect);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeConfiguration(@Nullable RunnerAndConfigurationSettings settings) {
|
||||
if (settings == null) return;
|
||||
|
||||
Reference in New Issue
Block a user