clickable links in tooltips

This commit is contained in:
Dmitry Avdeev
2015-06-08 20:02:11 +03:00
parent 795bddc97f
commit acc740e3c5
4 changed files with 48 additions and 6 deletions
@@ -0,0 +1,41 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.codeInsight.daemon.impl;
import com.intellij.codeInsight.highlighting.TooltipLinkHandler;
import com.intellij.codeInsight.navigation.NavigationUtil;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiElement;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
/**
* @author Dmitry Avdeev
*/
public class JavaClassTooltipLinkHandler extends TooltipLinkHandler {
@Override
public boolean handleLink(@NotNull String refSuffix, @NotNull Editor editor) {
Project project = editor.getProject();
if (project == null) return false;
PsiElement aClass = JavaPsiFacade.getInstance(project).findClass(refSuffix, GlobalSearchScope.allScope(project));
if (aClass == null) return false;
NavigationUtil.activateFileWithPsiElement(aClass);
return true;
}
}
@@ -181,7 +181,7 @@ public class MarkerType {
Arrays.sort(overridings, comparator);
String start = isAbstract ? DaemonBundle.message("method.is.implemented.header") : DaemonBundle.message("method.is.overriden.header");
@NonNls String pattern = "    {1}";
@NonNls String pattern = "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#javaClass/{1}\">{1}</a>";
return GutterIconTooltipHelper.composeText(overridings, start, pattern);
}
@@ -273,7 +273,7 @@ public class MarkerType {
String start = aClass.isInterface()
? DaemonBundle.message("interface.is.implemented.by.header")
: DaemonBundle.message("class.is.subclassed.by.header");
@NonNls String pattern = "&nbsp;&nbsp;&nbsp;&nbsp;{0}";
@NonNls String pattern = "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#javaClass/{0}\">{0}</a>";
return GutterIconTooltipHelper.composeText(subclasses, start, pattern);
}
@@ -3,11 +3,11 @@ method.is.overridden.too.many=Is overridden in subclasses
interface.is.implemented.too.many=Has implementations
class.is.subclassed.too.many=Has subclasses
method.implements=Implements method in ''{1}''
method.implements.in=Implements method ''{0}'' in ''{1}''
method.implements=Implements method in <a href="#javaClass/{1}">{1}</a>
method.implements.in=Implements method ''{0}'' in <a href="#javaClass/{1}">{1}</a>
method.overrides=Overrides method in ''{1}''
method.overrides.in=Overrides method ''{0}'' in ''{1}''
method.overrides=Overrides method in <a href="#javaClass/{1}">{1}</a>
method.overrides.in=Overrides method ''{0}'' in <a href="#javaClass/{1}">{1}</a>
analysis.hasnot.been.run=No analysis has been performed
+1
View File
@@ -1040,6 +1040,7 @@
<codeInsight.gotoSuper language="JAVA" implementationClass="com.intellij.codeInsight.navigation.JavaGotoSuperHandler"/>
<codeInsight.gotoSuper language="SPI" implementationClass="com.intellij.spi.SPIGotoSuperHandler"/>
<codeInsight.lineMarkerProvider language="JAVA" implementationClass="com.intellij.codeInsight.daemon.impl.JavaLineMarkerProvider"/>
<codeInsight.linkHandler prefix="#javaClass/" handlerClass="com.intellij.codeInsight.daemon.impl.JavaClassTooltipLinkHandler"/>
<codeInsight.lineMarkerProvider language="JAVA" implementationClass="com.intellij.codeInsight.daemon.impl.IconLineMarkerProvider"/>
<codeInsight.lineMarkerProvider language="JAVA" implementationClass="com.intellij.codeInsight.daemon.impl.RecursiveCallLineMarkerProvider"/>
<colorProvider implementation="com.intellij.codeInsight.daemon.impl.JavaColorProvider" />