下面列出了怎么用com.intellij.psi.templateLanguages.TemplateDataLanguageMappings的API类实例代码及写法,或者点击链接到github查看源代码。
private static LanguageFileType getAssociatedFileType(VirtualFile file, Project project) {
if (project == null) {
return null;
}
Language language = TemplateDataLanguageMappings.getInstance(project).getMapping(file);
LanguageFileType associatedFileType = null;
if (language != null) {
associatedFileType = language.getAssociatedFileType();
}
if (language == null || associatedFileType == null) {
associatedFileType = FluidLanguage.getDefaultTemplateLang();
}
return associatedFileType;
}
public FluidFileViewProvider(PsiManager manager, VirtualFile file, boolean physical) {
super(manager, file, physical);
Language dataLang = TemplateDataLanguageMappings.getInstance(manager.getProject()).getMapping(file);
if (dataLang == null) {
dataLang = StdFileTypes.HTML.getLanguage();
}
if (dataLang instanceof TemplateLanguage) {
myTemplateDataLanguage = PlainTextLanguage.INSTANCE;
} else {
// The substitutor signals, that a files content should be substituted
Language mySubstitutedLanguage = LanguageSubstitutors.INSTANCE.substituteLanguage(dataLang, file, manager.getProject());
if (mySubstitutedLanguage == FluidLanguage.INSTANCE) {
this.myTemplateDataLanguage = StdFileTypes.HTML.getLanguage();
} else {
this.myTemplateDataLanguage = mySubstitutedLanguage;
}
}
}
private void resetCommentLanguageCombo(@NotNull Language commentLanguage) {
final DefaultComboBoxModel model = (DefaultComboBoxModel) myCommenterLanguage.getModel();
final List<Language> languages = TemplateDataLanguageMappings.getTemplateableLanguages();
languages.add(FluidLanguage.INSTANCE);
Collections.sort(languages, (o1, o2) -> o1.getID().compareTo(o2.getID()));
for (Language language: languages) {
model.addElement(language);
}
myCommenterLanguage.setRenderer(new ListCellRendererWrapper() {
@Override
public void customize(JList list, Object value, int index, boolean selected, boolean hasFocus) {
setText(value == null ? "" : ((Language) value).getDisplayName());
if (value != null) {
final FileType type = ((Language) value).getAssociatedFileType();
if (type != null) {
setIcon(type.getIcon());
}
}
}
});
myCommenterLanguage.setSelectedItem(commentLanguage);
}
public SoyLayeredHighlighter(
@Nullable Project project,
@Nullable VirtualFile virtualFile,
@NotNull EditorColorsScheme colors) {
// Creating main highlighter.
super(new SoySyntaxHighlighter(), colors);
// Highlighter for the outer language.
FileType type = null;
if (project == null || virtualFile == null) {
type = StdFileTypes.PLAIN_TEXT;
} else {
Language language = TemplateDataLanguageMappings.getInstance(project).getMapping(virtualFile);
if (language != null) type = language.getAssociatedFileType();
if (type == null) type = SoyLanguage.getDefaultTemplateLang();
}
SyntaxHighlighter outerHighlighter =
SyntaxHighlighterFactory.getSyntaxHighlighter(type, project, virtualFile);
registerLayer(OTHER, new LayerDescriptor(outerHighlighter, ""));
}
public DustLayeredSyntaxHighlighter(@Nullable Project project, @Nullable VirtualFile virtualFile, @NotNull EditorColorsScheme colors) {
// create main highlighter
super(new DustSyntaxHighlighter(), colors);
// highlighter for outer lang
FileType type = null;
if(project == null || virtualFile == null) {
type = StdFileTypes.PLAIN_TEXT;
} else {
Language language = TemplateDataLanguageMappings.getInstance(project).getMapping(virtualFile);
if(language != null) type = language.getAssociatedFileType();
if(type == null) type = StdFileTypes.HTML;
}
SyntaxHighlighter outerHighlighter = SyntaxHighlighter.PROVIDER.create(type, project, virtualFile);
registerLayer(DustTypes.HTML, new LayerDescriptor(outerHighlighter, ""));
}
public FileTypePatternDialog(@Nullable String initialPatterns, FileType fileType, Language templateDataLanguage) {
myPatternField.setText(initialPatterns);
if (fileType instanceof TemplateLanguageFileType) {
final DefaultComboBoxModel model = (DefaultComboBoxModel) myLanguageCombo.getModel();
model.addElement(null);
final List<Language> languages = TemplateDataLanguageMappings.getTemplateableLanguages();
Collections.sort(languages, new Comparator<Language>() {
@Override
public int compare(final Language o1, final Language o2) {
return o1.getID().compareTo(o2.getID());
}
});
for (Language language : languages) {
model.addElement(language);
}
myLanguageCombo.setRenderer(new ListCellRendererWrapper() {
@Override
public void customize(JList list, Object value, int index, boolean selected, boolean hasFocus) {
setText(value == null ? "" : ((Language) value).getDisplayName());
if (value != null) {
final FileType type = ((Language)value).getAssociatedFileType();
if (type != null) {
setIcon(TargetAWT.to(type.getIcon()));
}
}
}
});
myLanguageCombo.setSelectedItem(templateDataLanguage);
} else {
myLanguageCombo.setVisible(false);
myTemplateDataLanguageButton.setVisible(false);
}
}
public static void doTearDown(@Nonnull final Project project, ApplicationStarter application, boolean checkForEditors) throws Exception {
DocumentCommitThread.getInstance().clearQueue();
CodeStyleSettingsManager.getInstance(project).dropTemporarySettings();
checkAllTimersAreDisposed();
UsefulTestCase.doPostponedFormatting(project);
LookupManager lookupManager = LookupManager.getInstance(project);
if (lookupManager != null) {
lookupManager.hideActiveLookup();
}
((StartupManagerImpl)StartupManager.getInstance(project)).prepareForNextTest();
InspectionProfileManager.getInstance().deleteProfile(PROFILE);
assertNotNull("Application components damaged", ProjectManager.getInstance());
new WriteCommandAction.Simple(project) {
@Override
@RequiredWriteAction
protected void run() throws Throwable {
if (ourSourceRoot != null) {
try {
final VirtualFile[] children = ourSourceRoot.getChildren();
for (VirtualFile child : children) {
child.delete(this);
}
}
catch (IOException e) {
//noinspection CallToPrintStackTrace
e.printStackTrace();
}
}
EncodingManager encodingManager = EncodingManager.getInstance();
if (encodingManager instanceof EncodingManagerImpl) ((EncodingManagerImpl)encodingManager).clearDocumentQueue();
FileDocumentManager manager = FileDocumentManager.getInstance();
ApplicationManager.getApplication().runWriteAction(EmptyRunnable.getInstance()); // Flush postponed formatting if any.
manager.saveAllDocuments();
if (manager instanceof FileDocumentManagerImpl) {
((FileDocumentManagerImpl)manager).dropAllUnsavedDocuments();
}
}
}.execute().throwException();
assertFalse(PsiManager.getInstance(project).isDisposed());
PsiDocumentManagerImpl documentManager = clearUncommittedDocuments(project);
((HintManagerImpl)HintManager.getInstance()).cleanup();
DocumentCommitThread.getInstance().clearQueue();
UIUtil.invokeAndWaitIfNeeded(new Runnable() {
@Override
public void run() {
((UndoManagerImpl)UndoManager.getGlobalInstance()).dropHistoryInTests();
((UndoManagerImpl)UndoManager.getInstance(project)).dropHistoryInTests();
UIUtil.dispatchAllInvocationEvents();
}
});
TemplateDataLanguageMappings.getInstance(project).cleanupForNextTest();
ProjectManagerEx.getInstanceEx().closeTestProject(project);
//application.setDataProvider(null);
ourTestCase = null;
((PsiManagerImpl)PsiManager.getInstance(project)).cleanupForNextTest();
CompletionProgressIndicator.cleanupForNextTest();
if (checkForEditors) {
checkEditorsReleased();
}
if (isLight(project)) {
// mark temporarily as disposed so that rogue component trying to access it will fail
((ProjectImpl)project).setTemporarilyDisposed(true);
documentManager.clearUncommittedDocuments();
}
}