From 6882ac7f7b762e640d575fbe2f6f636eae1f6d82 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com>
Date: Sun, 6 Mar 2022 14:17:13 +0800
Subject: [PATCH] =?UTF-8?q?1.8=20Add=20line-end-comment=20for=20json=20|?=
=?UTF-8?q?=20=E5=A2=9E=E5=8A=A0=E4=BB=8E=E5=90=8C=E5=90=8E=E7=BC=80?=
=?UTF-8?q?=E7=9A=84=E7=B1=BB=E4=B8=AD=E8=AF=BB=E5=8F=96=20json=20?=
=?UTF-8?q?=E8=A1=8C=E6=9C=AB=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 34 ++++++--
build.gradle | 33 +++++--
.../github/linwancen/plugin/show/LineEnd.java | 9 +-
.../plugin/show/doc/DocTextUtils.java | 15 ++--
.../linwancen/plugin/show/doc/DocUtils.java | 6 +-
.../plugin/show/doc/JsonDocUtils.java | 86 +++++++++++++++++++
.../show/line/LineDocLeftToRightUtils.java | 18 +++-
.../show/line/LineDocRightToLeftUtils.java | 10 ++-
.../plugin/show/line/LineDocUtils.java | 17 ++--
.../show/settings/AppSettingsComponent.java | 85 +++++++++++-------
.../settings/AppSettingsConfigurable.java | 31 +++++--
.../show/settings/AppSettingsState.java | 11 ++-
.../plugin/show/settings/JPanelFactory.java | 17 ++++
src/main/resources/META-INF/plugin.xml | 4 +-
.../linwancen/plugin/show/demo/InDoc.java | 12 +--
.../plugin/show/demo/anyStr Pojo.json | 11 +++
.../plugin/show/demo/method/Child.java | 20 ++---
.../plugin/show/demo/method/Face.java | 9 +-
.../plugin/show/demo/method/Parent.java | 8 +-
.../plugin/show/demo/method/Pojo.java | 60 +++++++++++++
.../plugin/show/demo/package-info.java | 4 +-
.../plugin/show/line/SkipUtilsTest.java | 8 +-
22 files changed, 371 insertions(+), 137 deletions(-)
create mode 100644 src/main/java/io/github/linwancen/plugin/show/doc/JsonDocUtils.java
create mode 100644 src/main/java/io/github/linwancen/plugin/show/settings/JPanelFactory.java
create mode 100644 src/test/java/io/github/linwancen/plugin/show/demo/anyStr Pojo.json
create mode 100644 src/test/java/io/github/linwancen/plugin/show/demo/method/Pojo.java
diff --git a/README.md b/README.md
index 91a43a4..ca0055b 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# Show Comment Plugin
IDEA 智能注释插件
-English Note:
+English Notes:
- Show javadoc comments in the Project view Tree structure.
- Show javadoc comments for calling methods at the end of the line.
- One of the above features
@@ -11,17 +11,33 @@ English Note:
- End-of-line comment class prefix filter
can be modified in settings -> Tools -> Show Comment Project.
-Chinese Note:
+Chinese Notes:
- 在结构树显示 当前节点 的文档注释。
- 在行末尾显示 调用方法 的文档注释。
- 可以在设置中 关闭 上面其中一个功能。
- 可以在设置中 修改 行末注释的颜色。
- 可以在设置中 修改 行末注释类前缀过滤。
-Change Log:
-- 1.1 Add end-of-line text color settings | 添加行末文本颜色配置
-- 1.2 Add end-of-line comment class prefix filter settings | 添加行末注释类前缀过滤配置
-- 1.3 support class in tree, constructor and field type in line end | 支持 class 树节点、构造方法和字段的行末注释
-- 1.4 Find element right to left for end-of-line comment | 从右往左查找行末注释对象
-- 1.5 Support find next loop when not comment | 支持没有注释时循环查找下一个对象
-- 1.6 Add end-of-line comment independent switch for call,new,ref | 增加行末调用,new,引用注释独立开关
\ No newline at end of file
+English Change Notes:
+
+- 1.8 Add line-end-comment for json
+
- 1.7 Add line-end-comment setting for prefix and count
+
- 1.6 Add line-end-comment independent switch for call, new, ref
+
- 1.5 Add line-end-comment find next loop when none
+
- 1.4 Add line-end-comment find element right to left
+
- 1.3 Add project-view-tree-comment
+
- 1.2 Add line-end-comment settings fro class prefix filter
+
- 1.1 Add line-end-comment settings for text color
+
+
+Chinese Change Notes:
+
+- 1.8 增加 从同后缀的类中读取 json 行末注释
+
- 1.7 增加 行末注释前缀和对象数设置
+
- 1.6 增加 行末调用,new,引用注释独立开关
+
- 1.5 增加 没有注释时循环查找下一个对象
+
- 1.4 增加 从右往左查找行末注释对象
+
- 1.3 增加 项目导航栏注释
+
- 1.2 增加 行末注释类前缀配置
+
- 1.1 增加 行末文本颜色配置
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index ca65c13..186165f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,7 @@ plugins {
}
group 'io.github.linwancen'
-version '1.6.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
+version '1.8.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
apply plugin: 'java'
@@ -37,14 +37,29 @@ patchPluginXml {
sinceBuild = '201.1'
untilBuild = ''
changeNotes = """
-
- - 1.1 Add end-of-line text color settings | 添加行末文本颜色配置
-
- 1.2 Add end-of-line comment class prefix filter settings | 添加行末注释类前缀配置
-
- 1.3 Support class in tree, constructor and field type in line end | 支持 class 树节点、构造方法和字段的行末注释
-
- 1.4 Find element right to left for end-of-line comment | 从右往左查找行末注释对象
-
- 1.5 Support find next loop when not comment | 支持没有注释时循环查找下一个对象
-
- 1.6 Add end-of-line comment independent switch for call,new,ref | 增加行末调用,new,引用注释独立开关
-
+ English Change Notes:
+
+ - 1.8 Add line-end-comment for json
+
- 1.7 Add line-end-comment setting for prefix and count
+
- 1.6 Add line-end-comment independent switch for call, new, ref
+
- 1.5 Add line-end-comment find next loop when none
+
- 1.4 Add line-end-comment find element right to left
+
- 1.3 Add project-view-tree-comment
+
- 1.2 Add line-end-comment settings fro class prefix filter
+
- 1.1 Add line-end-comment settings for text color
+
+
+ Chinese Change Notes:
+
+ - 1.8 增加 从同后缀的类中读取 json 行末注释
+
- 1.7 增加 行末注释前缀和对象数设置
+
- 1.6 增加 行末调用,new,引用注释独立开关
+
- 1.5 增加 没有注释时循环查找下一个对象
+
- 1.4 增加 从右往左查找行末注释对象
+
- 1.3 增加 项目导航栏注释
+
- 1.2 增加 行末注释类前缀配置
+
- 1.1 增加 行末文本颜色配置
+
"""
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/LineEnd.java b/src/main/java/io/github/linwancen/plugin/show/LineEnd.java
index 5ab33b0..c23d4e6 100644
--- a/src/main/java/io/github/linwancen/plugin/show/LineEnd.java
+++ b/src/main/java/io/github/linwancen/plugin/show/LineEnd.java
@@ -1,6 +1,5 @@
package io.github.linwancen.plugin.show;
-import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.EditorLinePainter;
import com.intellij.openapi.editor.LineExtensionInfo;
@@ -33,17 +32,17 @@ public class LineEnd extends EditorLinePainter {
return null;
}
FileViewProvider viewProvider = PsiManager.getInstance(project).findViewProvider(file);
- PsiDocComment docComment = docOwnerFrom(viewProvider, lineNumber);
+ PsiDocComment docComment = doc(project, viewProvider, lineNumber);
String comment = DocTextUtils.text(docComment);
if (comment == null) {
return null;
}
- LineExtensionInfo info = new LineExtensionInfo(" //" + comment, settings.lineEndTextAttr);
+ LineExtensionInfo info = new LineExtensionInfo(settings.lineEndPrefix + comment, settings.lineEndTextAttr);
return Collections.singletonList(info);
}
- private static @Nullable PsiDocComment docOwnerFrom(FileViewProvider viewProvider, int lineNumber) {
- if (viewProvider == null || !viewProvider.hasLanguage(JavaLanguage.INSTANCE)) {
+ private static @Nullable PsiDocComment doc(Project project, FileViewProvider viewProvider, int lineNumber) {
+ if (viewProvider == null) {
return null;
}
Document document = viewProvider.getDocument();
diff --git a/src/main/java/io/github/linwancen/plugin/show/doc/DocTextUtils.java b/src/main/java/io/github/linwancen/plugin/show/doc/DocTextUtils.java
index 9cdfee2..2ed7b26 100644
--- a/src/main/java/io/github/linwancen/plugin/show/doc/DocTextUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/doc/DocTextUtils.java
@@ -4,6 +4,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.javadoc.PsiDocToken;
import com.intellij.psi.javadoc.PsiInlineDocTag;
+import io.github.linwancen.plugin.show.settings.AppSettingsState;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
@@ -18,6 +19,7 @@ public class DocTextUtils {
if (psiDocComment == null) {
return null;
}
+ AppSettingsState appSettings = AppSettingsState.getInstance();
List comments = new ArrayList<>();
PsiElement[] elements = psiDocComment.getDescriptionElements();
for (PsiElement element : elements) {
@@ -31,22 +33,17 @@ public class DocTextUtils {
comments.add(children[2].getText());
}
}
- if (comments.size() > 1) {
+ if (appSettings.lineEndCount > 0 && comments.size() >= appSettings.lineEndCount) {
break;
}
}
if (comments.isEmpty()) {
return null;
}
- StringBuilder sb = new StringBuilder(comments.get(0).trim());
- if (sb.length() == 0) {
- return null;
+ StringBuilder sb = new StringBuilder(" ");
+ for (String s : comments) {
+ sb.append(s.trim().replace("
", "")).append(" ");
}
- if (comments.size() > 1) {
- sb.append(" ").append(comments.get(1).trim().replace("
", ""));
- }
- sb.insert(0, " ");
- sb.append(" ");
return sb.toString();
}
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/doc/DocUtils.java b/src/main/java/io/github/linwancen/plugin/show/doc/DocUtils.java
index 56ad091..becc2e7 100644
--- a/src/main/java/io/github/linwancen/plugin/show/doc/DocUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/doc/DocUtils.java
@@ -35,14 +35,14 @@ public class DocUtils {
@Nullable
public static PsiDocComment fileDoc(PsiFile psiFile) {
- if (!(psiFile instanceof PsiJavaFile)) {
+ if (!(psiFile instanceof PsiClassOwner)) {
return null;
}
- PsiJavaFile psiJavaFile = (PsiJavaFile) psiFile;
+ PsiClassOwner psiClassOwner = (PsiClassOwner) psiFile;
if (PsiPackage.PACKAGE_INFO_FILE.equals(psiFile.getName())) {
return PackageDocUtils.fromPackageInfoFile(psiFile);
}
- PsiClass[] classes = psiJavaFile.getClasses();
+ PsiClass[] classes = psiClassOwner.getClasses();
if (classes.length == 0) {
return null;
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/doc/JsonDocUtils.java b/src/main/java/io/github/linwancen/plugin/show/doc/JsonDocUtils.java
new file mode 100644
index 0000000..28bcfb2
--- /dev/null
+++ b/src/main/java/io/github/linwancen/plugin/show/doc/JsonDocUtils.java
@@ -0,0 +1,86 @@
+package io.github.linwancen.plugin.show.doc;
+
+import com.intellij.json.psi.JsonProperty;
+import com.intellij.openapi.project.Project;
+import com.intellij.psi.JavaPsiFacade;
+import com.intellij.psi.PsiClass;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiField;
+import com.intellij.psi.javadoc.PsiDocComment;
+import com.intellij.psi.search.GlobalSearchScope;
+import com.intellij.psi.search.PsiShortNamesCache;
+import com.intellij.psi.util.PsiTreeUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class JsonDocUtils {
+ private static final Pattern JSON_PATTERN = Pattern.compile("[\\w.]*+$");
+
+ private JsonDocUtils() {}
+
+ @Nullable
+ public static PsiDocComment jsonDoc(PsiElement element, int startOffset, int endOffset) {
+ JsonProperty jsonProp = PsiTreeUtil.getParentOfType(element, JsonProperty.class, true, startOffset);
+ if (jsonProp == null || jsonProp.getNameElement().getTextRange().getEndOffset() > endOffset) {
+ return null;
+ }
+ String fileName = element.getContainingFile().getVirtualFile().getNameWithoutExtension();
+ Matcher matcher = JSON_PATTERN.matcher(fileName);
+ if (!matcher.find()) {
+ return null;
+ }
+ String className = matcher.group();
+ PsiClass[] psiClasses = classByName(className, element.getProject());
+ PsiField psiField = psiField(psiClasses, element.getProject(), jsonProp);
+ if (psiField != null) {
+ return DocUtils.srcOrByteCodeDoc(psiField);
+ }
+ return null;
+ }
+
+ @NotNull
+ private static PsiClass[] classByName(String className, @NotNull Project project) {
+ int i = className.indexOf('.');
+ if (i > 0) {
+ return classByFullName(className, project);
+ }
+ PsiShortNamesCache namesCache = PsiShortNamesCache.getInstance(project);
+ return namesCache.getClassesByName(className, GlobalSearchScope.allScope(project));
+ }
+
+ @NotNull
+ private static PsiClass[] classByFullName(String className, @NotNull Project project) {
+ JavaPsiFacade javaPsiFacade = JavaPsiFacade.getInstance(project);
+ return javaPsiFacade.findClasses(className, GlobalSearchScope.allScope(project));
+ }
+
+ @Nullable
+ private static PsiField psiField(PsiClass[] rootClasses, Project project, JsonProperty jsonProp) {
+ JsonProperty parentJsonProp = PsiTreeUtil.getParentOfType(jsonProp, JsonProperty.class);
+ if (parentJsonProp == null) {
+ for (PsiClass c : rootClasses) {
+ PsiField field = c.findFieldByName(jsonProp.getName(), true);
+ if (field != null) {
+ return field;
+ }
+ }
+ return null;
+ }
+ PsiField psiField = psiField(rootClasses, project, parentJsonProp);
+ if (psiField == null) {
+ return null;
+ }
+ String classFullName = psiField.getType().getCanonicalText();
+ @NotNull PsiClass[] psiClasses = classByFullName(classFullName, project);
+ for (PsiClass c : psiClasses) {
+ PsiField field = c.findFieldByName(jsonProp.getName(), true);
+ if (field != null) {
+ return field;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/io/github/linwancen/plugin/show/line/LineDocLeftToRightUtils.java b/src/main/java/io/github/linwancen/plugin/show/line/LineDocLeftToRightUtils.java
index d21a36f..54eb13b 100644
--- a/src/main/java/io/github/linwancen/plugin/show/line/LineDocLeftToRightUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/line/LineDocLeftToRightUtils.java
@@ -1,6 +1,6 @@
package io.github.linwancen.plugin.show.line;
-import com.intellij.lang.java.JavaLanguage;
+import com.intellij.json.JsonLanguage;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.FileViewProvider;
@@ -8,6 +8,8 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiIdentifier;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.util.PsiTreeUtil;
+import io.github.linwancen.plugin.show.doc.JsonDocUtils;
+import io.github.linwancen.plugin.show.settings.AppSettingsState;
import org.jetbrains.annotations.Nullable;
public class LineDocLeftToRightUtils {
@@ -44,16 +46,23 @@ public class LineDocLeftToRightUtils {
offset++;
}
offset += startOffset;
+ PsiElement element = viewProvider.findElementAt(offset);
+ if (element == null) {
+ return null;
+ }
+ AppSettingsState instance = AppSettingsState.getInstance();
+ if (instance.inJson && element.getLanguage().is(JsonLanguage.INSTANCE)) {
+ return JsonDocUtils.jsonDoc(element, startOffset, endOffset);
+ }
if (startWithSymbol) {
startOffset = 0;
}
- PsiElement element = viewProvider.findElementAt(offset, JavaLanguage.INSTANCE);
return nextDoc(element, startOffset, endOffset);
}
@Nullable
private static PsiDocComment nextDoc(PsiElement element, int startOffset, int endOffset) {
- while (element != null && element.getTextRange().getEndOffset() < endOffset) {
+ while (element.getTextRange().getEndOffset() < endOffset) {
if (element instanceof PsiIdentifier) {
PsiDocComment psiDocComment = LineDocUtils.elementDoc(element, element, startOffset, endOffset);
if (psiDocComment != null) {
@@ -61,6 +70,9 @@ public class LineDocLeftToRightUtils {
}
}
element = PsiTreeUtil.nextVisibleLeaf(element);
+ if (element == null) {
+ return null;
+ }
}
return null;
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/line/LineDocRightToLeftUtils.java b/src/main/java/io/github/linwancen/plugin/show/line/LineDocRightToLeftUtils.java
index cba5e5e..54cdccf 100644
--- a/src/main/java/io/github/linwancen/plugin/show/line/LineDocRightToLeftUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/line/LineDocRightToLeftUtils.java
@@ -1,11 +1,13 @@
package io.github.linwancen.plugin.show.line;
-import com.intellij.lang.java.JavaLanguage;
+import com.intellij.json.JsonLanguage;
import com.intellij.psi.FileViewProvider;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiIdentifier;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.util.PsiTreeUtil;
+import io.github.linwancen.plugin.show.doc.JsonDocUtils;
+import io.github.linwancen.plugin.show.settings.AppSettingsState;
import org.jetbrains.annotations.Nullable;
public class LineDocRightToLeftUtils {
@@ -15,10 +17,11 @@ public class LineDocRightToLeftUtils {
@Nullable
public static PsiDocComment rightDoc(FileViewProvider viewProvider, int startOffset, int endOffset) {
// End is always white, can not -1 because @see class.name need it
- PsiElement element = viewProvider.findElementAt(endOffset, JavaLanguage.INSTANCE);
+ PsiElement element = viewProvider.findElementAt(endOffset);
if (element == null) {
return null;
}
+ AppSettingsState instance = AppSettingsState.getInstance();
PsiElement identifier;
PsiDocComment psiDocComment;
while (true) {
@@ -27,6 +30,9 @@ public class LineDocRightToLeftUtils {
identifier = null;
}
if (identifier == null || identifier instanceof PsiIdentifier) {
+ if (instance.inJson && element.getLanguage().is(JsonLanguage.INSTANCE)) {
+ return JsonDocUtils.jsonDoc(element, startOffset, endOffset);
+ }
psiDocComment = LineDocUtils.elementDoc(element, identifier, startOffset, endOffset);
if (psiDocComment != null) {
return psiDocComment;
diff --git a/src/main/java/io/github/linwancen/plugin/show/line/LineDocUtils.java b/src/main/java/io/github/linwancen/plugin/show/line/LineDocUtils.java
index 678688d..568f0de 100644
--- a/src/main/java/io/github/linwancen/plugin/show/line/LineDocUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/line/LineDocUtils.java
@@ -16,32 +16,33 @@ class LineDocUtils {
int startOffset, int endOffset) {
AppSettingsState instance = AppSettingsState.getInstance();
if (element != null) {
- PsiDocComment executableDoc = elementDoc(element, startOffset, endOffset, instance);
- if (executableDoc != null) {
- return executableDoc;
+ PsiDocComment elementDoc = elementDoc(element, startOffset, endOffset, instance);
+ if (elementDoc != null) {
+ return elementDoc;
}
}
- if (instance.showLineEndCommentForRef) {
+ if (instance.fromRef) {
return refDoc(psiIdentifier, endOffset);
}
return null;
}
@Nullable
- private static PsiDocComment elementDoc(PsiElement element, int startOffset, int endOffset, AppSettingsState instance) {
- if (instance.showLineEndCommentForCall) {
+ private static PsiDocComment elementDoc(PsiElement element, int startOffset, int endOffset,
+ AppSettingsState instance) {
+ if (instance.fromCall) {
PsiDocComment executableDoc = parentMethodDoc(element, startOffset, endOffset);
if (executableDoc != null) {
return executableDoc;
}
}
- if (instance.showLineEndCommentForNew) {
+ if (instance.fromNew) {
PsiDocComment newDoc = parentNewDoc(element, startOffset);
if (newDoc != null) {
return newDoc;
}
}
- if (instance.showLineEndCommentForRef) {
+ if (instance.fromRef) {
return docRefDoc(element);
}
return null;
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 a93e4a8..d43be07 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
@@ -3,6 +3,8 @@ package io.github.linwancen.plugin.show.settings;
import com.intellij.ui.ColorPanel;
import com.intellij.ui.IdeBorderFactory;
import com.intellij.ui.components.JBCheckBox;
+import com.intellij.ui.components.JBLabel;
+import com.intellij.ui.components.JBTextField;
import com.intellij.util.ui.FormBuilder;
import org.jetbrains.annotations.NotNull;
@@ -14,16 +16,18 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
private final JPanel myMainPanel;
private final JBCheckBox showTreeComment = new JBCheckBox("Show tree comment ");
private final JBCheckBox showLineEndComment = new JBCheckBox("Show line end comment ");
- private final JBCheckBox showLineEndCommentForCall = new JBCheckBox("Show line end comment for call ");
- private final JBCheckBox showLineEndCommentForNew = new JBCheckBox("Show line end comment for new ");
- private final JBCheckBox showLineEndCommentForRef = new JBCheckBox("Show line end comment for ref ");
+ private final JBCheckBox fromCall = new JBCheckBox("call ");
+ private final JBCheckBox fromNew = new JBCheckBox("new ");
+ private final JBCheckBox fromRef = new JBCheckBox("ref ");
+ private final JBCheckBox inJson = new JBCheckBox("in json ");
private final ColorPanel lineEndColor = new ColorPanel();
private final JBCheckBox findElementRightToLeft = new JBCheckBox("Find element right to left");
+ protected final JBTextField lineEndPrefix = new JBTextField();
+ protected final JBTextField lineEndCount = new JBTextField();
public AppSettingsComponent() {
myMainPanel = FormBuilder.createFormBuilder()
.addComponent(showPanel(), 1)
- .addComponent(colorPanel(), 1)
.addComponent(lineEndFilterPanel(), 1)
.addComponentFillVertically(new JPanel(), 0)
.getPanel();
@@ -34,28 +38,23 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
JPanel comment = FormBuilder.createFormBuilder()
.addComponent(showTreeComment, 1)
.addComponent(showLineEndComment, 1)
- .addSeparator()
- .addComponent(showLineEndCommentForCall, 1)
- .addComponent(showLineEndCommentForNew, 1)
- .addComponent(showLineEndCommentForRef, 1)
.getPanel();
comment.setBorder(IdeBorderFactory.createTitledBorder("Show"));
return comment;
}
- @NotNull
- private JPanel colorPanel() {
- JPanel color = FormBuilder.createFormBuilder()
- .addLabeledComponent(new JLabel("line end text color:"), lineEndColor)
- .getPanel();
- color.setBorder(IdeBorderFactory.createTitledBorder("Color"));
- return color;
- }
-
@NotNull
protected JPanel lineEndFilterPanel() {
+ JPanel text = JPanelFactory.of(
+ new JBLabel("object count: "), lineEndCount,
+ new JBLabel("text color: "), lineEndColor,
+ new JBLabel("prefix: "), lineEndPrefix);
FormBuilder formBuilder = FormBuilder.createFormBuilder()
- .addComponent(findElementRightToLeft)
+ .addComponent(JPanelFactory.of(findElementRightToLeft))
+ .addSeparator()
+ .addComponent(JPanelFactory.of(fromCall, fromNew, fromRef, inJson), 1)
+ .addSeparator()
+ .addComponent(text)
.addSeparator();
return commonLineEndFilter(formBuilder);
}
@@ -85,28 +84,36 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
showLineEndComment.setSelected(newStatus);
}
- public boolean getShowLineEndCommentForCall() {
- return showLineEndCommentForCall.isSelected();
+ public boolean getFromCall() {
+ return fromCall.isSelected();
}
- public void setShowLineEndCommentForCall(boolean newStatus) {
- showLineEndCommentForCall.setSelected(newStatus);
+ public void setFromCall(boolean newStatus) {
+ fromCall.setSelected(newStatus);
}
- public boolean getShowLineEndCommentForNew() {
- return showLineEndCommentForNew.isSelected();
+ public boolean getFromNew() {
+ return fromNew.isSelected();
}
- public void setShowLineEndCommentForNew(boolean newStatus) {
- showLineEndCommentForNew.setSelected(newStatus);
+ public void setFromNew(boolean newStatus) {
+ fromNew.setSelected(newStatus);
}
- public boolean getShowLineEndCommentForRef() {
- return showLineEndCommentForRef.isSelected();
+ public boolean getFromRef() {
+ return fromRef.isSelected();
}
- public void setShowLineEndCommentForRef(boolean newStatus) {
- showLineEndCommentForRef.setSelected(newStatus);
+ public void setFromRef(boolean newStatus) {
+ fromRef.setSelected(newStatus);
+ }
+
+ public boolean getInJson() {
+ return inJson.isSelected();
+ }
+
+ public void setInJson(boolean newStatus) {
+ inJson.setSelected(newStatus);
}
public Color getLineEndColor() {
@@ -124,4 +131,22 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
public void setFindElementRightToLeft(boolean newStatus) {
findElementRightToLeft.setSelected(newStatus);
}
+
+ @NotNull
+ public String getLineEndPrefix() {
+ return lineEndPrefix.getText();
+ }
+
+ public void setLineEndPrefix(@NotNull String newText) {
+ lineEndPrefix.setText(newText);
+ }
+
+ @NotNull
+ public String getLineEndCount() {
+ return lineEndCount.getText();
+ }
+
+ public void setLineEndCount(@NotNull String newText) {
+ lineEndCount.setText(newText);
+ }
}
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 00f105e..214c9ad 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
@@ -35,9 +35,10 @@ public class AppSettingsConfigurable implements Configurable {
AppSettingsState settings = AppSettingsState.getInstance();
boolean modified = mySettingsComponent.getShowTreeComment() != settings.showTreeComment;
modified |= mySettingsComponent.getShowLineEndComment() != settings.showLineEndComment;
- modified |= mySettingsComponent.getShowLineEndCommentForCall() != settings.showLineEndCommentForCall;
- modified |= mySettingsComponent.getShowLineEndCommentForNew() != settings.showLineEndCommentForNew;
- modified |= mySettingsComponent.getShowLineEndCommentForRef() != settings.showLineEndCommentForRef;
+ modified |= mySettingsComponent.getFromCall() != settings.fromCall;
+ modified |= mySettingsComponent.getFromNew() != settings.fromNew;
+ modified |= mySettingsComponent.getFromRef() != settings.fromRef;
+ modified |= mySettingsComponent.getInJson() != settings.inJson;
if (EditorColorsManager.getInstance().isDarkEditor()) {
modified |= !mySettingsComponent.getLineEndColor().equals(settings.lineEndColorDark);
} else {
@@ -46,6 +47,8 @@ public class AppSettingsConfigurable implements Configurable {
modified |= mySettingsComponent.getFindElementRightToLeft() != settings.findElementRightToLeft;
modified |= !mySettingsComponent.getLineEndInclude().equals(settings.lineEndInclude);
modified |= !mySettingsComponent.getLineEndExclude().equals(settings.lineEndExclude);
+ modified |= !mySettingsComponent.getLineEndPrefix().equals(settings.lineEndPrefix);
+ modified |= !mySettingsComponent.getLineEndCount().equals(String.valueOf(settings.lineEndCount));
return modified;
}
@@ -54,9 +57,10 @@ public class AppSettingsConfigurable implements Configurable {
AppSettingsState settings = AppSettingsState.getInstance();
settings.showTreeComment = mySettingsComponent.getShowTreeComment();
settings.showLineEndComment = mySettingsComponent.getShowLineEndComment();
- settings.showLineEndCommentForCall = mySettingsComponent.getShowLineEndCommentForCall();
- settings.showLineEndCommentForNew = mySettingsComponent.getShowLineEndCommentForNew();
- settings.showLineEndCommentForRef = mySettingsComponent.getShowLineEndCommentForRef();
+ settings.fromCall = mySettingsComponent.getFromCall();
+ settings.fromNew = mySettingsComponent.getFromNew();
+ settings.fromRef = mySettingsComponent.getFromRef();
+ settings.inJson = mySettingsComponent.getInJson();
if (EditorColorsManager.getInstance().isDarkEditor()) {
settings.lineEndColorDark = mySettingsComponent.getLineEndColor();
} else {
@@ -69,6 +73,12 @@ public class AppSettingsConfigurable implements Configurable {
settings.lineEndExclude = mySettingsComponent.getLineEndExclude();
settings.lineEndIncludeArray = SplitUtils.split(settings.lineEndInclude);
settings.lineEndExcludeArray = SplitUtils.split(settings.lineEndExclude);
+ settings.lineEndPrefix = mySettingsComponent.getLineEndPrefix();
+ try {
+ settings.lineEndCount = Integer.parseInt(mySettingsComponent.getLineEndCount());
+ } catch (NumberFormatException e) {
+ mySettingsComponent.setLineEndCount(String.valueOf(settings.lineEndCount));
+ }
}
@Override
@@ -76,9 +86,10 @@ public class AppSettingsConfigurable implements Configurable {
AppSettingsState settings = AppSettingsState.getInstance();
mySettingsComponent.setShowTreeComment(settings.showTreeComment);
mySettingsComponent.setShowLineEndComment(settings.showLineEndComment);
- mySettingsComponent.setShowLineEndCommentForCall(settings.showLineEndCommentForCall);
- mySettingsComponent.setShowLineEndCommentForNew(settings.showLineEndCommentForNew);
- mySettingsComponent.setShowLineEndCommentForRef(settings.showLineEndCommentForRef);
+ mySettingsComponent.setFromCall(settings.fromCall);
+ mySettingsComponent.setFromNew(settings.fromNew);
+ mySettingsComponent.setFromRef(settings.fromRef);
+ mySettingsComponent.setInJson(settings.inJson);
if (EditorColorsManager.getInstance().isDarkEditor()) {
mySettingsComponent.setLineEndColor(settings.lineEndColorDark);
} else {
@@ -87,6 +98,8 @@ public class AppSettingsConfigurable implements Configurable {
mySettingsComponent.setFindElementRightToLeft(settings.findElementRightToLeft);
mySettingsComponent.setLineEndInclude(settings.lineEndInclude);
mySettingsComponent.setLineEndExclude(settings.lineEndExclude);
+ mySettingsComponent.setLineEndPrefix(settings.lineEndPrefix);
+ mySettingsComponent.setLineEndCount(String.valueOf(settings.lineEndCount));
}
@Override
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 00080e5..efc2f2d 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
@@ -21,10 +21,6 @@ public class AppSettingsState implements PersistentStateComponent林万程
Show javadoc comments at the Project view Tree structure.
Show javadoc comments at the end-of-line.
@@ -15,7 +15,7 @@
Class name prefix filter of end-of-line comment can be modified in
settings -> Tools -> Show Comment Project
- Chinese Note:
+ Chinese Notes:
- 在结构树显示 文档注释。
- 在行末尾显示 文档注释。
diff --git a/src/test/java/io/github/linwancen/plugin/show/demo/InDoc.java b/src/test/java/io/github/linwancen/plugin/show/demo/InDoc.java
index dd4cc52..929768c 100644
--- a/src/test/java/io/github/linwancen/plugin/show/demo/InDoc.java
+++ b/src/test/java/io/github/linwancen/plugin/show/demo/InDoc.java
@@ -11,20 +11,14 @@ package io.github.linwancen.plugin.show.demo;
* @see InDoc
*/
public class InDoc {
- /**
- * field
- */
+ /** field */
public String field;
- /**
- * method()
- */
+ /** method() */
public void method1() {
}
- /**
- * method(InDoc)
- */
+ /** method(InDoc) */
public void method2(InDoc inDoc) {
}
}
diff --git a/src/test/java/io/github/linwancen/plugin/show/demo/anyStr Pojo.json b/src/test/java/io/github/linwancen/plugin/show/demo/anyStr Pojo.json
new file mode 100644
index 0000000..26aa500
--- /dev/null
+++ b/src/test/java/io/github/linwancen/plugin/show/demo/anyStr Pojo.json
@@ -0,0 +1,11 @@
+{
+ "integer": 0,
+ "str": "",
+ "date": "2022-03-04 21:34:01",
+ "bool": false,
+ "nestedClass": {
+ "nestedClass2": {
+ "a": "a"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/io/github/linwancen/plugin/show/demo/method/Child.java b/src/test/java/io/github/linwancen/plugin/show/demo/method/Child.java
index 6dcff53..bd548e1 100644
--- a/src/test/java/io/github/linwancen/plugin/show/demo/method/Child.java
+++ b/src/test/java/io/github/linwancen/plugin/show/demo/method/Child.java
@@ -1,16 +1,12 @@
package io.github.linwancen.plugin.show.demo.method;
-/**
- * Child
- */
+/** Child */
public class Child extends Parent implements Face {
public Child() {
}
- /**
- * Child(boolean bool)
- */
+ /** Child(boolean bool) */
public Child(boolean bool) {
this.bool = bool;
}
@@ -27,9 +23,7 @@ public class Child extends Parent implements Face {
}
- /**
- * fun
- */
+ /** fun */
public static Face fun(Face face) {
return null;
}
@@ -38,9 +32,7 @@ public class Child extends Parent implements Face {
return null;
}
- /**
- * bool
- */
+ /** bool */
public boolean bool;
public boolean isBool() {
@@ -48,9 +40,7 @@ public class Child extends Parent implements Face {
}
- /**
- * field
- */
+ /** field */
public Child field;
public Child getField() {
diff --git a/src/test/java/io/github/linwancen/plugin/show/demo/method/Face.java b/src/test/java/io/github/linwancen/plugin/show/demo/method/Face.java
index 3b05290..0e26090 100644
--- a/src/test/java/io/github/linwancen/plugin/show/demo/method/Face.java
+++ b/src/test/java/io/github/linwancen/plugin/show/demo/method/Face.java
@@ -1,12 +1,7 @@
package io.github.linwancen.plugin.show.demo.method;
-/**
- * Face
- */
-//@FunctionalInterface
+/** Face */
public interface Face {
- /**
- * faceMethod
- */
+ /** faceMethod */
Face faceMethod(Face face);
}
diff --git a/src/test/java/io/github/linwancen/plugin/show/demo/method/Parent.java b/src/test/java/io/github/linwancen/plugin/show/demo/method/Parent.java
index 5e5cbc6..0ea3431 100644
--- a/src/test/java/io/github/linwancen/plugin/show/demo/method/Parent.java
+++ b/src/test/java/io/github/linwancen/plugin/show/demo/method/Parent.java
@@ -1,12 +1,8 @@
package io.github.linwancen.plugin.show.demo.method;
-/**
- * Parent
- */
+/** Parent */
public class Parent {
- /**
- * parentMethod
- */
+ /** parentMethod */
public Parent parentMethod() {
return null;
}
diff --git a/src/test/java/io/github/linwancen/plugin/show/demo/method/Pojo.java b/src/test/java/io/github/linwancen/plugin/show/demo/method/Pojo.java
new file mode 100644
index 0000000..e2b2af3
--- /dev/null
+++ b/src/test/java/io/github/linwancen/plugin/show/demo/method/Pojo.java
@@ -0,0 +1,60 @@
+package io.github.linwancen.plugin.show.demo.method;
+
+import java.util.Date;
+
+public class Pojo {
+ /** integer */
+ private int integer;
+ /** str */
+ private String str;
+ /** date */
+ private Date date;
+ /** bool */
+ private boolean bool;
+ /** nestedClass */
+ private NestedClass nestedClass;
+
+ /** NestedClass */
+ public static class NestedClass{
+ /** nestedClass2 */
+ private NestedClass2 nestedClass2;
+
+ /** NestedClass2 */
+ public static class NestedClass2{
+ /** a */
+ private String a;
+ }
+ }
+
+ public int getInteger() {
+ return integer;
+ }
+
+ public void setInteger(int integer) {
+ this.integer = integer;
+ }
+
+ public String getStr() {
+ return str;
+ }
+
+ public void setStr(String str) {
+ this.str = str;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+ public boolean isBool() {
+ return bool;
+ }
+
+ public void setBool(boolean bool) {
+ this.bool = bool;
+ }
+}
diff --git a/src/test/java/io/github/linwancen/plugin/show/demo/package-info.java b/src/test/java/io/github/linwancen/plugin/show/demo/package-info.java
index 332478d..add30d4 100644
--- a/src/test/java/io/github/linwancen/plugin/show/demo/package-info.java
+++ b/src/test/java/io/github/linwancen/plugin/show/demo/package-info.java
@@ -1,4 +1,2 @@
-/**
- * package doc
- */
+/** package doc */
package io.github.linwancen.plugin.show.demo;
\ No newline at end of file
diff --git a/src/test/java/io/github/linwancen/plugin/show/line/SkipUtilsTest.java b/src/test/java/io/github/linwancen/plugin/show/line/SkipUtilsTest.java
index 4020895..4ac4947 100644
--- a/src/test/java/io/github/linwancen/plugin/show/line/SkipUtilsTest.java
+++ b/src/test/java/io/github/linwancen/plugin/show/line/SkipUtilsTest.java
@@ -10,7 +10,7 @@ import java.util.function.BiPredicate;
/**
* @see SkipUtils
*/
-public class SkipUtilsTest {
+class SkipUtilsTest {
public static final boolean o = true;
public static final boolean x = false;
@@ -30,7 +30,7 @@ public class SkipUtilsTest {
};
@Test
- public void skipName() {
+ void skipName() {
// o include, x skip
boolean[][][] results = {{
// "java" -- name
@@ -77,7 +77,7 @@ public class SkipUtilsTest {
}
@Test
- public void include() {
+ void include() {
boolean[][] results = {
// {"java", "io.a", "io.b"} -- name
{o, o, o}, // {},
@@ -89,7 +89,7 @@ public class SkipUtilsTest {
}
@Test
- public void exclude() {
+ void exclude() {
boolean[][] results = {
// {"java", "io.a", "io.b"} ... names
{x, x, x}, // {},