From a19708693be00377aa3a1758c652488eda761eaf Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 3 Dec 2015 19:37:51 +0300 Subject: [PATCH] Update kotlin run configuration editor - Remove deprecated component for selecting JRE - Update module selector --- .../idea/run/JetRunConfigurationEditor.form | 45 +++++++---- .../idea/run/JetRunConfigurationEditor.java | 81 ++++++++++--------- 2 files changed, 69 insertions(+), 57 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfigurationEditor.form b/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfigurationEditor.form index c71fd05d308..95c2ef7ca02 100644 --- a/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfigurationEditor.form +++ b/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfigurationEditor.form @@ -1,6 +1,6 @@
- + @@ -8,40 +8,51 @@ - + - + + + - - + + + + + + - + - + + + - - - + + - + + - + - + - + - - - + + + + + + diff --git a/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfigurationEditor.java b/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfigurationEditor.java index 3a11421ceb6..93b3dbd27b8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfigurationEditor.java +++ b/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfigurationEditor.java @@ -16,74 +16,81 @@ package org.jetbrains.kotlin.idea.run; -import com.intellij.execution.ui.AlternativeJREPanel; +import com.intellij.application.options.ModulesComboBox; +import com.intellij.execution.JavaExecutionUtil; import com.intellij.execution.ui.CommonJavaParametersPanel; import com.intellij.execution.ui.ConfigurationModuleSelector; +import com.intellij.execution.ui.DefaultJreSelector; +import com.intellij.execution.ui.JrePathEditor; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.LabeledComponent; +import com.intellij.psi.PsiClass; import com.intellij.ui.PanelWithAnchor; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import javax.swing.*; -import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class JetRunConfigurationEditor extends SettingsEditor implements PanelWithAnchor { - private JPanel myMainPanel; - private JTextField myMainClassField; - private JPanel myModuleChooserHolder; - private CommonJavaParametersPanel myCommonProgramParameters; - private AlternativeJREPanel alternativeJREPanel; + private JPanel mainPanel; private LabeledComponent mainClass; - private final ConfigurationModuleSelector myModuleSelector; + + private CommonJavaParametersPanel commonProgramParameters; + private LabeledComponent moduleChooser; + private JrePathEditor jrePathEditor; + + private final ConfigurationModuleSelector moduleSelector; private JComponent anchor; - private final LabeledComponent moduleChooser; public JetRunConfigurationEditor(Project project) { - moduleChooser = LabeledComponent.create(new JComboBox(), "Use classpath of module:"); - moduleChooser.setLabelLocation(BorderLayout.WEST); - myModuleChooserHolder.add(moduleChooser, BorderLayout.CENTER); - myModuleSelector = new ConfigurationModuleSelector(project, moduleChooser.getComponent()); - myCommonProgramParameters.setModuleContext(myModuleSelector.getModule()); + moduleSelector = new ConfigurationModuleSelector(project, moduleChooser.getComponent()); + jrePathEditor.setDefaultJreSelector(DefaultJreSelector.fromModuleDependencies(moduleChooser.getComponent(), false)); + commonProgramParameters.setModuleContext(moduleSelector.getModule()); moduleChooser.getComponent().addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - myCommonProgramParameters.setModuleContext(myModuleSelector.getModule()); + commonProgramParameters.setModuleContext(moduleSelector.getModule()); } }); - anchor = UIUtil.mergeComponentsWithAnchor(mainClass, myCommonProgramParameters, alternativeJREPanel, moduleChooser); - } - - @Override - protected void resetEditorFrom(JetRunConfiguration configuration) { - myCommonProgramParameters.reset(configuration); - myMainClassField.setText(configuration.getRunClass() == null ? null : configuration.getRunClass()); - myModuleSelector.reset(configuration); - alternativeJREPanel.init(configuration.getAlternativeJrePath(), configuration.isAlternativeJrePathEnabled()); + anchor = UIUtil.mergeComponentsWithAnchor(mainClass, commonProgramParameters, jrePathEditor, jrePathEditor, moduleChooser); } @Override protected void applyEditorTo(JetRunConfiguration configuration) throws ConfigurationException { - myModuleSelector.applyTo(configuration); - myCommonProgramParameters.applyTo(configuration); - configuration.setRunClass(myMainClassField.getText()); - configuration.setAlternativeJrePath(alternativeJREPanel.getPath()); - configuration.setAlternativeJrePathEnabled(alternativeJREPanel.isPathEnabled()); + commonProgramParameters.applyTo(configuration); + moduleSelector.applyTo(configuration); + + String className = mainClass.getComponent().getText(); + PsiClass aClass = moduleSelector.findClass(className); + + configuration.setRunClass(aClass != null ? JavaExecutionUtil.getRuntimeQualifiedName(aClass) : className); + configuration.setAlternativeJrePath(jrePathEditor.getJrePathOrName()); + configuration.setAlternativeJrePathEnabled(jrePathEditor.isAlternativeJreSelected()); + } + + @Override + protected void resetEditorFrom(JetRunConfiguration configuration) { + commonProgramParameters.reset(configuration); + moduleSelector.reset(configuration); + mainClass.getComponent().setText(configuration.MAIN_CLASS_NAME != null ? configuration.MAIN_CLASS_NAME.replaceAll("\\$", "\\.") : ""); + jrePathEditor.setPathOrName(configuration.ALTERNATIVE_JRE_PATH, configuration.ALTERNATIVE_JRE_PATH_ENABLED); } @NotNull @Override protected JComponent createEditor() { - return myMainPanel; + return mainPanel; } - @Override - protected void disposeEditor() { + private void createUIComponents() { + mainClass = new LabeledComponent(); + JTextField myMainClassField = new JTextField(); + mainClass.setComponent(myMainClassField); } @Override @@ -95,14 +102,8 @@ public class JetRunConfigurationEditor extends SettingsEditor(); - myMainClassField = new JTextField(); - mainClass.setComponent(myMainClassField); - } }