mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
java functional expressions: render functional expressions in show implementation using stubs if possible
This commit is contained in:
+7
-4
@@ -15,15 +15,18 @@
|
||||
*/
|
||||
package com.intellij.ide.util;
|
||||
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiExpressionTrimRenderer;
|
||||
import com.intellij.psi.NavigatablePsiElement;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFunctionalExpression;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.util.PsiFormatUtil;
|
||||
import com.intellij.psi.util.PsiFormatUtilBase;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import static com.intellij.ide.util.PsiClassOrFunctionalExpressionListCellRenderer.renderFunctionalExpression;
|
||||
|
||||
public class MethodOrFunctionalExpressionCellRenderer extends PsiElementListCellRenderer<NavigatablePsiElement> {
|
||||
private final PsiClassListCellRenderer myClassListCellRenderer = PsiClassListCellRenderer.INSTANCE;
|
||||
private final MethodCellRenderer myMethodCellRenderer;
|
||||
|
||||
public MethodOrFunctionalExpressionCellRenderer(boolean showMethodNames) {
|
||||
@@ -35,7 +38,7 @@ public class MethodOrFunctionalExpressionCellRenderer extends PsiElementListCell
|
||||
|
||||
public String getElementText(NavigatablePsiElement element) {
|
||||
return element instanceof PsiMethod ? myMethodCellRenderer.getElementText((PsiMethod)element)
|
||||
: PsiExpressionTrimRenderer.render((PsiExpression)element);
|
||||
: renderFunctionalExpression((PsiFunctionalExpression)element);
|
||||
}
|
||||
|
||||
protected Icon getIcon(PsiElement element) {
|
||||
|
||||
+14
-2
@@ -15,17 +15,21 @@
|
||||
*/
|
||||
package com.intellij.ide.util;
|
||||
|
||||
import com.intellij.extapi.psi.StubBasedPsiElementBase;
|
||||
import com.intellij.psi.NavigatablePsiElement;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiExpression;
|
||||
import com.intellij.psi.PsiFunctionalExpression;
|
||||
import com.intellij.psi.impl.java.stubs.FunctionalExpressionStub;
|
||||
import com.intellij.psi.presentation.java.ClassPresentationUtil;
|
||||
import com.intellij.psi.stubs.StubElement;
|
||||
import com.intellij.psi.util.PsiExpressionTrimRenderer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class PsiClassOrFunctionalExpressionListCellRenderer extends PsiElementListCellRenderer<NavigatablePsiElement> {
|
||||
@Override
|
||||
public String getElementText(NavigatablePsiElement element) {
|
||||
return element instanceof PsiClass ? ClassPresentationUtil.getNameForClass((PsiClass)element, false)
|
||||
: PsiExpressionTrimRenderer.render((PsiExpression)element);
|
||||
: renderFunctionalExpression((PsiFunctionalExpression)element);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -37,4 +41,12 @@ public class PsiClassOrFunctionalExpressionListCellRenderer extends PsiElementLi
|
||||
protected int getIconFlags() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static String renderFunctionalExpression(@NotNull PsiFunctionalExpression expression) {
|
||||
final StubElement stub = ((StubBasedPsiElementBase<?>)expression).getGreenStub();
|
||||
return stub instanceof FunctionalExpressionStub
|
||||
? ((FunctionalExpressionStub)stub).getPresentableText()
|
||||
: PsiExpressionTrimRenderer.render(expression);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user