diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java')
-rw-r--r-- | platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java | 106 |
1 files changed, 37 insertions, 69 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 dfaa6501831b..cd1ec63d1879 100644 --- a/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java +++ b/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java @@ -101,7 +101,7 @@ import java.util.regex.Pattern; */ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disposable { private static final String REFS_CACHE = "References Resolve Cache"; - private static final Color SELECTION_BG_COLOR = new JBColor(new Color(0x009999), new Color(0, 80, 80)); + private static final Color BOX_COLOR = new JBColor(new Color(0xFC6C00), new Color(0xDE6C01)); private static final Logger LOG = Logger.getInstance("#com.intellij.internal.psiView.PsiViewerDialog"); private final Project myProject; @@ -133,7 +133,6 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp @Nullable private BlockTreeBuilder myBlockTreeBuilder; private RangeHighlighter myHighlighter; - private RangeHighlighter myIntersectHighlighter; private HashMap<PsiElement, BlockTreeNode> myPsiToBlockMap; private final Set<SourceWrapper> mySourceWrappers = ContainerUtil.newTreeSet(); @@ -163,7 +162,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp } @Override - public int compare(String o1, String o2) { + public int compare(@NotNull String o1, @NotNull String o2) { if (o1.equals(myOnTop)) return -1; if (o2.equals(myOnTop)) return 1; return o1.compareToIgnoreCase(o2); @@ -194,8 +193,8 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp } @Override - public int compareTo(final SourceWrapper o) { - return o == null ? -1 : getText().compareToIgnoreCase(o.getText()); + public int compareTo(@NotNull final SourceWrapper o) { + return getText().compareToIgnoreCase(o.getText()); } } @@ -242,7 +241,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp final TreeCellRenderer renderer = myPsiTree.getCellRenderer(); myPsiTree.setCellRenderer(new TreeCellRenderer() { @Override - public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { + public Component getTreeCellRendererComponent(@NotNull JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { final Component c = renderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); if (value instanceof DefaultMutableTreeNode) { final Object userObject = ((DefaultMutableTreeNode)value).getUserObject(); @@ -251,7 +250,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp if (c instanceof NodeRenderer) { ((NodeRenderer)c).setToolTipText(element == null ? null : element.getClass().getName()); } - if ((element instanceof PsiElement && FileContextUtil.getFileContext(((PsiElement)element).getContainingFile()) != null) || + if (element instanceof PsiElement && FileContextUtil.getFileContext(((PsiElement)element).getContainingFile()) != null || element instanceof ViewerTreeStructure.Inject) { final TextAttributes attr = EditorColorsManager.getInstance().getGlobalScheme().getAttributes(EditorColors.INJECTED_LANGUAGE_FRAGMENT); c.setBackground(attr.getBackgroundColor()); @@ -271,7 +270,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp myRefs.getSelectionModel().addListSelectionListener(listener); myRefs.setCellRenderer(new DefaultListCellRenderer() { @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + public Component getListCellRendererComponent(@NotNull JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { final Component comp = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (resolve(index) == null) { comp.setForeground(JBColor.RED); @@ -289,7 +288,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp getPeer().getWindow().setFocusTraversalPolicy(new LayoutFocusTraversalPolicy() { @Override - public Component getInitialComponent(Window window) { + public Component getInitialComponent(@NotNull Window window) { return myEditor.getComponent(); } }); @@ -324,7 +323,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp mySourceWrappers.add(wrapper); if (lastUsed == null && wrapper.getText().equals(type)) lastUsed = wrapper; if (myCurrentFile != null && wrapper.myFileType instanceof LanguageFileType && - ((LanguageFileType)wrapper.myFileType).equals(curLanguage.getAssociatedFileType())) { + wrapper.myFileType.equals(curLanguage.getAssociatedFileType())) { lastUsed = wrapper; } } @@ -347,7 +346,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp }; myFileTypeComboBox.addActionListener(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull ActionEvent e) { updateDialectsCombo(null); updateExtensionsCombo(); updateEditor(); @@ -355,7 +354,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp }); myDialectComboBox.addActionListener(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull ActionEvent e) { updateEditor(); } }); @@ -382,14 +381,14 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp final ViewerTreeStructure psiTreeStructure = (ViewerTreeStructure)myPsiTreeBuilder.getTreeStructure(); myShowWhiteSpacesBox.addActionListener(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull ActionEvent e) { psiTreeStructure.setShowWhiteSpaces(myShowWhiteSpacesBox.isSelected()); myPsiTreeBuilder.queueUpdate(); } }); myShowTreeNodesCheckBox.addActionListener(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull ActionEvent e) { psiTreeStructure.setShowTreeNodes(myShowTreeNodesCheckBox.isSelected()); myPsiTreeBuilder.queueUpdate(); } @@ -402,7 +401,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp myBlockStructurePanel.setVisible(settings.showBlocks); myShowBlocksCheckBox.addActionListener(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull ActionEvent e) { if (!myShowBlocksCheckBox.isSelected()) { settings.blockRefDividerLocation = myBlockRefSplitPane.getDividerLocation(); } @@ -473,14 +472,14 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp registerKeyboardAction(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull ActionEvent e) { focusEditor(); } }, KeyStroke.getKeyStroke(KeyEvent.VK_T, mask)); registerKeyboardAction(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull ActionEvent e) { focusTree(); } }, KeyStroke.getKeyStroke(KeyEvent.VK_S, mask)); @@ -488,21 +487,21 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp registerKeyboardAction(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull ActionEvent e) { focusBlockTree(); } }, KeyStroke.getKeyStroke(KeyEvent.VK_K, mask)); registerKeyboardAction(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull ActionEvent e) { focusRefs(); } }, KeyStroke.getKeyStroke(KeyEvent.VK_R, mask)); registerKeyboardAction(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull ActionEvent e) { if (myRefs.isFocusOwner()) { focusBlockTree(); } @@ -548,26 +547,6 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp myBlockTreeSeparator.setLabelFor(myBlockTree); } - private void updateIntersectHighlighter(int highlightStart, int highlightEnd) { - if (myIntersectHighlighter != null) { - myEditor.getMarkupModel().removeHighlighter(myIntersectHighlighter); - myIntersectHighlighter.dispose(); - } - if (myEditor.getSelectionModel().hasSelection()) { - int selectionStart = myEditor.getSelectionModel().getSelectionStart(); - int selectionEnd = myEditor.getSelectionModel().getSelectionEnd(); - TextRange resRange = new TextRange(highlightStart, highlightEnd).intersection(new TextRange(selectionStart, selectionEnd)); - if (resRange != null) { - TextAttributes attributes = new TextAttributes(); - attributes.setBackgroundColor(Color.LIGHT_GRAY); - attributes.setForegroundColor(Color.white); - myIntersectHighlighter = myEditor.getMarkupModel() - .addRangeHighlighter(resRange.getStartOffset(), resRange.getEndOffset(), HighlighterLayer.LAST + 1, attributes, - HighlighterTargetArea.EXACT_RANGE); - } - } - } - @Nullable private PsiElement getPsiElement() { final TreePath path = myPsiTree.getSelectionPath(); @@ -676,7 +655,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp protected Action[] createActions() { AbstractAction copyPsi = new AbstractAction("Cop&y PSI") { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull ActionEvent e) { PsiElement element = parseText(myEditor.getDocument().getText()); List<PsiElement> allToParse = new ArrayList<PsiElement>(); if (element instanceof PsiFile) { @@ -735,7 +714,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp myPsiToBlockMap = new HashMap<PsiElement, BlockTreeNode>(); final PsiElement psiFile = ((ViewerTreeStructure)myPsiTreeBuilder.getTreeStructure()).getRootPsiElement(); initMap(rootNode, psiFile); - PsiElement rootPsi = (rootNode.getBlock() instanceof ASTBlock) ? + PsiElement rootPsi = rootNode.getBlock() instanceof ASTBlock ? ((ASTBlock)rootNode.getBlock()).getNode().getPsi() : rootElement; BlockTreeNode blockNode = myPsiToBlockMap.get(rootPsi); @@ -856,12 +835,12 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp public MyPsiTreeSelectionListener() { myAttributes = new TextAttributes(); - myAttributes.setBackgroundColor(SELECTION_BG_COLOR); - myAttributes.setForegroundColor(Color.white); + myAttributes.setEffectColor(BOX_COLOR); + myAttributes.setEffectType(EffectType.ROUNDED_BOX); } @Override - public void valueChanged(TreeSelectionEvent e) { + public void valueChanged(@NotNull TreeSelectionEvent e) { if (!myEditor.getDocument().getText().equals(myLastParsedText) || myBlockTree.hasFocus()) return; TreePath path = myPsiTree.getSelectionPath(); clearSelection(); @@ -887,8 +866,6 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp final int textLength = myEditor.getDocument().getTextLength(); if (end <= textLength) { myHighlighter = myEditor.getMarkupModel().addRangeHighlighter(start, end, HighlighterLayer.LAST, myAttributes, HighlighterTargetArea.EXACT_RANGE); - updateIntersectHighlighter(start, end); - if (myPsiTree.hasFocus()) { myEditor.getCaretModel().moveToOffset(start); myEditor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE); @@ -946,12 +923,12 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp public MyBlockTreeSelectionListener() { myAttributes = new TextAttributes(); - myAttributes.setBackgroundColor(SELECTION_BG_COLOR); - myAttributes.setForegroundColor(Color.white); + myAttributes.setEffectColor(BOX_COLOR); + myAttributes.setEffectType(EffectType.ROUNDED_BOX); } @Override - public void valueChanged(TreeSelectionEvent e) { + public void valueChanged(@NotNull TreeSelectionEvent e) { if (myIgnoreBlockTreeSelectionMarker > 0 || myBlockTreeBuilder == null) { return; } @@ -988,7 +965,6 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp if (end <= textLength) { myHighlighter = myEditor.getMarkupModel() .addRangeHighlighter(start, end, HighlighterLayer.LAST, myAttributes, HighlighterTargetArea.EXACT_RANGE); - updateIntersectHighlighter(start, end); myEditor.getCaretModel().moveToOffset(start); myEditor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE); @@ -1112,7 +1088,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp private class GoToListener implements KeyListener, MouseListener, ListSelectionListener { private RangeHighlighter myListenerHighlighter; private final TextAttributes myAttributes = - new TextAttributes(Color.white, SELECTION_BG_COLOR, JBColor.RED, EffectType.BOXED, Font.PLAIN); + new TextAttributes(JBColor.RED, null, null, null, Font.PLAIN); private void navigate() { final Object value = myRefs.getSelectedValue(); @@ -1124,21 +1100,21 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp } @Override - public void keyPressed(KeyEvent e) { + public void keyPressed(@NotNull KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { navigate(); } } @Override - public void mouseClicked(MouseEvent e) { + public void mouseClicked(@NotNull MouseEvent e) { if (e.getClickCount() > 1) { navigate(); } } @Override - public void valueChanged(ListSelectionEvent e) { + public void valueChanged(@NotNull ListSelectionEvent e) { clearSelection(); updateDialectsCombo(null); updateExtensionsCombo(); @@ -1176,17 +1152,17 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp } @Override - public void keyTyped(KeyEvent e) {} + public void keyTyped(@NotNull KeyEvent e) {} @Override public void keyReleased(KeyEvent e) {} @Override - public void mousePressed(MouseEvent e) {} + public void mousePressed(@NotNull MouseEvent e) {} @Override - public void mouseReleased(MouseEvent e) {} + public void mouseReleased(@NotNull MouseEvent e) {} @Override - public void mouseEntered(MouseEvent e) {} + public void mouseEntered(@NotNull MouseEvent e) {} @Override - public void mouseExited(MouseEvent e) {} + public void mouseExited(@NotNull MouseEvent e) {} } private void updateEditor() { @@ -1247,7 +1223,6 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp if (myEditor.getContentComponent().hasFocus()) { TextRange rangeInHostFile = InjectedLanguageManager.getInstance(myProject).injectedToHost(element, element.getTextRange()); selectBlockNode(findBlockNode(rangeInHostFile, true)); - updateIntersectHighlighter(myHighlighter.getStartOffset(), myHighlighter.getEndOffset()); } } myPsiTreeBuilder.select(element); @@ -1270,13 +1245,6 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp return myLastParsedTextHashCode == myNewDocumentHashCode && myEditor.getContentComponent().hasFocus(); } - @Nullable - private PsiFile getPsiFile() { - ViewerTreeStructure treeStructure = (ViewerTreeStructure)myPsiTreeBuilder.getTreeStructure(); - final PsiElement root = treeStructure != null ? treeStructure.getRootPsiElement() : null; - return root instanceof PsiFile ? (PsiFile)root : null; - } - @Override public void beforeDocumentChange(DocumentEvent event) { @@ -1297,7 +1265,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp } @Override - public void focusGained(final FocusEvent e) { + public void focusGained(@NotNull final FocusEvent e) { final Component from = e.getOppositeComponent(); if (!e.isTemporary() && from != null && !myComboBox.isPopupVisible() && isUnder(from, myParent)) { myComboBox.setPopupVisible(true); |