From 8f903ff9e797f8b7ba9e0dffeeb0acfa0629f3d9 Mon Sep 17 00:00:00 2001 From: Rustam Vishnyakov Date: Mon, 1 Feb 2016 16:46:49 +0300 Subject: [PATCH] Commenter form --- .../CodeStyleGenerationConfigurable.form | 35 +------- .../CodeStyleGenerationConfigurable.java | 49 ++++------- .../options/codeStyle/CommenterForm.form | 42 ++++++++++ .../options/codeStyle/CommenterForm.java | 81 +++++++++++++++++++ 4 files changed, 141 insertions(+), 66 deletions(-) create mode 100644 platform/lang-impl/src/com/intellij/application/options/codeStyle/CommenterForm.form create mode 100644 platform/lang-impl/src/com/intellij/application/options/codeStyle/CommenterForm.java diff --git a/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.form b/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.form index 4d3d7fe6bfd8..982b4f501bb1 100644 --- a/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.form +++ b/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.form @@ -182,7 +182,7 @@ - + @@ -191,37 +191,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.java b/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.java index cdf27d7ae4c9..6364090265ba 100644 --- a/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.java +++ b/java/java-impl/src/com/intellij/application/options/CodeStyleGenerationConfigurable.java @@ -15,6 +15,7 @@ */ package com.intellij.application.options; +import com.intellij.application.options.codeStyle.CommenterForm; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; import com.intellij.lang.java.JavaLanguage; import com.intellij.openapi.application.ApplicationBundle; @@ -24,7 +25,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.psi.codeStyle.CommonCodeStyleSettings; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.ui.JavaVisibilityPanel; import com.intellij.ui.IdeBorderFactory; @@ -33,8 +33,6 @@ import com.intellij.ui.components.JBList; import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.util.*; import java.util.List; @@ -52,10 +50,6 @@ public class CodeStyleGenerationConfigurable implements Configurable { private JTextField myLocalVariableSuffixField; private JCheckBox myCbPreferLongerNames; - private JCheckBox myCbLineCommentAtFirstColumn; - private JCheckBox myCbBlockCommentAtFirstColumn; - private JCheckBox myCbPrependWithSpace; - private final MembersOrderList myMembersOrderList; private final CodeStyleSettings mySettings; @@ -66,21 +60,15 @@ public class CodeStyleGenerationConfigurable implements Configurable { private JPanel myMembersPanel; private JCheckBox myRepeatSynchronizedCheckBox; private JPanel myVisibilityPanel; + + @SuppressWarnings("unused") private JPanel myCommenterPanel; + private CommenterForm myCommenterForm; public CodeStyleGenerationConfigurable(CodeStyleSettings settings) { mySettings = settings; myMembersOrderList = new MembersOrderList(); myPanel.setBorder(IdeBorderFactory.createEmptyBorder(2, 2, 2, 2)); myJavaVisibilityPanel = new JavaVisibilityPanel(false, true, RefactoringBundle.message("default.visibility.border.title")); - myCbLineCommentAtFirstColumn.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (myCbLineCommentAtFirstColumn.isSelected()) { - myCbPrependWithSpace.setSelected(false); - } - myCbPrependWithSpace.setEnabled(!myCbLineCommentAtFirstColumn.isSelected()); - } - }); } public JComponent createComponent() { @@ -224,7 +212,6 @@ public class CodeStyleGenerationConfigurable implements Configurable { }*/ public void reset(CodeStyleSettings settings) { - CommonCodeStyleSettings javaCommonSettings = settings.getCommonSettings(JavaLanguage.INSTANCE); myCbPreferLongerNames.setSelected(settings.PREFER_LONGER_NAMES); myFieldPrefixField.setText(settings.FIELD_NAME_PREFIX); @@ -237,11 +224,6 @@ public class CodeStyleGenerationConfigurable implements Configurable { myParameterSuffixField.setText(settings.PARAMETER_NAME_SUFFIX); myLocalVariableSuffixField.setText(settings.LOCAL_VARIABLE_NAME_SUFFIX); - myCbLineCommentAtFirstColumn.setSelected(javaCommonSettings.LINE_COMMENT_AT_FIRST_COLUMN); - myCbBlockCommentAtFirstColumn.setSelected(javaCommonSettings.BLOCK_COMMENT_AT_FIRST_COLUMN); - myCbPrependWithSpace.setSelected(javaCommonSettings.LINE_COMMENT_ADD_SPACE && !javaCommonSettings.LINE_COMMENT_AT_FIRST_COLUMN); - myCbPrependWithSpace.setEnabled(!javaCommonSettings .LINE_COMMENT_AT_FIRST_COLUMN); - myCbGenerateFinalLocals.setSelected(settings.GENERATE_FINAL_LOCALS); myCbGenerateFinalParameters.setSelected(settings.GENERATE_FINAL_PARAMETERS); myMembersOrderList.reset(mySettings); @@ -250,6 +232,8 @@ public class CodeStyleGenerationConfigurable implements Configurable { myInsertOverrideAnnotationCheckBox.setSelected(settings.INSERT_OVERRIDE_ANNOTATION); myRepeatSynchronizedCheckBox.setSelected(settings.REPEAT_SYNCHRONIZED); myJavaVisibilityPanel.setVisibility(settings.VISIBILITY); + + myCommenterForm.reset(settings); } public void reset() { @@ -257,7 +241,6 @@ public class CodeStyleGenerationConfigurable implements Configurable { } public void apply(CodeStyleSettings settings) throws ConfigurationException { - CommonCodeStyleSettings javaCommonSettings = settings.getCommonSettings(JavaLanguage.INSTANCE); settings.PREFER_LONGER_NAMES = myCbPreferLongerNames.isSelected(); settings.FIELD_NAME_PREFIX = setPrefixSuffix(myFieldPrefixField.getText(), true); @@ -270,10 +253,6 @@ public class CodeStyleGenerationConfigurable implements Configurable { settings.PARAMETER_NAME_SUFFIX = setPrefixSuffix(myParameterSuffixField.getText(), false); settings.LOCAL_VARIABLE_NAME_SUFFIX = setPrefixSuffix(myLocalVariableSuffixField.getText(), false); - javaCommonSettings.LINE_COMMENT_AT_FIRST_COLUMN = myCbLineCommentAtFirstColumn.isSelected(); - javaCommonSettings.BLOCK_COMMENT_AT_FIRST_COLUMN = myCbBlockCommentAtFirstColumn.isSelected(); - javaCommonSettings.LINE_COMMENT_ADD_SPACE = myCbPrependWithSpace.isSelected(); - settings.GENERATE_FINAL_LOCALS = myCbGenerateFinalLocals.isSelected(); settings.GENERATE_FINAL_PARAMETERS = myCbGenerateFinalParameters.isSelected(); @@ -284,6 +263,8 @@ public class CodeStyleGenerationConfigurable implements Configurable { settings.VISIBILITY = myJavaVisibilityPanel.getVisibility(); myMembersOrderList.apply(settings); + + myCommenterForm.apply(settings); for (Project project : ProjectManager.getInstance().getOpenProjects()) { DaemonCodeAnalyzer.getInstance(project).settingsChanged(); @@ -304,8 +285,6 @@ public class CodeStyleGenerationConfigurable implements Configurable { } public boolean isModified(CodeStyleSettings settings) { - CommonCodeStyleSettings javaCommonSettings = settings.getCommonSettings(JavaLanguage.INSTANCE); - boolean isModified = isModified(myCbPreferLongerNames, settings.PREFER_LONGER_NAMES); isModified |= isModified(myFieldPrefixField, settings.FIELD_NAME_PREFIX); @@ -318,11 +297,6 @@ public class CodeStyleGenerationConfigurable implements Configurable { isModified |= isModified(myParameterSuffixField, settings.PARAMETER_NAME_SUFFIX); isModified |= isModified(myLocalVariableSuffixField, settings.LOCAL_VARIABLE_NAME_SUFFIX); - isModified |= isModified(myCbLineCommentAtFirstColumn, javaCommonSettings.LINE_COMMENT_AT_FIRST_COLUMN); - isModified |= isModified(myCbBlockCommentAtFirstColumn, javaCommonSettings.BLOCK_COMMENT_AT_FIRST_COLUMN); - isModified |= isModified(myCbPrependWithSpace, javaCommonSettings.LINE_COMMENT_ADD_SPACE); - - isModified |= isModified(myCbGenerateFinalLocals, settings.GENERATE_FINAL_LOCALS); isModified |= isModified(myCbGenerateFinalParameters, settings.GENERATE_FINAL_PARAMETERS); @@ -332,6 +306,8 @@ public class CodeStyleGenerationConfigurable implements Configurable { isModified |= myMembersOrderList.isModified(settings); isModified |= !settings.VISIBILITY.equals(myJavaVisibilityPanel.getVisibility()); + + isModified |= myCommenterForm.isModified(settings); return isModified; } @@ -348,6 +324,11 @@ public class CodeStyleGenerationConfigurable implements Configurable { return !textField.getText().trim().equals(value); } + private void createUIComponents() { + myCommenterForm = new CommenterForm(JavaLanguage.INSTANCE); + myCommenterPanel = myCommenterForm.getCommenterPanel(); + } + private static class MembersOrderList extends JBList { private static abstract class PropertyManager { diff --git a/platform/lang-impl/src/com/intellij/application/options/codeStyle/CommenterForm.form b/platform/lang-impl/src/com/intellij/application/options/codeStyle/CommenterForm.form new file mode 100644 index 000000000000..9a76f0e1403c --- /dev/null +++ b/platform/lang-impl/src/com/intellij/application/options/codeStyle/CommenterForm.form @@ -0,0 +1,42 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/platform/lang-impl/src/com/intellij/application/options/codeStyle/CommenterForm.java b/platform/lang-impl/src/com/intellij/application/options/codeStyle/CommenterForm.java new file mode 100644 index 000000000000..fe69eac6f8ac --- /dev/null +++ b/platform/lang-impl/src/com/intellij/application/options/codeStyle/CommenterForm.java @@ -0,0 +1,81 @@ +/* + * Copyright 2000-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.application.options.codeStyle; + +import com.intellij.lang.Language; +import com.intellij.openapi.application.ApplicationBundle; +import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.CommonCodeStyleSettings; +import com.intellij.ui.IdeBorderFactory; +import com.intellij.ui.components.JBCheckBox; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * Reusable commenter settings form. + */ +public class CommenterForm { + private JPanel myCommenterPanel; + private JBCheckBox myLineCommentAtFirstColumnCb; + private JBCheckBox myLineCommentAddSpaceCb; + private JBCheckBox myBlockCommentAtFirstJBCheckBox; + + private final Language myLanguage; + + public CommenterForm(Language language) { + myLanguage = language; + myCommenterPanel.setBorder(IdeBorderFactory.createTitledBorder(ApplicationBundle.message("title.naming.comment.code"))); + myLineCommentAtFirstColumnCb.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (myLineCommentAtFirstColumnCb.isSelected()) { + myLineCommentAddSpaceCb.setSelected(false); + } + myLineCommentAddSpaceCb.setEnabled(!myLineCommentAtFirstColumnCb.isSelected()); + } + }); + } + + public void reset(@NotNull CodeStyleSettings settings) { + CommonCodeStyleSettings langSettings = settings.getCommonSettings(myLanguage); + myLineCommentAtFirstColumnCb.setSelected(langSettings.LINE_COMMENT_AT_FIRST_COLUMN); + myBlockCommentAtFirstJBCheckBox.setSelected(langSettings.BLOCK_COMMENT_AT_FIRST_COLUMN); + myLineCommentAddSpaceCb.setSelected(langSettings.LINE_COMMENT_ADD_SPACE && !langSettings.LINE_COMMENT_AT_FIRST_COLUMN); + myLineCommentAddSpaceCb.setEnabled(!langSettings .LINE_COMMENT_AT_FIRST_COLUMN); + } + + + public void apply(@NotNull CodeStyleSettings settings) { + CommonCodeStyleSettings langSettings = settings.getCommonSettings(myLanguage); + langSettings.LINE_COMMENT_AT_FIRST_COLUMN = myLineCommentAtFirstColumnCb.isSelected(); + langSettings.BLOCK_COMMENT_AT_FIRST_COLUMN = myBlockCommentAtFirstJBCheckBox.isSelected(); + langSettings.LINE_COMMENT_ADD_SPACE = myLineCommentAddSpaceCb.isSelected(); + } + + public boolean isModified(@NotNull CodeStyleSettings settings) { + CommonCodeStyleSettings langSettings = settings.getCommonSettings(myLanguage); + return myLineCommentAtFirstColumnCb.isSelected() != langSettings.LINE_COMMENT_AT_FIRST_COLUMN + || myBlockCommentAtFirstJBCheckBox.isSelected() != langSettings.BLOCK_COMMENT_AT_FIRST_COLUMN + || myLineCommentAddSpaceCb.isSelected() != langSettings.LINE_COMMENT_ADD_SPACE; + } + + public JPanel getCommenterPanel() { + return myCommenterPanel; + } +}