From 5e082368fd636d72350d7f0c6455bdcad858d5e7 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Fri, 18 Oct 2013 19:28:47 +0400 Subject: [PATCH] Added outputPrefix and outputPostfix parameters to Kotlin Compiler tab. --- .../jetbrains/jet/plugin/JetBundle.properties | 4 ++ .../KotlinCompilerConfigurableTab.form | 38 +++++++++++++++++-- .../KotlinCompilerConfigurableTab.java | 37 +++++++++++++++++- 3 files changed, 75 insertions(+), 4 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties index 2fde255e00f..fe17d8efd98 100644 --- a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties +++ b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties @@ -299,3 +299,7 @@ kotlin.compiler.jvm.option.panel.title=Kotlin to JVM # Kotlin to JavaScript kotlin.compiler.js.option.panel.title=Kotlin to JavaScript kotlin.compiler.js.option.generate.sourcemaps=Generate &source maps +kotlin.compiler.js.option.output.prefix=Output file &prefix: +kotlin.compiler.js.option.output.postfix=Output file p&ostfix: +kotlin.compiler.js.option.output.prefix.browse.title=Choose output file prefix +kotlin.compiler.js.option.output.postfix.browse.title=Choose output file postfix diff --git a/idea/src/org/jetbrains/jet/plugin/compiler/configuration/KotlinCompilerConfigurableTab.form b/idea/src/org/jetbrains/jet/plugin/compiler/configuration/KotlinCompilerConfigurableTab.form index b80b902eb2e..6f0bccf332a 100644 --- a/idea/src/org/jetbrains/jet/plugin/compiler/configuration/KotlinCompilerConfigurableTab.form +++ b/idea/src/org/jetbrains/jet/plugin/compiler/configuration/KotlinCompilerConfigurableTab.form @@ -3,7 +3,7 @@ - + @@ -62,7 +62,7 @@ - + @@ -77,12 +77,44 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/idea/src/org/jetbrains/jet/plugin/compiler/configuration/KotlinCompilerConfigurableTab.java b/idea/src/org/jetbrains/jet/plugin/compiler/configuration/KotlinCompilerConfigurableTab.java index a7cb7fd3f38..eab852d9a72 100644 --- a/idea/src/org/jetbrains/jet/plugin/compiler/configuration/KotlinCompilerConfigurableTab.java +++ b/idea/src/org/jetbrains/jet/plugin/compiler/configuration/KotlinCompilerConfigurableTab.java @@ -17,10 +17,14 @@ package org.jetbrains.jet.plugin.compiler.configuration; import com.intellij.compiler.options.ComparingUtils; +import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurableEP; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SearchableConfigurable; +import com.intellij.openapi.ui.TextComponentAccessor; +import com.intellij.openapi.ui.TextFieldWithBrowseButton; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.RawCommandLineEditor; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -44,6 +48,10 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co private RawCommandLineEditor additionalArgsOptionsField; private JLabel additionalArgsLabel; private JCheckBox generateSourceMapsCheckBox; + private TextFieldWithBrowseButton outputPrefixFile; + private TextFieldWithBrowseButton outputPostfixFile; + private JLabel labelForOutputPrefixFile; + private JLabel labelForOutputPostfixFile; public KotlinCompilerConfigurableTab(ConfigurableEP ep) { this.extPoint = ep; @@ -53,6 +61,11 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co additionalArgsOptionsField.attachLabel(additionalArgsLabel); additionalArgsOptionsField.setDialogCaption(JetBundle.message("kotlin.compiler.option.additional.command.line.parameters.dialog.title")); + + setupFileChooser(labelForOutputPrefixFile, outputPrefixFile, + JetBundle.message("kotlin.compiler.js.option.output.prefix.browse.title")); + setupFileChooser(labelForOutputPostfixFile, outputPostfixFile, + JetBundle.message("kotlin.compiler.js.option.output.postfix.browse.title")); } @NotNull @@ -77,7 +90,9 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co public boolean isModified() { return ComparingUtils.isModified(generateNoWarningsCheckBox, isGenerateNoWarnings()) || ComparingUtils.isModified(additionalArgsOptionsField, additionalCompilerSettings.getAdditionalArguments()) || - ComparingUtils.isModified(generateSourceMapsCheckBox, k2jsCompilerSettings.sourcemap); + ComparingUtils.isModified(generateSourceMapsCheckBox, k2jsCompilerSettings.sourcemap) || + isModified(outputPrefixFile, k2jsCompilerSettings.outputPrefix) || + isModified(outputPostfixFile, k2jsCompilerSettings.outputPostfix); } @Override @@ -85,6 +100,8 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co setGenerateNoWarnings(generateNoWarningsCheckBox.isSelected()); additionalCompilerSettings.setAdditionalArguments(additionalArgsOptionsField.getText()); k2jsCompilerSettings.sourcemap = generateSourceMapsCheckBox.isSelected(); + k2jsCompilerSettings.outputPrefix = StringUtil.nullize(outputPrefixFile.getText(), true); + k2jsCompilerSettings.outputPostfix = StringUtil.nullize(outputPostfixFile.getText(), true); } @Override @@ -92,6 +109,8 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co generateNoWarningsCheckBox.setSelected(isGenerateNoWarnings()); additionalArgsOptionsField.setText(additionalCompilerSettings.getAdditionalArguments()); generateSourceMapsCheckBox.setSelected(k2jsCompilerSettings.sourcemap); + outputPrefixFile.setText(k2jsCompilerSettings.outputPrefix); + outputPostfixFile.setText(k2jsCompilerSettings.outputPostfix); } @Override @@ -117,4 +136,20 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co private void setGenerateNoWarnings(boolean selected) { commonCompilerSettings.suppress = selected ? SUPPRESS_WARNINGS : null; } + + private static void setupFileChooser( + @NotNull JLabel label, + @NotNull TextFieldWithBrowseButton fileChooser, + @NotNull String title + ) { + label.setLabelFor(fileChooser); + + fileChooser.addBrowseFolderListener(title, null, null, + new FileChooserDescriptor(true, false, false, false, false, false), + TextComponentAccessor.TEXT_FIELD_WHOLE_TEXT, false); + } + + private static boolean isModified(@NotNull TextFieldWithBrowseButton chooser, @Nullable String currentValue) { + return !StringUtil.equals(StringUtil.nullize(chooser.getText(), true), currentValue); + } }