mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
quick doc: reuse type presentation from Ctrl-Q (IDEA-64809)
This commit is contained in:
@@ -1430,10 +1430,10 @@ public class JavaDocInfoGenerator {
|
||||
* @return Length of the generated label.
|
||||
*/
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
private int generateLink(StringBuilder buffer, String refText, String label, PsiElement context, boolean plainLink) {
|
||||
private static int generateLink(StringBuilder buffer, String refText, String label, @NotNull PsiElement context, boolean plainLink) {
|
||||
if (label == null) {
|
||||
PsiManager manager = PsiManager.getInstance(myProject);
|
||||
label = JavaDocUtil.getLabelText(myProject, manager, refText, context);
|
||||
final PsiManager manager = context.getManager();
|
||||
label = JavaDocUtil.getLabelText(manager.getProject(), manager, refText, context);
|
||||
}
|
||||
|
||||
LOG.assertTrue(refText != null, "refText appears to be null.");
|
||||
@@ -1448,7 +1448,7 @@ public class JavaDocInfoGenerator {
|
||||
}
|
||||
|
||||
|
||||
DocumentationManager.createHyperlink(buffer, JavaDocUtil.getReferenceText(myProject, target), label, plainLink);
|
||||
DocumentationManager.createHyperlink(buffer, JavaDocUtil.getReferenceText(context.getProject(), target), label, plainLink);
|
||||
return label.length();
|
||||
}
|
||||
|
||||
@@ -1456,7 +1456,7 @@ public class JavaDocInfoGenerator {
|
||||
* @return Length of the generated label.
|
||||
*/
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
private int generateType(StringBuilder buffer, PsiType type, PsiElement context) {
|
||||
public static int generateType(StringBuilder buffer, PsiType type, PsiElement context) {
|
||||
if (type instanceof PsiPrimitiveType) {
|
||||
String text = type.getCanonicalText();
|
||||
buffer.append(text);
|
||||
|
||||
@@ -95,87 +95,12 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
return getExternalJavaDocUrl(element);
|
||||
}
|
||||
|
||||
private static void newLine(StringBuffer buffer) {
|
||||
private static void newLine(StringBuilder buffer) {
|
||||
// Don't know why space has to be added after newline for good text alignment...
|
||||
buffer.append("\n ");
|
||||
}
|
||||
|
||||
private static void generateType(@NonNls StringBuffer buffer, PsiType type, PsiElement context) {
|
||||
if (type instanceof PsiPrimitiveType) {
|
||||
buffer.append(type.getCanonicalText());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (type instanceof PsiWildcardType) {
|
||||
PsiWildcardType wc = ((PsiWildcardType)type);
|
||||
PsiType bound = wc.getBound();
|
||||
|
||||
buffer.append("?");
|
||||
|
||||
if (bound != null) {
|
||||
buffer.append(wc.isExtends() ? " extends " : " super ");
|
||||
generateType(buffer, bound, context);
|
||||
}
|
||||
}
|
||||
|
||||
if (type instanceof PsiArrayType) {
|
||||
generateType(buffer, ((PsiArrayType)type).getComponentType(), context);
|
||||
if (type instanceof PsiEllipsisType) {
|
||||
buffer.append("...");
|
||||
}
|
||||
else {
|
||||
buffer.append("[]");
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (type instanceof PsiClassType) {
|
||||
PsiClassType.ClassResolveResult result = ((PsiClassType)type).resolveGenerics();
|
||||
PsiClass psiClass = result.getElement();
|
||||
PsiSubstitutor psiSubst = result.getSubstitutor();
|
||||
|
||||
if (psiClass == null || psiClass instanceof PsiTypeParameter) {
|
||||
buffer.append(type.getPresentableText());
|
||||
return;
|
||||
}
|
||||
|
||||
buffer.append(JavaDocUtil.getShortestClassName(psiClass, context));
|
||||
|
||||
if (psiClass.hasTypeParameters()) {
|
||||
StringBuffer subst = new StringBuffer();
|
||||
boolean goodSubst = true;
|
||||
|
||||
PsiTypeParameter[] params = psiClass.getTypeParameters();
|
||||
|
||||
subst.append("<");
|
||||
for (int i = 0; i < params.length; i++) {
|
||||
PsiType t = psiSubst.substitute(params[i]);
|
||||
|
||||
if (t == null) {
|
||||
goodSubst = false;
|
||||
break;
|
||||
}
|
||||
|
||||
generateType(subst, t, context);
|
||||
|
||||
if (i < params.length - 1) {
|
||||
subst.append(", ");
|
||||
}
|
||||
}
|
||||
|
||||
if (goodSubst) {
|
||||
subst.append(">");
|
||||
String text = subst.toString();
|
||||
|
||||
buffer.append(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void generateInitializer(StringBuffer buffer, PsiVariable variable) {
|
||||
private static void generateInitializer(StringBuilder buffer, PsiVariable variable) {
|
||||
PsiExpression initializer = variable.getInitializer();
|
||||
if (initializer != null) {
|
||||
String text = initializer.getText().trim();
|
||||
@@ -194,7 +119,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
}
|
||||
}
|
||||
|
||||
private static void generateModifiers(StringBuffer buffer, PsiElement element) {
|
||||
private static void generateModifiers(StringBuilder buffer, PsiElement element) {
|
||||
String modifiers = PsiFormatUtil.formatModifiers(element, PsiFormatUtil.JAVADOC_MODIFIERS_ONLY);
|
||||
|
||||
if (modifiers.length() > 0) {
|
||||
@@ -209,7 +134,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
private static String generateClassInfo(PsiClass aClass) {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
|
||||
if (aClass instanceof PsiAnonymousClass) return LangBundle.message("java.terms.anonymous.class");
|
||||
|
||||
@@ -266,7 +191,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
buffer.append(" extends ");
|
||||
|
||||
for (int j = 0; j < refs.length; j++) {
|
||||
generateType(buffer, refs[j], aClass);
|
||||
JavaDocInfoGenerator.generateType(buffer, refs[j], aClass);
|
||||
|
||||
if (j < refs.length - 1) {
|
||||
buffer.append(" & ");
|
||||
@@ -293,7 +218,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
}
|
||||
else {
|
||||
for (int i = 0; i < refs.length; i++) {
|
||||
generateType(buffer, refs[i], aClass);
|
||||
JavaDocInfoGenerator.generateType(buffer, refs[i], aClass);
|
||||
|
||||
if (i < refs.length - 1) {
|
||||
buffer.append(", ");
|
||||
@@ -308,7 +233,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
newLine(buffer);
|
||||
buffer.append("implements ");
|
||||
for (int i = 0; i < refs.length; i++) {
|
||||
generateType(buffer, refs[i], aClass);
|
||||
JavaDocInfoGenerator.generateType(buffer, refs[i], aClass);
|
||||
|
||||
if (i < refs.length - 1) {
|
||||
buffer.append(", ");
|
||||
@@ -321,7 +246,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
public static String generateMethodInfo(PsiMethod method) {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
|
||||
PsiClass parentClass = method.getContainingClass();
|
||||
|
||||
@@ -335,7 +260,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
PsiTypeParameter[] params = method.getTypeParameters();
|
||||
|
||||
if (params.length > 0) {
|
||||
buffer.append("<");
|
||||
buffer.append("<");
|
||||
for (int i = 0; i < params.length; i++) {
|
||||
PsiTypeParameter param = params[i];
|
||||
|
||||
@@ -347,7 +272,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
buffer.append(" extends ");
|
||||
|
||||
for (int j = 0; j < extendees.length; j++) {
|
||||
generateType(buffer, extendees[j], method);
|
||||
JavaDocInfoGenerator.generateType(buffer, extendees[j], method);
|
||||
|
||||
if (j < extendees.length - 1) {
|
||||
buffer.append(" & ");
|
||||
@@ -359,11 +284,11 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
buffer.append(", ");
|
||||
}
|
||||
}
|
||||
buffer.append("> ");
|
||||
buffer.append("< ");
|
||||
}
|
||||
|
||||
if (method.getReturnType() != null) {
|
||||
generateType(buffer, method.getReturnType(), method);
|
||||
JavaDocInfoGenerator.generateType(buffer, method.getReturnType(), method);
|
||||
buffer.append(" ");
|
||||
}
|
||||
|
||||
@@ -373,7 +298,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
PsiParameter[] parms = method.getParameterList().getParameters();
|
||||
for (int i = 0; i < parms.length; i++) {
|
||||
PsiParameter parm = parms[i];
|
||||
generateType(buffer, parm.getType(), method);
|
||||
JavaDocInfoGenerator.generateType(buffer, parm.getType(), method);
|
||||
buffer.append(" ");
|
||||
if (parm.getName() != null) {
|
||||
buffer.append(parm.getName());
|
||||
@@ -409,7 +334,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
}
|
||||
|
||||
private static String generateFieldInfo(PsiField field) {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
PsiClass parentClass = field.getContainingClass();
|
||||
|
||||
if (parentClass != null && !(parentClass instanceof PsiAnonymousClass)) {
|
||||
@@ -419,7 +344,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
|
||||
generateModifiers(buffer, field);
|
||||
|
||||
generateType(buffer, field.getType(), field);
|
||||
JavaDocInfoGenerator.generateType(buffer, field.getType(), field);
|
||||
buffer.append(" ");
|
||||
buffer.append(field.getName());
|
||||
|
||||
@@ -429,11 +354,11 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
}
|
||||
|
||||
private static String generateVariableInfo(PsiVariable variable) {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
|
||||
generateModifiers(buffer, variable);
|
||||
|
||||
generateType(buffer, variable.getType(), variable);
|
||||
JavaDocInfoGenerator.generateType(buffer, variable.getType(), variable);
|
||||
|
||||
buffer.append(" ");
|
||||
|
||||
@@ -582,7 +507,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
final CandidateInfo[] candidates = rh.getReferencedMethodCandidates(expr, true);
|
||||
final String text = expr.getText();
|
||||
if (candidates.length > 0) {
|
||||
@NonNls final StringBuffer sb = new StringBuffer();
|
||||
@NonNls final StringBuilder sb = new StringBuilder();
|
||||
|
||||
for (final CandidateInfo candidate : candidates) {
|
||||
final PsiElement element = candidate.getElement();
|
||||
@@ -603,7 +528,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
return CodeInsightBundle.message("javadoc.candidates.not.found", text);
|
||||
}
|
||||
|
||||
private static void createElementLink(@NonNls final StringBuffer sb, final PsiElement element, final String str) {
|
||||
private static void createElementLink(@NonNls final StringBuilder sb, final PsiElement element, final String str) {
|
||||
sb.append(" <a href=\"psi_element://");
|
||||
sb.append(JavaDocUtil.getReferenceText(element.getProject(), element));
|
||||
sb.append("\">");
|
||||
|
||||
Reference in New Issue
Block a user