From 8e140d8df774de6ac4e0e5449513384851c20916 Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 10 Apr 2013 16:12:24 +0200 Subject: [PATCH] javadoc: append enum ordinal in quick doc (IDEA-104906) --- .../lang/java/JavaDocumentationProvider.java | 1 + .../codeInsight/javadoc/JavaDocInfoGenerator.java | 12 ++++++++++++ .../codeInsight/javadocIG/enumConstantOrdinal.html | 3 +++ .../codeInsight/javadocIG/enumConstantOrdinal.java | 3 +++ .../javadoc/JavaDocInfoGeneratorTest.java | 13 ++++++++++++- 5 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.html create mode 100644 java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.java diff --git a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java index 4d7749a813d6..1d79658c2c69 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java @@ -364,6 +364,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext generateInitializer(buffer, field); + JavaDocInfoGenerator.enumConstantOrdinal(buffer, field, parentClass, "\n"); return buffer.toString(); } diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java index dca78ce60d56..914a30024aef 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java @@ -39,6 +39,7 @@ import com.intellij.psi.util.PsiFormatUtil; import com.intellij.psi.util.PsiFormatUtilBase; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.ArrayUtil; +import com.intellij.util.ArrayUtilRt; import com.intellij.util.IncorrectOperationException; import org.jdom.Document; import org.jdom.Element; @@ -466,6 +467,17 @@ public class JavaDocInfoGenerator { generateEpilogue(buffer); } + public static void enumConstantOrdinal(StringBuilder buffer, PsiField field, PsiClass parentClass, final String newLine) { + if (parentClass != null && field instanceof PsiEnumConstant) { + final PsiField[] fields = parentClass.getFields(); + final int idx = ArrayUtilRt.find(fields, field); + if (idx >= 0) { + buffer.append(newLine); + buffer.append("Enum constant ordinal: ").append(idx); + } + } + } + // not a javadoc in fact.. private static void generateVariableJavaDoc(@NonNls StringBuilder buffer, PsiVariable variable, boolean generatePrologueAndEpilogue) { if (generatePrologueAndEpilogue) diff --git a/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.html b/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.html new file mode 100644 index 000000000000..11d610085775 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.html @@ -0,0 +1,3 @@ +E + E A +Enum constant ordinal: 0 \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.java b/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.java new file mode 100644 index 000000000000..488f14fb4dab --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.java @@ -0,0 +1,3 @@ +enum E { + A; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java index e6595b98b11a..9fefc23b0287 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java @@ -2,6 +2,7 @@ package com.intellij.codeInsight.javadoc; import com.intellij.JavaTestUtil; import com.intellij.codeInsight.CodeInsightTestCase; +import com.intellij.lang.java.JavaDocumentationProvider; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; @@ -62,7 +63,17 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase { public void testInitializerWithReference() throws Exception { doTestField(); } - + + public void testEnumConstantOrdinal() throws Exception { + PsiClass psiClass = getTestClass(); + PsiField field = psiClass.getFields() [0]; + final File htmlPath = new File(JavaTestUtil.getJavaTestDataPath() + "/codeInsight/javadocIG/" + getTestName(true) + ".html"); + String htmlText = FileUtil.loadFile(htmlPath); + String docInfo = new JavaDocumentationProvider().getQuickNavigateInfo(field, field); + assertNotNull(docInfo); + assertEquals(StringUtil.convertLineSeparators(htmlText.trim()), StringUtil.convertLineSeparators(docInfo.trim())); + } + private void doTestField() throws Exception { PsiClass psiClass = getTestClass(); PsiField field = psiClass.getFields() [0];