src/org/jetbrains/r/run/configuration/RRunConfigurationEditor.kt (66 lines of code) (raw):

package org.jetbrains.r.run.configuration import com.intellij.execution.configuration.EnvironmentVariablesComponent import com.intellij.execution.configuration.EnvironmentVariablesData import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory import com.intellij.openapi.options.SettingsEditor import com.intellij.openapi.ui.TextFieldWithBrowseButton import com.intellij.r.psi.RBundle import com.intellij.ui.components.JBLabel import com.intellij.util.ui.GridBag import com.intellij.util.ui.JBUI import com.intellij.util.ui.UIUtil import java.awt.GridBagConstraints import java.awt.GridBagLayout import javax.swing.JComponent import javax.swing.JPanel import javax.swing.JTextField class RRunConfigurationEditor: SettingsEditor<RRunConfiguration>() { private lateinit var filePath: TextFieldWithBrowseButton private lateinit var workingDirectory: TextFieldWithBrowseButton private lateinit var interpreterArgs: JTextField private lateinit var scriptArguments: JTextField private lateinit var environmentVariables: EnvironmentVariablesComponent override fun resetEditorFrom(s: RRunConfiguration) { filePath.text = s.filePath workingDirectory.text = s.workingDirectory interpreterArgs.text = s.interpreterArgs scriptArguments.text = s.scriptArguments environmentVariables.envs = s.environmentVariablesData.envs environmentVariables.isPassParentEnvs = s.environmentVariablesData.isPassParentEnvs } override fun applyEditorTo(s: RRunConfiguration) { s.filePath = filePath.text s.workingDirectory = workingDirectory.text s.interpreterArgs = interpreterArgs.text s.scriptArguments = scriptArguments.text s.environmentVariablesData = EnvironmentVariablesData.create(environmentVariables.envs, environmentVariables.isPassParentEnvs) } override fun createEditor(): JComponent { val panel = JPanel(GridBagLayout()) val g = GridBag() .setDefaultFill(GridBagConstraints.BOTH) .setDefaultAnchor(GridBagConstraints.CENTER) .setDefaultWeightX(1, 1.0) .setDefaultInsets(0, JBUI.insets(0, 0, UIUtil.DEFAULT_VGAP, UIUtil.DEFAULT_HGAP)) .setDefaultInsets(1, JBUI.insetsBottom(UIUtil.DEFAULT_VGAP)) panel.add(JBLabel(RBundle.message("r.run.configuration.editor.file.label")), g.nextLine().next()) filePath = TextFieldWithBrowseButton() filePath.addBrowseFolderListener(null, FileChooserDescriptorFactory.createSingleLocalFileDescriptor().withTitle(RBundle.message("r.run.configuration.editor.choose.file.title"))) panel.add(filePath, g.next().coverLine()) panel.add(JBLabel(RBundle.message("r.run.configuration.editor.working.directory.label")), g.nextLine().next()) workingDirectory = TextFieldWithBrowseButton() workingDirectory.addBrowseFolderListener(null, FileChooserDescriptorFactory.createSingleFolderDescriptor().withTitle(RBundle.message("r.run.configuration.editor.choose.working.directory.title"))) panel.add(workingDirectory, g.next().coverLine()) panel.add(JBLabel(RBundle.message("r.run.configuration.editor.interpreter.args.label")), g.nextLine().next()) interpreterArgs = JTextField() panel.add(interpreterArgs, g.next().coverLine()) panel.add(JBLabel(RBundle.message("r.run.configuration.editor.script.args.label")), g.nextLine().next()) scriptArguments = JTextField() panel.add(scriptArguments, g.next().coverLine()) panel.add(JBLabel(RBundle.message("r.run.configuration.editor.env.variables.label")), g.nextLine().next()) environmentVariables = EnvironmentVariablesComponent() environmentVariables.text = "" panel.add(environmentVariables, g.next().coverLine()) return panel } }