cidr-formatter: fixes + code sample

This commit is contained in:
Anton Makeev
2010-09-13 17:24:50 +04:00
parent 55afdb4bfe
commit 020a82e68e
8 changed files with 61 additions and 52 deletions
@@ -15,10 +15,10 @@
*/
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();
@@ -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)) {
@@ -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 {
@@ -148,7 +148,7 @@ public class GeneralCodeStylePanel extends CodeStyleAbstractPanel {
final int selIndex = myIndentOptionsTabs.getSelectedIndex();
if (selIndex != myLastSelectedTab) {
myLastSelectedTab = selIndex;
updatePreviewEditor();
updatePreview();
somethingChanged();
}
}
@@ -155,10 +155,6 @@ public class CodeStyleBlankLinesPanel extends MultilanguageCodeStyleAbstractPane
}
protected int getRightMargin() {
return -1;
}
public JComponent getPanel() {
return myPanel;
}
@@ -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();
}
}
@@ -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();
@@ -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;
}
}