diff --git a/platform/lang-impl/src/com/intellij/application/options/GeneralCodeStylePanel.form b/platform/lang-impl/src/com/intellij/application/options/GeneralCodeStylePanel.form index 76abc2f76c32..4b14cf76c2c4 100644 --- a/platform/lang-impl/src/com/intellij/application/options/GeneralCodeStylePanel.form +++ b/platform/lang-impl/src/com/intellij/application/options/GeneralCodeStylePanel.form @@ -26,17 +26,15 @@ - + - + - + - - - + diff --git a/platform/lang-impl/src/com/intellij/application/options/GeneralCodeStylePanel.java b/platform/lang-impl/src/com/intellij/application/options/GeneralCodeStylePanel.java index 0efff525bc02..2faf3573e15b 100644 --- a/platform/lang-impl/src/com/intellij/application/options/GeneralCodeStylePanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/GeneralCodeStylePanel.java @@ -28,15 +28,18 @@ import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.util.Comparing; import com.intellij.psi.PsiFile; -import com.intellij.psi.codeStyle.*; -import com.intellij.ui.DocumentAdapter; +import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.DisplayPriority; +import com.intellij.psi.codeStyle.FileTypeIndentOptionsProvider; +import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; -import javax.swing.event.DocumentEvent; import java.awt.*; -import java.util.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; import java.util.List; public class GeneralCodeStylePanel extends CodeStyleAbstractPanel { @@ -49,12 +52,11 @@ public class GeneralCodeStylePanel extends CodeStyleAbstractPanel { private static final String MACINTOSH_STRING = ApplicationBundle.message("combobox.crlf.mac"); - private JTextField myRightMarginField; + private JSpinner myRightMarginSpinner; private JComboBox myLineSeparatorCombo; private JPanel myPanel; private JCheckBox myCbWrapWhenTypingReachesRightMargin; private JPanel myDefaultIndentOptionsPanel; - private int myRightMargin; private SmartIndentOptionsEditor myIndentOptionsEditor; @@ -85,17 +87,7 @@ public class GeneralCodeStylePanel extends CodeStyleAbstractPanel { myLineSeparatorCombo.addItem(MACINTOSH_STRING); addPanelToWatch(myPanel); - myRightMargin = settings.RIGHT_MARGIN; - - myRightMarginField.getDocument().addDocumentListener(new DocumentAdapter() { - @Override - protected void textChanged(final DocumentEvent e) { - int valueFromControl = getRightMarginImpl(); - if (valueFromControl > 0) { - myRightMargin = valueFromControl; - } - } - }); + myRightMarginSpinner.setModel(new SpinnerNumberModel(settings.RIGHT_MARGIN, 1, 1000000, 1)); myIndentOptionsEditor = new SmartIndentOptionsEditor(); myDefaultIndentOptionsPanel.add(myIndentOptionsEditor.createPanel(), BorderLayout.CENTER); @@ -115,7 +107,7 @@ public class GeneralCodeStylePanel extends CodeStyleAbstractPanel { @Override protected int getRightMargin() { - return myRightMargin; + return ((Number) myRightMarginSpinner.getValue()).intValue(); } @Override @@ -134,26 +126,12 @@ public class GeneralCodeStylePanel extends CodeStyleAbstractPanel { public void apply(CodeStyleSettings settings) { settings.LINE_SEPARATOR = getSelectedLineSeparator(); - int rightMarginImpl = getRightMarginImpl(); - if (rightMarginImpl > 0) { - settings.RIGHT_MARGIN = rightMarginImpl; - } + settings.RIGHT_MARGIN = ((Number) myRightMarginSpinner.getValue()).intValue(); settings.WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN = myCbWrapWhenTypingReachesRightMargin.isSelected(); myIndentOptionsEditor.setEnabled(true); myIndentOptionsEditor.apply(settings, settings.OTHER_INDENT_OPTIONS); } - - private int getRightMarginImpl() { - if (myRightMarginField == null) return -1; - try { - return Integer.parseInt(myRightMarginField.getText()); - } - catch (NumberFormatException e) { - return -1; - } - } - @Nullable private String getSelectedLineSeparator() { if (UNIX_STRING.equals(myLineSeparatorCombo.getSelectedItem())) { @@ -179,7 +157,7 @@ public class GeneralCodeStylePanel extends CodeStyleAbstractPanel { return true; } - if (!myRightMarginField.getText().equals(String.valueOf(settings.RIGHT_MARGIN))) return true; + if (!Comparing.equal(myRightMarginSpinner.getValue(), settings.RIGHT_MARGIN)) return true; myIndentOptionsEditor.setEnabled(true); return myIndentOptionsEditor.isModified(settings, settings.OTHER_INDENT_OPTIONS); } @@ -206,7 +184,7 @@ public class GeneralCodeStylePanel extends CodeStyleAbstractPanel { myLineSeparatorCombo.setSelectedItem(SYSTEM_DEPENDANT_STRING); } - myRightMarginField.setText(String.valueOf(settings.RIGHT_MARGIN)); + myRightMarginSpinner.setValue(settings.RIGHT_MARGIN); myCbWrapWhenTypingReachesRightMargin.setSelected(settings.WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN); myIndentOptionsEditor.reset(settings, settings.OTHER_INDENT_OPTIONS); myIndentOptionsEditor.setEnabled(true);