mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Allow to customize sample file creation for code style settings panel
This commit is contained in:
+40
-32
@@ -18,6 +18,8 @@ package com.intellij.psi.codeStyle;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -66,11 +68,22 @@ public abstract class LanguageCodeStyleSettingsProvider {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows to customize PSI file creation for a language settings preview panel.
|
||||
*
|
||||
* @param project current project
|
||||
* @param text code sample to demonstrate formatting settings (see {@link #getCodeSample(LanguageCodeStyleSettingsProvider.SettingsType)}
|
||||
* @return a PSI file instance with given text, or null for use
|
||||
*/
|
||||
@Nullable
|
||||
public PsiFile createFileFromText(final Project project, final String text) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of <code>CommonCodeStyleSettings</code> and sets initial default values for those
|
||||
* settings which differ from the original.
|
||||
*
|
||||
* @param settings Main settings containing the common code style settings.
|
||||
* @return Created instance of <code>CommonCodeStyleSettings</code> or null if associated language doesn't
|
||||
* use its own language-specific common settings (the settings are shared with other languages).
|
||||
*/
|
||||
@@ -81,30 +94,22 @@ public abstract class LanguageCodeStyleSettingsProvider {
|
||||
|
||||
@NotNull
|
||||
public static Language[] getLanguagesWithCodeStyleSettings() {
|
||||
ArrayList<Language> langs = new ArrayList<Language>();
|
||||
final ArrayList<Language> languages = new ArrayList<Language>();
|
||||
for (LanguageCodeStyleSettingsProvider provider : Extensions.getExtensions(EP_NAME)) {
|
||||
langs.add(provider.getLanguage());
|
||||
languages.add(provider.getLanguage());
|
||||
}
|
||||
return langs.toArray(new Language[langs.size()]);
|
||||
return languages.toArray(new Language[languages.size()]);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String getCodeSample(Language lang, @NotNull SettingsType settingsType) {
|
||||
for (LanguageCodeStyleSettingsProvider provider : Extensions.getExtensions(EP_NAME)) {
|
||||
if (provider.getLanguage().equals(lang)) {
|
||||
return provider.getCodeSample(settingsType);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
final LanguageCodeStyleSettingsProvider provider = forLanguage(lang);
|
||||
return provider != null ? provider.getCodeSample(settingsType) : 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;
|
||||
final LanguageCodeStyleSettingsProvider provider = forLanguage(lang);
|
||||
return provider != null ? provider.getRightMargin(settingsType) : -1;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -121,32 +126,35 @@ public abstract class LanguageCodeStyleSettingsProvider {
|
||||
|
||||
@Nullable
|
||||
public static CommonCodeStyleSettings getDefaultCommonSettings(Language lang) {
|
||||
for (LanguageCodeStyleSettingsProvider provider : Extensions.getExtensions(EP_NAME)) {
|
||||
if (provider.getLanguage().equals(lang)) {
|
||||
return provider.getDefaultCommonSettings();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
final LanguageCodeStyleSettingsProvider provider = forLanguage(lang);
|
||||
return provider != null ? provider.getDefaultCommonSettings() : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String getFileExt(Language lang) {
|
||||
for (LanguageCodeStyleSettingsProvider provider : Extensions.getExtensions(EP_NAME)) {
|
||||
if (provider.getLanguage().equals(lang)) {
|
||||
return provider.getFileExt();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
final LanguageCodeStyleSettingsProvider provider = forLanguage(lang);
|
||||
return provider != null ? provider.getFileExt() : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String getLanguageName(Language lang) {
|
||||
final LanguageCodeStyleSettingsProvider provider = forLanguage(lang);
|
||||
return provider != null ? provider.getLanguageName() : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static PsiFile createFileFromText(final Language language, final Project project, final String text) {
|
||||
final LanguageCodeStyleSettingsProvider provider = forLanguage(language);
|
||||
return provider != null ? provider.createFileFromText(project, text) : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static LanguageCodeStyleSettingsProvider forLanguage(final Language language) {
|
||||
for (LanguageCodeStyleSettingsProvider provider : Extensions.getExtensions(EP_NAME)) {
|
||||
if (provider.getLanguage().equals(lang)) {
|
||||
return provider.getLanguageName();
|
||||
if (provider.getLanguage().equals(language)) {
|
||||
return provider;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,14 +88,6 @@ public abstract class CodeStyleAbstractPanel implements Disposable {
|
||||
private boolean myShowsPreviewHighlighters;
|
||||
private boolean mySkipPreviewHighlighting;
|
||||
|
||||
private synchronized void setSomethingChanged(final boolean b) {
|
||||
mySomethingChanged = b;
|
||||
}
|
||||
|
||||
private synchronized boolean isSomethingChanged() {
|
||||
return mySomethingChanged;
|
||||
}
|
||||
|
||||
protected CodeStyleAbstractPanel(CodeStyleSettings settings) {
|
||||
mySettings = settings;
|
||||
myEditor = createEditor();
|
||||
@@ -110,6 +102,14 @@ public abstract class CodeStyleAbstractPanel implements Disposable {
|
||||
updatePreview();
|
||||
}
|
||||
|
||||
private synchronized void setSomethingChanged(final boolean b) {
|
||||
mySomethingChanged = b;
|
||||
}
|
||||
|
||||
private synchronized boolean isSomethingChanged() {
|
||||
return mySomethingChanged;
|
||||
}
|
||||
|
||||
public void setModel(final CodeStyleSchemesModel model) {
|
||||
myModel = model;
|
||||
}
|
||||
|
||||
+6
-3
@@ -16,9 +16,7 @@
|
||||
package com.intellij.application.options.codeStyle;
|
||||
|
||||
import com.intellij.application.options.CodeStyleAbstractPanel;
|
||||
import com.intellij.ide.DataManager;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
@@ -30,7 +28,6 @@ import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.LanguageFileType;
|
||||
import com.intellij.openapi.fileTypes.StdFileTypes;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
@@ -114,6 +111,12 @@ public abstract class MultilanguageCodeStyleAbstractPanel extends CodeStyleAbstr
|
||||
return sample;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PsiFile createFileFromText(final Project project, final String text) {
|
||||
final PsiFile file = LanguageCodeStyleSettingsProvider.createFileFromText(myLanguage, project, text);
|
||||
return file != null ? file : super.createFileFromText(project, text);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getRightMargin() {
|
||||
if (myLanguage == null) return -1;
|
||||
|
||||
Reference in New Issue
Block a user