From d83ace24ab9e315a0302de477dc1bb24f4ea9d3a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com>
Date: Fri, 12 Jan 2024 21:45:20 +0800
Subject: [PATCH] =?UTF-8?q?feat(JavaLangDoc):=202.14=20java=20enum=20doc?=
=?UTF-8?q?=20for=20Yes(1,=20"Yes")=20|=20java=20=E6=9E=9A=E4=B8=BE?=
=?UTF-8?q?=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 ++
build.gradle | 4 ++-
.../plugin/show/java/JavaLangDoc.java | 4 +++
.../plugin/show/java/doc/EnumDoc.java | 32 +++++++++++++++++
.../show/settings/AppSettingsComponent.java | 11 +++++-
.../settings/AppSettingsConfigurable.java | 3 ++
.../show/settings/AppSettingsState.java | 1 +
.../linwancen/plugin/show/demo/java/Ref.java | 2 ++
.../show/demo/java/obj/YesOrNoEnum.java | 35 +++++++++++++++++++
9 files changed, 92 insertions(+), 2 deletions(-)
create mode 100644 src/main/idea/io/github/linwancen/plugin/show/java/doc/EnumDoc.java
create mode 100644 src/test/java/io/github/linwancen/plugin/show/demo/java/obj/YesOrNoEnum.java
diff --git a/README.md b/README.md
index 91342bd..183754d 100644
--- a/README.md
+++ b/README.md
@@ -112,6 +112,7 @@ Show doc comment at the Project view Tree, line End, json, other
English Change Notes:
+- 2.14 Add line-end-comment java enum doc for Yes(1, "Yes")
- 2.13 ★ Cache for 2023.3
- 2.12 Add project-view-tree support Markdown and Asciidoc
- 2.11 Add project-view-tree description from pom.xml and build.gradle
@@ -154,6 +155,7 @@ Show doc comment at the Project view Tree, line End, json, other
中文更新说明:
+- 2.14 增加 行末注释 java 枚举注释用于 Yes(1, "是")
- 2.13 ★ 缓存用于支持 2023.3
- 2.12 增加 文件树注释 支持 Markdown and Asciidoc
- 2.11 增加 文件树注释 模块描述 来自 pom.xml 和 build.gradle
diff --git a/build.gradle b/build.gradle
index 9c9b3c0..705edc6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,7 @@ plugins {
}
group 'io.github.linwancen'
-version '2.13.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
+version '2.14.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
repositories {
mavenCentral()
@@ -88,6 +88,7 @@ patchPluginXml {
changeNotes = """
English Change Notes:
+- 2.14 Add line-end-comment java enum doc for Yes(1, "Yes")
- 2.13 ★ Cache for 2023.3
- 2.12 Add project-view-tree support Markdown and Asciidoc
- 2.11 Add project-view-tree description from pom.xml and build.gradle
@@ -130,6 +131,7 @@ patchPluginXml {
中文更新说明:
+- 2.14 增加 行末注释 java 枚举注释用于 Yes(1, "是")
- 2.13 ★ 缓存用于支持 2023.3
- 2.12 增加 文件树注释 支持 Markdown and Asciidoc
- 2.11 增加 文件树注释 模块描述 来自 pom.xml 和 build.gradle
diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java
index 3214ac4..bf7b453 100644
--- a/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java
@@ -8,6 +8,7 @@ import com.intellij.psi.javadoc.*;
import com.intellij.psi.util.PsiTreeUtil;
import io.github.linwancen.plugin.show.bean.LineInfo;
import io.github.linwancen.plugin.show.bean.SettingsInfo;
+import io.github.linwancen.plugin.show.java.doc.EnumDoc;
import io.github.linwancen.plugin.show.java.doc.OwnerToPsiDocUtils;
import io.github.linwancen.plugin.show.java.doc.PsiMethodToPsiDoc;
import io.github.linwancen.plugin.show.java.line.OwnerToPsiDocSkip;
@@ -84,6 +85,9 @@ public class JavaLangDoc extends BaseTagLangDoc {
if (info.appSettings.fromParam && resolve instanceof PsiParameter) {
return paramDoc((PsiParameter) resolve);
}
+ if (info.appSettings.enumDoc && resolve instanceof PsiEnumConstant) {
+ return EnumDoc.enumDoc((PsiEnumConstant) resolve);
+ }
return null;
}
diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/doc/EnumDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/doc/EnumDoc.java
new file mode 100644
index 0000000..8a285bf
--- /dev/null
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/doc/EnumDoc.java
@@ -0,0 +1,32 @@
+package io.github.linwancen.plugin.show.java.doc;
+
+import com.intellij.psi.PsiEnumConstant;
+import com.intellij.psi.PsiExpression;
+import com.intellij.psi.PsiExpressionList;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Arrays;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+public class EnumDoc {
+
+ /**
+ * Yes(1, "Yes") show 1-Yes
+ */
+ @Nullable
+ public static String enumDoc(@NotNull PsiEnumConstant psiEnumConstant) {
+ @Nullable PsiExpressionList args = psiEnumConstant.getArgumentList();
+ if (args == null) {
+ return null;
+ }
+ @NotNull PsiExpression[] exps = args.getExpressions();
+ if (exps.length == 0) {
+ return null;
+ }
+ return Arrays.stream(exps)
+ .map(exp -> exp.getText().replace("\"", ""))
+ .collect(Collectors.joining("-"));
+ }
+}
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
index 21e2236..2558ebe 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
@@ -37,6 +37,7 @@ public class AppSettingsComponent {
private final JBCheckBox getToSet = new JBCheckBox("get --> set ");
private final JBCheckBox fromNew = new JBCheckBox("java new ");
private final JBCheckBox fromParam = new JBCheckBox("java @param ");
+ private final JBCheckBox enumDoc = new JBCheckBox("java enum ");
private final JBCheckBox skipAnnotation = new JBCheckBox(ShowBundle.message("skip.anno"));
private final JBCheckBox skipAscii = new JBCheckBox(ShowBundle.message("skip.english"));
private final JBCheckBox skipBlank = new JBCheckBox(ShowBundle.message("skip.blank"));
@@ -90,7 +91,7 @@ public class AppSettingsComponent {
new JBLabel(ShowBundle.message("prefix")), lineEndPrefix);
FormBuilder formBuilder = FormBuilder.createFormBuilder()
.addSeparator()
- .addComponent(JPanelFactory.of(fromNew, fromParam, getToSet, skipAnnotation, skipAscii, skipBlank), 1)
+ .addComponent(JPanelFactory.of(fromNew, fromParam, enumDoc, getToSet, skipAnnotation, skipAscii, skipBlank), 1)
.addSeparator()
.addComponent(text)
.addSeparator();
@@ -288,6 +289,14 @@ public class AppSettingsComponent {
fromParam.setSelected(newStatus);
}
+ public boolean getEnumDoc() {
+ return enumDoc.isSelected();
+ }
+
+ public void setEnumDoc(boolean newStatus) {
+ enumDoc.setSelected(newStatus);
+ }
+
public boolean getSkipAnnotation() {
return skipAnnotation.isSelected();
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
index 9edb0fd..8ebe4d0 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
@@ -64,6 +64,7 @@ public class AppSettingsConfigurable implements Configurable {
modified |= mySettingsComponent.getGetToSet() != settings.getToSet;
modified |= mySettingsComponent.getFromNew() != settings.fromNew;
modified |= mySettingsComponent.getFromParam() != settings.fromParam;
+ modified |= mySettingsComponent.getEnumDoc() != settings.enumDoc;
modified |= mySettingsComponent.getSkipAnnotation() != settings.skipAnnotation;
modified |= mySettingsComponent.getSkipAscii() != settings.skipAscii;
modified |= mySettingsComponent.getSkipBlank() != settings.skipBlank;
@@ -102,6 +103,7 @@ public class AppSettingsConfigurable implements Configurable {
settings.getToSet = mySettingsComponent.getGetToSet();
settings.fromNew = mySettingsComponent.getFromNew();
settings.fromParam = mySettingsComponent.getFromParam();
+ settings.enumDoc = mySettingsComponent.getEnumDoc();
settings.skipAnnotation = mySettingsComponent.getSkipAnnotation();
settings.skipAscii = mySettingsComponent.getSkipAscii();
settings.skipBlank = mySettingsComponent.getSkipBlank();
@@ -143,6 +145,7 @@ public class AppSettingsConfigurable implements Configurable {
mySettingsComponent.setGetToSet(settings.getToSet);
mySettingsComponent.setFromNew(settings.fromNew);
mySettingsComponent.setFromParam(settings.fromParam);
+ mySettingsComponent.setEnumDoc(settings.enumDoc);
mySettingsComponent.setSkipAnnotation(settings.skipAnnotation);
mySettingsComponent.setSkipAscii(settings.skipAscii);
mySettingsComponent.setSkipBlank(settings.skipBlank);
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
index 05b9e27..b0f5d59 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
@@ -58,6 +58,7 @@ public class AppSettingsState implements PersistentStateComponent map;
+
+ static {
+ map = new LinkedHashMap<>();
+ for (YesOrNoEnum value : values()) {
+ map.put(value.code, value);
+ }
+ }
+
+ public static YesOrNoEnum fromCode(String code) {
+ return map.get(code);
+ }
+}
\ No newline at end of file