IDEA-143013 Compound RC: StackOverflowError on enabling Compound RC inside another Compound RC

This commit is contained in:
Vassiliy.Kudryashov
2015-07-29 21:59:50 +03:00
parent dd5f143019
commit 8f2f2bda65
3 changed files with 15 additions and 1 deletions
@@ -61,7 +61,7 @@ public class CompoundRunConfiguration extends RunConfigurationBase implements Wi
RunManagerImpl manager = RunManagerImpl.getInstanceImpl(getProject());
for (Pair<String, String> pair : myPairs) {
RunnerAndConfigurationSettings settings = manager.findConfigurationByTypeAndName(pair.first, pair.second);
if (settings != null) {
if (settings != null && settings.getConfiguration() != this) {
mySetToRun.add(settings.getConfiguration());
}
}
@@ -22,6 +22,7 @@ import com.intellij.execution.configurations.*;
import com.intellij.icons.AllIcons;
import com.intellij.ide.DataManager;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.options.*;
@@ -399,6 +400,12 @@ class RunConfigurable extends BaseConfigurable {
myRightPanel.add(scrollPane, BorderLayout.CENTER);
if (configurable instanceof SingleConfigurationConfigurable) {
myRightPanel.add(((SingleConfigurationConfigurable)configurable).getValidationComponent(), BorderLayout.SOUTH);
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
((SingleConfigurationConfigurable)configurable).updateWarning();
}
});
if (configurableComponent != null) {
DataProvider dataProvider = DataManager.getDataProvider(configurableComponent);
if (dataProvider != null) {
@@ -125,6 +125,13 @@ public final class SingleConfigurationConfigurable<Config extends RunConfigurati
myComponent.doReset(configuration);
}
void updateWarning() {
myValidationResultValid = false;
if (myComponent != null) {
myComponent.updateWarning();
}
}
@Override
public final JComponent createComponent() {
myComponent.myNameText.setEnabled(!myBrokenConfiguration);