package com.intellij.lang.javascript.formatter;
import com.intellij.application.options.SmartIndentOptionsEditor;
import com.intellij.lang.javascript.JSBundle;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
public class ActionScriptIndentOptionsEditor extends SmartIndentOptionsEditor {
protected JCheckBox myIndentPackageChildren;
@Override
protected void addComponents() {
super.addComponents();
myIndentPackageChildren = new JCheckBox(JSBundle.message("to.indent.package.statement.children"));
add(myIndentPackageChildren);
}
@Override
public boolean isModified(CodeStyleSettings settings, CommonCodeStyleSettings.IndentOptions options) {
JSCodeStyleSettings jsSettings = getCustomJSSettings(settings);
return super.isModified(settings, options) ||
(jsSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT) != myIndentPackageChildren.isSelected();
}
@Override
public void apply(CodeStyleSettings settings, CommonCodeStyleSettings.IndentOptions options) {
super.apply(settings, options);
final JSCodeStyleSettings jsCodeStyleSettings = getCustomJSSettings(settings);
jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN =
myIndentPackageChildren.isSelected() ? JSCodeStyleSettings.INDENT : JSCodeStyleSettings.DO_NOT_INDENT;
}
private static ECMA4CodeStyleSettings getCustomJSSettings(CodeStyleSettings settings) {
return settings.getCustomSettings(ECMA4CodeStyleSettings.class);
}
@Override
public void reset(@NotNull CodeStyleSettings settings, @NotNull CommonCodeStyleSettings.IndentOptions options) {
super.reset(settings, options);
myIndentPackageChildren.setSelected(getCustomJSSettings(settings).INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT);
}
}