IDEA-52423 Bring back option for Run/Debug to pop up configurations

This commit is contained in:
Alexey Pegov
2010-11-09 17:46:10 +03:00
parent 4cd12ba0b2
commit 31551a9aa5
7 changed files with 56 additions and 11 deletions
@@ -52,4 +52,8 @@ public interface RunnerAndConfigurationSettings {
void setTemporary(boolean temporary);
Factory<RunnerAndConfigurationSettings> createFactory();
void setEditBeforeRun(boolean b);
boolean isEditBeforeRun();
}
@@ -58,7 +58,7 @@ public class ProgramRunnerUtil {
return;
}
if (!RunManagerImpl.canRunConfiguration(configuration, executor)) {
if (!RunManagerImpl.canRunConfiguration(configuration, executor) || RunManagerImpl.isEditBeforeRun(configuration)) {
final boolean result = RunDialog.editConfiguration(project, configuration, "Edit configuration", executor.getActionName(), executor.getIcon());
if (!result) {
return;
@@ -48,6 +48,8 @@ public abstract class RunManagerEx extends RunManager {
public abstract void setTemporaryConfiguration(RunnerAndConfigurationSettings tempConfiguration);
public abstract void setEditBeforeRun(RunConfiguration settings, boolean edit);
public abstract RunManagerConfig getConfig();
@NotNull
@@ -18,6 +18,7 @@ package com.intellij.execution.impl;
import com.intellij.execution.BeforeRunTask;
import com.intellij.execution.BeforeRunTaskProvider;
import com.intellij.execution.ExecutionBundle;
import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.configurations.UnknownRunConfiguration;
@@ -55,10 +56,12 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor<RunnerAnd
private JPanel myWholePanel;
private JPanel myStepsPanel;
private JCheckBox myShowSettingsBeforeRunCheckBox;
private Map<Key<? extends BeforeRunTask>, BeforeRunTask> myStepsBeforeLaunch;
private final Map<Key<? extends BeforeRunTask>, StepBeforeLaunchRow> myStepBeforeLaunchRows = new THashMap<Key<? extends BeforeRunTask>, StepBeforeLaunchRow>();
private boolean myStoreProjectConfiguration;
private boolean myEditBeforeRun;
private final ConfigurationSettingsEditor myEditor;
@@ -78,7 +81,7 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor<RunnerAnd
final BeforeRunTaskProvider<BeforeRunTask>[] providers = Extensions.getExtensions(BeforeRunTaskProvider.EXTENSION_POINT_NAME,
runConfiguration.getProject());
myStepsPanel.removeAll();
if (providers.length == 0 || runConfiguration instanceof UnknownRunConfiguration) {
if (runConfiguration instanceof UnknownRunConfiguration) {
myStepsPanel.setVisible(false);
}
else {
@@ -92,17 +95,25 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor<RunnerAnd
}
}
if (!stepsRows.isEmpty()) {
myStepsPanel.setLayout(new GridLayout(stepsRows.size(), 1));
for (StepBeforeLaunchRow stepRow : stepsRows) {
myStepsPanel.add(stepRow);
}
}
else {
myStepsPanel.setVisible(false);
myStepsPanel.setLayout(new GridLayout(stepsRows.size(), 1));
for (StepBeforeLaunchRow stepRow : stepsRows) {
myStepsPanel.add(stepRow);
}
}
myEditBeforeRun = settings.isEditBeforeRun();
myShowSettingsBeforeRunCheckBox = new JCheckBox(ExecutionBundle.message("configuration.edit.before.run"));
myShowSettingsBeforeRunCheckBox.setEnabled(!(runConfiguration instanceof UnknownRunConfiguration));
myShowSettingsBeforeRunCheckBox.setSelected(myEditBeforeRun);
myShowSettingsBeforeRunCheckBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
myEditBeforeRun = myShowSettingsBeforeRunCheckBox.isSelected();
}
});
myShowSettingsBeforeRunCheckBox.setVisible(!settings.isTemplate());
myStepsPanel.add(myShowSettingsBeforeRunCheckBox);
myStoreProjectConfiguration = runManager.isConfigurationShared(settings);
myCbStoreProjectConfiguration.setEnabled(!(runConfiguration instanceof UnknownRunConfiguration));
myCbStoreProjectConfiguration.setSelected(myStoreProjectConfiguration);
@@ -111,6 +122,7 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor<RunnerAnd
myStoreProjectConfiguration = myCbStoreProjectConfiguration.isSelected();
}
});
myCbStoreProjectConfiguration.setVisible(!settings.isTemplate());
}
@@ -151,6 +163,7 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor<RunnerAnd
final RunManagerImpl runManager = RunManagerImpl.getInstanceImpl(runConfiguration.getProject());
runManager.setBeforeRunTasks(runConfiguration, myStepsBeforeLaunch);
runManager.shareConfiguration(runConfiguration, myStoreProjectConfiguration);
runManager.setEditBeforeRun(runConfiguration, myEditBeforeRun);
}
public Map<Key<? extends BeforeRunTask>, BeforeRunTask> getStepsBeforeLaunch() {
@@ -619,6 +619,15 @@ public class RunManagerImpl extends RunManagerEx implements JDOMExternalizable,
setActiveConfiguration(tempConfiguration);
}
public static boolean isEditBeforeRun(@NotNull final RunnerAndConfigurationSettings configuration) {
return configuration.isEditBeforeRun();
}
public void setEditBeforeRun(@NotNull final RunConfiguration configuration, final boolean edit) {
final RunnerAndConfigurationSettings settings = getSettings(configuration);
if (settings != null) settings.setEditBeforeRun(edit);
}
public void setActiveConfiguration(final RunnerAndConfigurationSettings configuration) {
setSelectedConfiguration(configuration);
}
@@ -57,6 +57,9 @@ public class RunnerAndConfigurationSettingsImpl implements JDOMExternalizable, C
protected static final String DUMMY_ELEMENT_NANE = "dummy";
@NonNls
private static final String TEMPORARY_ATTRIBUTE = "temporary";
@NonNls
private static final String EDIT_BEFORE_RUN = "editBeforeRun";
/** for compatibility */
@NonNls
@@ -73,6 +76,7 @@ public class RunnerAndConfigurationSettingsImpl implements JDOMExternalizable, C
private List<Element> myUnloadedConfigurationPerRunnerSettings = null;
private boolean myTemporary;
private boolean myEditBeforeRun;
public RunnerAndConfigurationSettingsImpl(RunManagerImpl manager) {
myManager = manager;
@@ -122,6 +126,16 @@ public class RunnerAndConfigurationSettingsImpl implements JDOMExternalizable, C
return myConfiguration.getName();
}
@Override
public void setEditBeforeRun(boolean b) {
myEditBeforeRun = b;
}
@Override
public boolean isEditBeforeRun() {
return myEditBeforeRun;
}
@Nullable
private ConfigurationFactory getFactory(final Element element) {
final String typeName = element.getAttributeValue(CONFIGURATION_TYPE_ATTRIBUTE);
@@ -130,9 +144,9 @@ public class RunnerAndConfigurationSettingsImpl implements JDOMExternalizable, C
}
public void readExternal(Element element) throws InvalidDataException {
myIsTemplate = Boolean.valueOf(element.getAttributeValue(TEMPLATE_FLAG_ATTRIBUTE)).booleanValue();
myTemporary = Boolean.valueOf(element.getAttributeValue(TEMPORARY_ATTRIBUTE)).booleanValue() || TEMP_CONFIGURATION.equals(element.getName());
myEditBeforeRun = Boolean.valueOf(element.getAttributeValue(EDIT_BEFORE_RUN)).booleanValue();
final ConfigurationFactory factory = getFactory(element);
if (factory == null) return;
@@ -192,6 +206,8 @@ public class RunnerAndConfigurationSettingsImpl implements JDOMExternalizable, C
}
element.setAttribute(CONFIGURATION_TYPE_ATTRIBUTE, factory.getType().getId());
element.setAttribute(FACTORY_NAME_ATTRIBUTE, factory.getName());
if (isEditBeforeRun()) element.setAttribute(EDIT_BEFORE_RUN, String.valueOf(true));
if (myTemporary) {
element.setAttribute(TEMPORARY_ATTRIBUTE, Boolean.toString(myTemporary));
}
@@ -301,3 +301,4 @@ export.test.results.open.browser=O&pen exported file in browser
export.test.results.dialog.title=Export Test Results
export.test.results.output.path.empty=Output path is empty
export.test.results.output.filename.empty=Output file name is empty
configuration.edit.before.run=Show settings