mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
cidr-formatter: fixes + code sample
This commit is contained in:
@@ -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();
|
||||
|
||||
+13
@@ -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)) {
|
||||
|
||||
+31
-35
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
-4
@@ -155,10 +155,6 @@ public class CodeStyleBlankLinesPanel extends MultilanguageCodeStyleAbstractPane
|
||||
|
||||
}
|
||||
|
||||
protected int getRightMargin() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
public JComponent getPanel() {
|
||||
return myPanel;
|
||||
}
|
||||
|
||||
+9
-3
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-4
@@ -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();
|
||||
|
||||
-4
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user