Added outputPrefix and outputPostfix parameters to Kotlin Compiler tab.

This commit is contained in:
Zalim Bashorov
2013-10-18 19:28:47 +04:00
parent 0d322fe8bc
commit 5e082368fd
3 changed files with 75 additions and 4 deletions
@@ -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
@@ -3,7 +3,7 @@
<grid id="27dc6" binding="contentPane" layout-manager="GridLayoutManager" row-count="4" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<xy x="20" y="20" width="437" height="221"/>
<xy x="20" y="20" width="467" height="285"/>
</constraints>
<properties/>
<border type="none"/>
@@ -62,7 +62,7 @@
<border type="etched" title-resource-bundle="org/jetbrains/jet/plugin/JetBundle" title-key="kotlin.compiler.jvm.option.panel.title"/>
<children/>
</grid>
<grid id="98e8a" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<grid id="98e8a" layout-manager="GridLayoutManager" row-count="3" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/>
@@ -77,12 +77,44 @@
<children>
<component id="1fbe0" class="javax.swing.JCheckBox" binding="generateSourceMapsCheckBox" default-binding="true">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<grid row="0" column="0" row-span="1" col-span="2" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text resource-bundle="org/jetbrains/jet/plugin/JetBundle" key="kotlin.compiler.js.option.generate.sourcemaps"/>
</properties>
</component>
<component id="3ac8f" class="javax.swing.JLabel" binding="labelForOutputPrefixFile">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false">
<preferred-size width="256" height="18"/>
</grid>
</constraints>
<properties>
<text resource-bundle="org/jetbrains/jet/plugin/JetBundle" key="kotlin.compiler.js.option.output.prefix"/>
</properties>
</component>
<component id="2d5b" class="com.intellij.openapi.ui.TextFieldWithBrowseButton" binding="outputPrefixFile">
<constraints>
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
</component>
<component id="70326" class="javax.swing.JLabel" binding="labelForOutputPostfixFile">
<constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false">
<preferred-size width="256" height="18"/>
</grid>
</constraints>
<properties>
<text resource-bundle="org/jetbrains/jet/plugin/JetBundle" key="kotlin.compiler.js.option.output.postfix"/>
</properties>
</component>
<component id="1292b" class="com.intellij.openapi.ui.TextFieldWithBrowseButton" binding="outputPostfixFile">
<constraints>
<grid row="2" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
</component>
</children>
</grid>
</children>
@@ -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);
}
}