cidr-formatter: fixes + code sample
authorAnton Makeev <Anton.Makeev@jetbrains.com>
Mon, 13 Sep 2010 09:22:42 +0000 (13:22 +0400)
committerAnton Makeev <Anton.Makeev@jetbrains.com>
Mon, 13 Sep 2010 13:24:50 +0000 (17:24 +0400)
java/java-impl/src/com/intellij/ide/JavaLanguageCodeStyleSettingsProvider.java
platform/lang-api/src/com/intellij/psi/codeStyle/LanguageCodeStyleSettingsProvider.java
platform/lang-impl/src/com/intellij/application/options/CodeStyleAbstractPanel.java
platform/lang-impl/src/com/intellij/application/options/GeneralCodeStylePanel.java
platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleBlankLinesPanel.java
platform/lang-impl/src/com/intellij/application/options/codeStyle/MultilanguageCodeStyleAbstractPanel.java
platform/lang-impl/src/com/intellij/application/options/codeStyle/OptionTreeWithPreviewPanel.java
platform/lang-impl/src/com/intellij/application/options/codeStyle/WrappingAndBracesPanel.java

index 20d5adb3aa7cce29990045e1aeafc3e6614bcdaa..87afe0d3a3901f41036352eb2e55f47fe5e8932c 100644 (file)
  */
 package com.intellij.ide;
 
-import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider;
 import com.intellij.lang.Language;
 import com.intellij.lang.StdLanguages;
 import com.intellij.psi.codeStyle.CodeStyleSettingsCustomizable;
+import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider;
 import org.jetbrains.annotations.NotNull;
 
 /**
@@ -40,6 +40,12 @@ public class JavaLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSett
     return GENERAL_CODE_SAMPLE;
   }
 
+  @Override
+  public int getRightMargin(@NotNull SettingsType settingsType) {
+    if (settingsType == SettingsType.WRAPPING_AND_BRACES_SETTINGS) return 37;
+    return super.getRightMargin(settingsType);
+  }
+
   @Override
   public void customizeSettings(@NotNull CodeStyleSettingsCustomizable consumer, @NotNull SettingsType settingsType) {
     consumer.showAllStandardOptions();
index e3da448ac825b5f68ba3a2107e662be04db8171e..d01859164a6bea06e208d35867c8cd2481575f82 100644 (file)
@@ -39,6 +39,10 @@ public abstract class LanguageCodeStyleSettingsProvider {
 
   public abstract String getCodeSample(@NotNull SettingsType settingsType);
 
+  public int getRightMargin(@NotNull SettingsType settingsType) {
+    return settingsType == SettingsType.WRAPPING_AND_BRACES_SETTINGS ? 30 : -1;
+  }
+
   public void customizeSettings(@NotNull CodeStyleSettingsCustomizable consumer, @NotNull SettingsType settingsType) {
   }
 
@@ -74,6 +78,15 @@ public abstract class LanguageCodeStyleSettingsProvider {
     return null;
   }
 
+  public static int getRightMargin(Language lang, @NotNull SettingsType settingsType) {
+    for (LanguageCodeStyleSettingsProvider provider : Extensions.getExtensions(EP_NAME)) {
+      if (provider.getLanguage().equals(lang)) {
+        return provider.getRightMargin(settingsType);
+      }
+    }
+    return -1;
+  }
+
   @Nullable
   public static Language getLanguage(String langName) {
     for (LanguageCodeStyleSettingsProvider provider : Extensions.getExtensions(EP_NAME)) {
index 4f308de9261d301cb9376db0e8253fa262f4380c..87c17486aa3eaa3f2f9a57c5704e369a8f0a2b09 100644 (file)
@@ -16,6 +16,7 @@
 package com.intellij.application.options;
 
 import com.intellij.application.options.codeStyle.CodeStyleSchemesModel;
+import com.intellij.codeStyle.CodeStyleFacade;
 import com.intellij.ide.DataManager;
 import com.intellij.openapi.Disposable;
 import com.intellij.openapi.actionSystem.PlatformDataKeys;
@@ -89,6 +90,8 @@ public abstract class CodeStyleAbstractPanel implements Disposable {
         somethingChanged();
       }
     });
+
+    updatePreview();
   }
 
   public void setModel(final CodeStyleSchemesModel model) {
@@ -107,35 +110,13 @@ public abstract class CodeStyleAbstractPanel implements Disposable {
 
   private Editor createEditor() {
     EditorFactory editorFactory = EditorFactory.getInstance();
-    myTextToReformat = getPreviewText();
-    Document editorDocument = editorFactory.createDocument(myTextToReformat);
+    Document editorDocument = editorFactory.createDocument("");
     EditorEx editor = (EditorEx)editorFactory.createViewer(editorDocument);
-
+    fillEditorSettings(editor.getSettings());
     myLastDocumentModificationStamp = editor.getDocument().getModificationStamp();
-
-    EditorSettings editorSettings = editor.getSettings();
-    fillEditorSettings(editorSettings);
-
-    updatePreviewHighlighter(editor);
-
     return editor;
   }
 
-  private void updatePreviewHighlighter(final EditorEx editor) {
-    EditorColorsScheme scheme = editor.getColorsScheme();
-    scheme.setColor(EditorColors.CARET_ROW_COLOR, null);
-
-    editor.setHighlighter(createHighlighter(scheme));
-  }
-
-  protected void updatePreviewEditor() {
-    myTextToReformat = getPreviewText();
-    updatePreview();
-    updatePreviewHighlighter((EditorEx)myEditor);
-  }
-
-  protected abstract EditorHighlighter createHighlighter(final EditorColorsScheme scheme);
-
   private void fillEditorSettings(final EditorSettings editorSettings) {
     editorSettings.setWhitespacesShown(true);
     editorSettings.setLineMarkerAreaShown(false);
@@ -144,21 +125,22 @@ public abstract class CodeStyleAbstractPanel implements Disposable {
     editorSettings.setFoldingOutlineShown(false);
     editorSettings.setAdditionalColumnsCount(0);
     editorSettings.setAdditionalLinesCount(1);
-    final int rightMargin = getRightMargin();
-    if (rightMargin > 0) {
-      editorSettings.setRightMargin(rightMargin);
-    }
   }
 
-  protected abstract int getRightMargin();
+  protected void updatePreview() {
+    updateEditor();
+    updatePreviewHighlighter((EditorEx)myEditor);
+  }
 
-  public final void updatePreview() {
+  private void updateEditor() {
     if (!myShouldUpdatePreview || !myEditor.getComponent().isShowing()) {
       return;
     }
 
     if (myLastDocumentModificationStamp != myEditor.getDocument().getModificationStamp()) {
       myTextToReformat = myEditor.getDocument().getText();
+    } else {
+      myTextToReformat = getPreviewText();
     }
 
     int currOffs = myEditor.getScrollingModel().getVerticalScrollOffset();
@@ -169,11 +151,19 @@ public abstract class CodeStyleAbstractPanel implements Disposable {
         replaceText(finalProject);
       }
     }, null, null);
-    myEditor.getSettings().setRightMargin(getRightMargin());
+
+    myEditor.getSettings().setRightMargin(getAdjustedRightMargin());
     myLastDocumentModificationStamp = myEditor.getDocument().getModificationStamp();
     myEditor.getScrollingModel().scrollVertically(currOffs);
   }
 
+  private int getAdjustedRightMargin() {
+    int result = getRightMargin();
+    return result > 0 ? result : CodeStyleFacade.getInstance(getCurrentProject()).getRightMargin();
+  }
+
+  protected abstract int getRightMargin();
+
   private void replaceText(final Project project) {
     ApplicationManager.getApplication().runWriteAction(new Runnable() {
       public void run() {
@@ -184,9 +174,7 @@ public abstract class CodeStyleAbstractPanel implements Disposable {
           prepareForReformat(psiFile);
           apply(mySettings);
           CodeStyleSettings clone = mySettings.clone();
-          if (getRightMargin() > 0) {
-            clone.RIGHT_MARGIN = getRightMargin();
-          }
+          clone.RIGHT_MARGIN = getAdjustedRightMargin();
 
 
           CodeStyleSettingsManager.getInstance(project).setTemporarySettings(clone);
@@ -226,6 +214,14 @@ public abstract class CodeStyleAbstractPanel implements Disposable {
     return project;
   }
 
+  private void updatePreviewHighlighter(final EditorEx editor) {
+    EditorColorsScheme scheme = editor.getColorsScheme();
+    scheme.setColor(EditorColors.CARET_ROW_COLOR, null);
+    editor.setHighlighter(createHighlighter(scheme));
+  }
+
+  protected abstract EditorHighlighter createHighlighter(final EditorColorsScheme scheme);
+
   @NotNull
   protected abstract FileType getFileType();
 
@@ -322,7 +318,7 @@ public abstract class CodeStyleAbstractPanel implements Disposable {
         try {
           myUpdateAlarm.cancelAllRequests();
           if (isSomethingChanged()) {
-            updatePreview();
+            updateEditor();
           }
         }
         finally {
index 90ef442f2faf39caea7a23cfbc40c1fcc2bb2f53..f227858fbecea7b4341a7a5da7dfa7287d247f47 100644 (file)
@@ -148,7 +148,7 @@ public class GeneralCodeStylePanel extends CodeStyleAbstractPanel {
         final int selIndex = myIndentOptionsTabs.getSelectedIndex();
         if (selIndex != myLastSelectedTab) {
           myLastSelectedTab = selIndex;
-          updatePreviewEditor();
+          updatePreview();
           somethingChanged();
         }
       }
index 5a08c679c8175ba37753ba6bbbd4a36f2ba254b5..2fe4ea1dafa6ef31693388f53bcc7b898bd39057 100644 (file)
@@ -155,10 +155,6 @@ public class CodeStyleBlankLinesPanel extends MultilanguageCodeStyleAbstractPane
 
   }
 
-  protected int getRightMargin() {
-    return -1;
-  }
-
   public JComponent getPanel() {
     return myPanel;
   }
index a83091633f28583bd602b6b7859f4deacba4b417..eedd6f5f01ecb560313852e06e422139ee73f530 100644 (file)
@@ -86,7 +86,7 @@ public abstract class MultilanguageCodeStyleAbstractPanel extends CodeStyleAbstr
       }
     }
     onLanguageChange(language);
-    updatePreviewEditor();
+    updatePreview();
   }
 
   public Language getSelectedLanguage() {
@@ -106,6 +106,12 @@ public abstract class MultilanguageCodeStyleAbstractPanel extends CodeStyleAbstr
     return sample;
   }
 
+  @Override
+  protected int getRightMargin() {
+    if (myLanguage == null) return -1;
+    return LanguageCodeStyleSettingsProvider.getRightMargin(myLanguage, getSettingsType());
+  }
+
   @NotNull
   @Override
   protected FileType getFileType() {
@@ -188,7 +194,7 @@ public abstract class MultilanguageCodeStyleAbstractPanel extends CodeStyleAbstr
         setPanelLanguage(langs[0]);
       }
       else {
-        updatePreviewEditor();
+        updatePreview();
       }
       tabbedPane.addChangeListener(new ChangeListener() {
         public void stateChanged(ChangeEvent e) {
@@ -213,7 +219,7 @@ public abstract class MultilanguageCodeStyleAbstractPanel extends CodeStyleAbstr
     else {
       // If settings are language-specific
       previewPanel.add(getEditor().getComponent(), BorderLayout.CENTER);
-      updatePreviewEditor();
+      updatePreview();
     }
   }
 
index 5b94deafdfd0918f84c05b5d9a61965a4bfa720e..ac5805f483cf5d21833477692e1aac867bc083e5 100644 (file)
@@ -223,10 +223,6 @@ public abstract class OptionTreeWithPreviewPanel extends MultilanguageCodeStyleA
 
   protected abstract void initTables();
 
-  protected int getRightMargin() {
-    return -1;
-  }
-
   protected void resetImpl(final CodeStyleSettings settings) {
     TreeModel treeModel = myOptionsTree.getModel();
     TreeNode root = (TreeNode)treeModel.getRoot();
index d715db1a4cf64335559c20886b3bf29ec484c581..6b7349a00d7f673db73d25d2d793188edccb25a7 100644 (file)
@@ -134,8 +134,4 @@ public class WrappingAndBracesPanel extends OptionTableWithPreviewPanel {
     addOption("VARIABLE_ANNOTATION_WRAP", ApplicationBundle.message("wrapping.local.variables.annotation"), WRAP_OPTIONS, WRAP_VALUES);
     addOption("ENUM_CONSTANTS_WRAP", ApplicationBundle.message("wrapping.enum.constants"), WRAP_OPTIONS, WRAP_VALUES);
   }
-
-  protected int getRightMargin() {
-    return 37;
-  }
 }
\ No newline at end of file