Presentation: Support constructors in JetFunctionPresenter

This commit is contained in:
Alexey Sedunov
2015-06-08 18:04:15 +03:00
parent 034af9e7f2
commit b049455aa4
3 changed files with 18 additions and 6 deletions
@@ -17,6 +17,8 @@
package org.jetbrains.kotlin.psi; package org.jetbrains.kotlin.psi;
import com.intellij.lang.ASTNode; import com.intellij.lang.ASTNode;
import com.intellij.navigation.ItemPresentation;
import com.intellij.navigation.ItemPresentationProviders;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.stubs.IStubElementType; import com.intellij.psi.stubs.IStubElementType;
import com.intellij.util.IncorrectOperationException; import com.intellij.util.IncorrectOperationException;
@@ -171,6 +173,11 @@ public abstract class JetConstructor<T extends JetConstructor<T>> extends JetDec
throw new IncorrectOperationException("setName to constructor"); throw new IncorrectOperationException("setName to constructor");
} }
@Override
public ItemPresentation getPresentation() {
return ItemPresentationProviders.getItemPresentation(this);
}
@Nullable @Nullable
public PsiElement getConstructorKeyword() { public PsiElement getConstructorKeyword() {
return findChildByType(JetTokens.CONSTRUCTOR_KEYWORD); return findChildByType(JetTokens.CONSTRUCTOR_KEYWORD);
+1 -1
View File
@@ -393,7 +393,7 @@
implementationClass="org.jetbrains.kotlin.idea.ktSignature.KotlinSignatureInJavaMarkerProvider"/> implementationClass="org.jetbrains.kotlin.idea.ktSignature.KotlinSignatureInJavaMarkerProvider"/>
<iconProvider implementation="org.jetbrains.kotlin.idea.JetIconProvider"/> <iconProvider implementation="org.jetbrains.kotlin.idea.JetIconProvider"/>
<itemPresentationProvider implementationClass="org.jetbrains.kotlin.idea.presentation.JetFunctionPresenter" <itemPresentationProvider implementationClass="org.jetbrains.kotlin.idea.presentation.JetFunctionPresenter"
forClass="org.jetbrains.kotlin.psi.JetNamedFunction"/> forClass="org.jetbrains.kotlin.psi.JetFunction"/>
<itemPresentationProvider implementationClass="org.jetbrains.kotlin.idea.presentation.JetClassPresenter" <itemPresentationProvider implementationClass="org.jetbrains.kotlin.idea.presentation.JetClassPresenter"
forClass="org.jetbrains.kotlin.psi.JetClass"/> forClass="org.jetbrains.kotlin.psi.JetClass"/>
<itemPresentationProvider implementationClass="org.jetbrains.kotlin.idea.presentation.JetObjectPresenter" <itemPresentationProvider implementationClass="org.jetbrains.kotlin.idea.presentation.JetObjectPresenter"
@@ -23,15 +23,15 @@ import com.intellij.navigation.ItemPresentationProvider;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.psi.JetNamedFunction; import org.jetbrains.kotlin.psi.*;
import org.jetbrains.kotlin.psi.JetParameter;
import org.jetbrains.kotlin.psi.JetTypeReference;
import java.util.Collection; import java.util.Collection;
public class JetFunctionPresenter implements ItemPresentationProvider<JetNamedFunction> { public class JetFunctionPresenter implements ItemPresentationProvider<JetFunction> {
@Override @Override
public ItemPresentation getPresentation(@NotNull final JetNamedFunction function) { public ItemPresentation getPresentation(@NotNull final JetFunction function) {
if (function instanceof JetFunctionLiteral) return null;
return new JetDefaultNamedDeclarationPresentation(function) { return new JetDefaultNamedDeclarationPresentation(function) {
@Override @Override
public String getPresentableText() { public String getPresentableText() {
@@ -60,6 +60,11 @@ public class JetFunctionPresenter implements ItemPresentationProvider<JetNamedFu
@Override @Override
public String getLocationString() { public String getLocationString() {
if (function instanceof JetConstructor) {
FqName name = ((JetConstructor) function).getClassOrObject().getFqName();
return name != null ? String.format("(in %s)", name) : "";
}
FqName name = function.getFqName(); FqName name = function.getFqName();
if (name != null) { if (name != null) {
JetTypeReference receiverTypeRef = function.getReceiverTypeReference(); JetTypeReference receiverTypeRef = function.getReceiverTypeReference();