Separate ActionScript code style settings preview (related to IDEA-56387)

This commit is contained in:
Rustam.Vishnyakov
2011-02-28 13:52:54 +03:00
parent a1aab9ec03
commit b9fb679044
3 changed files with 63 additions and 4 deletions
@@ -46,6 +46,26 @@ public abstract class LanguageCodeStyleSettingsProvider {
public void customizeSettings(@NotNull CodeStyleSettingsCustomizable consumer, @NotNull SettingsType settingsType) {
}
/**
* Override this method if file extension to be used with samples is different from the one returned by associated file type.
*
* @return The file extension for samples (null by default).
*/
@Nullable
public String getFileExt() {
return null;
}
/**
* Override this method if language name shown in preview tab must be different from the name returned by Language class itself.
*
* @return The language name to show in preview tab (null by default).
*/
@Nullable
public String getLanguageName() {
return null;
}
/**
* Creates an instance of <code>CommonCodeStyleSettings</code> and sets initial default values for those
* settings which differ from the original.
@@ -90,7 +110,9 @@ public abstract class LanguageCodeStyleSettingsProvider {
@Nullable
public static Language getLanguage(String langName) {
for (LanguageCodeStyleSettingsProvider provider : Extensions.getExtensions(EP_NAME)) {
if (langName.equals(provider.getLanguage().getDisplayName())) {
String name = provider.getLanguageName();
if (name == null) name = provider.getLanguage().getDisplayName();
if (langName.equals(name)) {
return provider.getLanguage();
}
}
@@ -106,5 +128,25 @@ public abstract class LanguageCodeStyleSettingsProvider {
}
return 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;
}
@Nullable
public static String getLanguageName(Language lang) {
for (LanguageCodeStyleSettingsProvider provider : Extensions.getExtensions(EP_NAME)) {
if (provider.getLanguage().equals(lang)) {
return provider.getLanguageName();
}
}
return null;
}
}
@@ -258,10 +258,14 @@ public abstract class CodeStyleAbstractPanel implements Disposable {
protected void prepareForReformat(PsiFile psiFile) {
}
protected String getFileExt() {
return getFileTypeExtension(getFileType());
}
protected PsiFile createFileFromText(Project project, String text) {
return PsiFileFactory.getInstance(project).createFileFromText(
"a." + getFileTypeExtension(getFileType()), getFileType(), text, LocalTimeCounter.currentTime(), true
"a." + getFileExt(), getFileType(), text, LocalTimeCounter.currentTime(), true
);
}
@@ -120,6 +120,13 @@ public abstract class MultilanguageCodeStyleAbstractPanel extends CodeStyleAbstr
return LanguageCodeStyleSettingsProvider.getRightMargin(myLanguage, getSettingsType());
}
@Override
protected String getFileExt() {
String fileExt = LanguageCodeStyleSettingsProvider.getFileExt(myLanguage);
if (fileExt != null) return fileExt;
return super.getFileExt();
}
@NotNull
@Override
protected FileType getFileType() {
@@ -190,7 +197,7 @@ public abstract class MultilanguageCodeStyleAbstractPanel extends CodeStyleAbstr
Language[] langs = LanguageCodeStyleSettingsProvider.getLanguagesWithCodeStyleSettings();
if (langs.length == 0) return;
for (Language lang : langs) {
tabbedPane.addTab(lang.getDisplayName(), createDummy());
tabbedPane.addTab(getTabName(lang), createDummy());
}
tabbedPane.setComponentAt(0, getEditor().getComponent());
myLangSelectionIndex = 0;
@@ -229,7 +236,7 @@ public abstract class MultilanguageCodeStyleAbstractPanel extends CodeStyleAbstr
private void selectCurrentLanguageTab() {
for(int i = 0; i < tabbedPane.getTabCount(); i ++) {
if (myLanguage.getDisplayName().equals(tabbedPane.getTitleAt(i))) {
if (getTabName(myLanguage).equals(tabbedPane.getTitleAt(i))) {
tabbedPane.setSelectedIndex(i);
return;
}
@@ -252,4 +259,10 @@ public abstract class MultilanguageCodeStyleAbstractPanel extends CodeStyleAbstr
private static JComponent createDummy() {
return new JLabel("");
}
private static String getTabName(Language language) {
String tabName = LanguageCodeStyleSettingsProvider.getLanguageName(language);
if (tabName == null) tabName = language.getDisplayName();
return tabName;
}
}