From 6cbd1a7cedad41759e452195e4646dd01d778deb Mon Sep 17 00:00:00 2001 From: Rustam Vishnyakov Date: Fri, 25 Jul 2014 18:06:20 +0400 Subject: [PATCH] Right margin option UI for XML --- .../application/options/CodeStyleXmlPanel.form | 17 +++++++++++++---- .../application/options/CodeStyleXmlPanel.java | 10 +++++++++- .../XmlLanguageCodeStyleSettingsProvider.java | 9 +++++++++ 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/xml/impl/src/com/intellij/application/options/CodeStyleXmlPanel.form b/xml/impl/src/com/intellij/application/options/CodeStyleXmlPanel.form index 28d48d089cc1..c7895930be0f 100644 --- a/xml/impl/src/com/intellij/application/options/CodeStyleXmlPanel.form +++ b/xml/impl/src/com/intellij/application/options/CodeStyleXmlPanel.form @@ -17,7 +17,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -215,6 +215,15 @@ + + + + + + + + + diff --git a/xml/impl/src/com/intellij/application/options/CodeStyleXmlPanel.java b/xml/impl/src/com/intellij/application/options/CodeStyleXmlPanel.java index ab3126162dde..8767e00de1ec 100644 --- a/xml/impl/src/com/intellij/application/options/CodeStyleXmlPanel.java +++ b/xml/impl/src/com/intellij/application/options/CodeStyleXmlPanel.java @@ -15,6 +15,7 @@ */ package com.intellij.application.options; +import com.intellij.application.options.codeStyle.RightMarginForm; import com.intellij.ide.highlighter.XmlHighlighterFactory; import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.highlighter.EditorHighlighter; @@ -25,6 +26,7 @@ import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; import com.intellij.psi.formatter.xml.XmlCodeStyleSettings; import com.intellij.ui.components.JBScrollPane; +import org.apache.xmlbeans.XmlLanguage; import org.jetbrains.annotations.NotNull; import javax.swing.*; @@ -48,6 +50,8 @@ public class CodeStyleXmlPanel extends CodeStyleAbstractPanel{ private JComboBox myWhiteSpaceAroundCDATA; private JCheckBox myKeepWhitespaceInsideCDATACheckBox; private JBScrollPane myJBScrollPane; + private JPanel myRightMarginPanel; + private RightMarginForm myRightMarginForm; public CodeStyleXmlPanel(CodeStyleSettings settings) { super(settings); @@ -83,6 +87,7 @@ public class CodeStyleXmlPanel extends CodeStyleAbstractPanel{ xmlSettings.XML_SPACE_INSIDE_EMPTY_TAG = myInEmptyTag.isSelected(); xmlSettings.XML_WHITE_SPACE_AROUND_CDATA = myWhiteSpaceAroundCDATA.getSelectedIndex(); xmlSettings.XML_KEEP_WHITE_SPACES_INSIDE_CDATA = myKeepWhitespaceInsideCDATACheckBox.isSelected(); + myRightMarginForm.apply(settings); } private int getIntValue(JTextField keepBlankLines) { @@ -109,6 +114,7 @@ public class CodeStyleXmlPanel extends CodeStyleAbstractPanel{ myWrapText.setSelected(wrapText(settings)); myWhiteSpaceAroundCDATA.setSelectedIndex(xmlSettings.XML_WHITE_SPACE_AROUND_CDATA); myKeepWhitespaceInsideCDATACheckBox.setSelected(xmlSettings.XML_KEEP_WHITE_SPACES_INSIDE_CDATA); + myRightMarginForm.reset(settings); } @Override @@ -156,7 +162,7 @@ public class CodeStyleXmlPanel extends CodeStyleAbstractPanel{ return true; } - return false; + return myRightMarginForm.isModified(settings); } private boolean wrapText(final CodeStyleSettings settings) { @@ -193,5 +199,7 @@ public class CodeStyleXmlPanel extends CodeStyleAbstractPanel{ return new Dimension(prefSize.width + 15, prefSize.height); } }; + myRightMarginForm = new RightMarginForm(StdFileTypes.XML.getLanguage(), getSettings()); + myRightMarginPanel = myRightMarginForm.getTopPanel(); } } diff --git a/xml/impl/src/com/intellij/application/options/XmlLanguageCodeStyleSettingsProvider.java b/xml/impl/src/com/intellij/application/options/XmlLanguageCodeStyleSettingsProvider.java index 651c71e7ee7d..89311331d59b 100644 --- a/xml/impl/src/com/intellij/application/options/XmlLanguageCodeStyleSettingsProvider.java +++ b/xml/impl/src/com/intellij/application/options/XmlLanguageCodeStyleSettingsProvider.java @@ -17,6 +17,7 @@ package com.intellij.application.options; import com.intellij.lang.Language; import com.intellij.lang.xml.XMLLanguage; +import com.intellij.psi.codeStyle.CodeStyleSettingsCustomizable; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider; import com.intellij.util.PlatformUtils; @@ -40,6 +41,14 @@ public class XmlLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSetti return ""; } + @Override + public void customizeSettings(@NotNull CodeStyleSettingsCustomizable consumer, + @NotNull SettingsType settingsType) { + if (settingsType == SettingsType.WRAPPING_AND_BRACES_SETTINGS) { + consumer.showStandardOptions("RIGHT_MARGIN"); + } + } + @Override public CommonCodeStyleSettings getDefaultCommonSettings() { CommonCodeStyleSettings xmlSettings = new CommonCodeStyleSettings(getLanguage());