From 15b7a60d607e0601ec78fa77d23121ce3ae4eb04 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Fri, 11 Dec 2009 15:12:39 +0300 Subject: [PATCH] set highlighter for chosen language --- .../intellij/internal/psiView/PsiViewerDialog.java | 26 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java b/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java index 0e64e5c46f..037ad0f679 100644 --- a/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java +++ b/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java @@ -24,8 +24,13 @@ import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.actionSystem.ex.ComboBoxAction; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.editor.*; +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.editor.EditorFactory; +import com.intellij.openapi.editor.ScrollType; +import com.intellij.openapi.editor.SelectionModel; import com.intellij.openapi.editor.event.*; +import com.intellij.openapi.editor.ex.EditorEx; +import com.intellij.openapi.editor.highlighter.EditorHighlighterFactory; import com.intellij.openapi.editor.markup.*; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileTypes.*; @@ -79,7 +84,7 @@ public class PsiViewerDialog extends DialogWrapper { private final JList myRefs; private static String REFS_CACHE = "References Resolve Cache"; - private Editor myEditor; + private EditorEx myEditor; private String myLastParsedText = null; private JCheckBox myShowWhiteSpacesBox; @@ -187,7 +192,7 @@ public class PsiViewerDialog extends DialogWrapper { final List items = new ArrayList(); final EditorFactory editorFactory = EditorFactory.getInstance(); final Document document = editorFactory.createDocument(""); - myEditor = editorFactory.createEditor(document, myProject); + myEditor = (EditorEx)editorFactory.createEditor(document, myProject); myEditor.getSettings().setFoldingOutlineShown(false); document.addDocumentListener(myEditorListener); myEditor.getSelectionModel().addSelectionListener(myEditorListener); @@ -297,6 +302,8 @@ public class PsiViewerDialog extends DialogWrapper { } myTextSplit.setDividerLocation(settings.textDividerLocation); myTreeSplit.setDividerLocation(settings.treeDividerLocation); + + updateEditor(); super.init(); } @@ -392,7 +399,7 @@ public class PsiViewerDialog extends DialogWrapper { } @Nullable - private PsiElement getPsiElement(DefaultMutableTreeNode node) { + private static PsiElement getPsiElement(DefaultMutableTreeNode node) { if (node.getUserObject() instanceof ViewerNodeDescriptor) { ViewerNodeDescriptor descriptor = (ViewerNodeDescriptor)node.getUserObject(); Object elementObject = descriptor.getElement(); @@ -706,9 +713,20 @@ public class PsiViewerDialog extends DialogWrapper { public void actionPerformed(AnActionEvent e) { updatePresentation(e.getPresentation()); updateDialectsCombo(); + updateEditor(); } } + private FileType getFileType() { + Object handler = getHandler(); + return handler instanceof FileType ? (FileType)handler : + handler instanceof PsiViewerExtension ? ((PsiViewerExtension)handler).getDefaultFileType() : PlainTextFileType.INSTANCE; + } + + private void updateEditor() { + myEditor.setHighlighter(EditorHighlighterFactory.getInstance().createEditorHighlighter(myProject, getFileType())); + } + private class EditorListener implements CaretListener, SelectionListener, DocumentListener { public void caretPositionChanged(CaretEvent e) { if (!available() || myEditor.getSelectionModel().hasSelection()) return; -- 2.11.4.GIT