feat(JavaLangDoc): 2.29 show java field value | 显示 Java 字段值
This commit is contained in:
@@ -4,7 +4,7 @@ plugins {
|
||||
}
|
||||
|
||||
group 'io.github.linwancen'
|
||||
version '2.28.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
|
||||
version '2.29.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
|
||||
|
||||
patchPluginXml {
|
||||
// The performance of 2019.3 has been greatly improved.
|
||||
@@ -15,6 +15,7 @@ patchPluginXml {
|
||||
changeNotes = """
|
||||
<h2>English Change Notes:</h2>
|
||||
<ul>
|
||||
<li>2.29 Add line-end-comment java field value
|
||||
<li>2.28 Add app-setting Alt X switch line end comment
|
||||
<li>2.27 Add project-view-tree use 1st or 2nd line to file comment
|
||||
<li>2.26 Add External Comment load *.sql ddl comment
|
||||
@@ -72,6 +73,7 @@ patchPluginXml {
|
||||
|
||||
<h2>中文更新说明:</h2>
|
||||
<ul>
|
||||
<li>2.29 增加 行末注释 Java 字段值
|
||||
<li>2.28 增加 全局设置 Alt + X 行末注释开关
|
||||
<li>2.27 增加 文件树注释 用第 1 或第 2 行注释当文件注释
|
||||
<li>2.26 增加 外部注释 读取 *.sql ddl 注释
|
||||
|
||||
@@ -6,11 +6,14 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiDocCommentOwner;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiEnumConstant;
|
||||
import com.intellij.psi.PsiExpression;
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.psi.PsiJavaCodeReferenceElement;
|
||||
import com.intellij.psi.PsiJvmModifiersOwner;
|
||||
import com.intellij.psi.PsiLiteralExpression;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiParameter;
|
||||
import com.intellij.psi.PsiReferenceExpression;
|
||||
import com.intellij.psi.PsiWhiteSpace;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.javadoc.PsiDocTag;
|
||||
@@ -18,20 +21,22 @@ import com.intellij.psi.javadoc.PsiDocTagValue;
|
||||
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.AnnoDocJava;
|
||||
import io.github.linwancen.plugin.show.java.doc.EnumDoc;
|
||||
import io.github.linwancen.plugin.show.java.doc.NewDoc;
|
||||
import io.github.linwancen.plugin.show.java.doc.ParamDoc;
|
||||
import io.github.linwancen.plugin.show.java.doc.PsiMethodToPsiDoc;
|
||||
import io.github.linwancen.plugin.show.java.line.OwnerToPsiDocSkip;
|
||||
import io.github.linwancen.plugin.show.java.line.SkipUtils;
|
||||
import io.github.linwancen.plugin.show.java.resolve.AnnoDocJava;
|
||||
import io.github.linwancen.plugin.show.java.resolve.EnumDoc;
|
||||
import io.github.linwancen.plugin.show.java.resolve.ParamDoc;
|
||||
import io.github.linwancen.plugin.show.lang.base.BaseTagLangDoc;
|
||||
import io.github.linwancen.plugin.show.lang.base.DocFilter;
|
||||
import io.github.linwancen.plugin.show.lang.base.PsiUnSaveUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class JavaLangDoc extends BaseTagLangDoc<PsiDocComment> {
|
||||
|
||||
@@ -82,6 +87,55 @@ public class JavaLangDoc extends BaseTagLangDoc<PsiDocComment> {
|
||||
|
||||
@Override
|
||||
public @Nullable <T extends SettingsInfo> String resolveDocPrint(@NotNull T info, @NotNull PsiElement resolve) {
|
||||
@Nullable String doc = resolveDocPrintSrc(info, resolve);
|
||||
if (!(resolve instanceof PsiField)) {
|
||||
return doc;
|
||||
}
|
||||
@NotNull PsiField psiField = (PsiField) resolve;
|
||||
@Nullable PsiExpression initializer = psiField.getInitializer();
|
||||
if (initializer == null) {
|
||||
return doc;
|
||||
}
|
||||
// field init reference
|
||||
@NotNull Set<PsiElement> loopCheck = new HashSet<>();
|
||||
loopCheck.add(resolve);
|
||||
while (initializer instanceof PsiReferenceExpression) {
|
||||
try {
|
||||
@Nullable PsiElement r = ((PsiReferenceExpression) initializer).resolve();
|
||||
if (r == null || !loopCheck.add(r)) {
|
||||
break;
|
||||
}
|
||||
if (r instanceof PsiField) {
|
||||
initializer = ((PsiField) r).getInitializer();
|
||||
}
|
||||
if (doc == null) {
|
||||
doc = resolveDocPrintSrc(info, r);
|
||||
}
|
||||
} catch (Throwable ignore) {}
|
||||
}
|
||||
if (!info.appSettings.fieldValue) {
|
||||
return doc;
|
||||
}
|
||||
if (!(initializer instanceof PsiLiteralExpression)) {
|
||||
return doc;
|
||||
}
|
||||
@Nullable Object value = ((PsiLiteralExpression) initializer).getValue();
|
||||
if (value == null) {
|
||||
return doc;
|
||||
}
|
||||
String init = value.toString();
|
||||
// use not ASCII space not skip
|
||||
if (doc == null) {
|
||||
return " = " + init;
|
||||
}
|
||||
// skip like 1-YES
|
||||
if (doc.contains(init) || psiField.getName().contains(init)) {
|
||||
return doc;
|
||||
}
|
||||
return doc + " = " + init;
|
||||
}
|
||||
|
||||
private <T extends SettingsInfo> @Nullable String resolveDocPrintSrc(@NotNull T info, @NotNull PsiElement resolve) {
|
||||
if (SkipUtils.skipSign(info, resolve)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.intellij.psi.impl.file.PsiPackageBase;
|
||||
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.kt.AnnoDocKt;
|
||||
import io.github.linwancen.plugin.show.java.resolve.AnnoDocKt;
|
||||
import io.github.linwancen.plugin.show.lang.base.BaseTagLangDoc;
|
||||
import io.github.linwancen.plugin.show.lang.base.DocFilter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.github.linwancen.plugin.show.java.doc;
|
||||
package io.github.linwancen.plugin.show.java.resolve;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
@@ -11,6 +11,7 @@ import com.intellij.psi.PsiDocCommentOwner;
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.psi.PsiJvmModifiersOwner;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import io.github.linwancen.plugin.show.java.doc.PsiMethodToPsiDoc;
|
||||
import io.github.linwancen.plugin.show.lang.base.BaseAnnoDoc;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.github.linwancen.plugin.show.java.kt;
|
||||
package io.github.linwancen.plugin.show.java.resolve;
|
||||
|
||||
import io.github.linwancen.plugin.show.lang.base.BaseAnnoDoc;
|
||||
import io.github.linwancen.plugin.show.lang.base.PsiUnSaveUtils;
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.github.linwancen.plugin.show.java.doc;
|
||||
package io.github.linwancen.plugin.show.java.resolve;
|
||||
|
||||
import com.intellij.psi.PsiEnumConstant;
|
||||
import com.intellij.psi.PsiExpression;
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.github.linwancen.plugin.show.java.doc;
|
||||
package io.github.linwancen.plugin.show.java.resolve;
|
||||
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
@@ -7,6 +7,7 @@ import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.javadoc.PsiDocTag;
|
||||
import com.intellij.psi.javadoc.PsiDocTagValue;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import io.github.linwancen.plugin.show.java.doc.PsiMethodToPsiDoc;
|
||||
import io.github.linwancen.plugin.show.lang.base.PsiUnSaveUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -0,0 +1,5 @@
|
||||
/**
|
||||
* special resolve element to doc.
|
||||
* <br>Call by {@link io.github.linwancen.plugin.show.java.JavaLangDoc#resolveDocPrint}
|
||||
*/
|
||||
package io.github.linwancen.plugin.show.java.resolve;
|
||||
@@ -51,6 +51,7 @@ public class AppSettingsComponent {
|
||||
private final JBCheckBox skipBlank = new JBCheckBox(ShowBundle.message("skip.blank"));
|
||||
private final JBCheckBox skipAnnotation = new JBCheckBox(ShowBundle.message("skip.anno"));
|
||||
private final JBCheckBox getToSet = new JBCheckBox("get --> set ");
|
||||
private final JBCheckBox fieldValue = new JBCheckBox("field value");
|
||||
private final JBCheckBox fromNew = new JBCheckBox("java new ");
|
||||
private final JBCheckBox fromParam = new JBCheckBox("java @param ");
|
||||
private final JBCheckBox enumDoc = new JBCheckBox("java enum ");
|
||||
@@ -353,6 +354,14 @@ public class AppSettingsComponent {
|
||||
getToSet.setSelected(newStatus);
|
||||
}
|
||||
|
||||
public boolean getFieldValue() {
|
||||
return fieldValue.isSelected();
|
||||
}
|
||||
|
||||
public void setFieldValue(boolean newStatus) {
|
||||
fieldValue.setSelected(newStatus);
|
||||
}
|
||||
|
||||
public boolean getFromNew() {
|
||||
return fromNew.isSelected();
|
||||
}
|
||||
@@ -468,7 +477,7 @@ public class AppSettingsComponent {
|
||||
new JBLabel(ShowBundle.message("prefix")), lineEndPrefix);
|
||||
FormBuilder formBuilder = FormBuilder.createFormBuilder()
|
||||
.addSeparator()
|
||||
.addComponent(JPanelFactory.of(skipAscii, skipBlank, skipAnnotation, getToSet), 1)
|
||||
.addComponent(JPanelFactory.of(skipAscii, skipBlank, skipAnnotation, getToSet, fieldValue), 1)
|
||||
.addComponent(JPanelFactory.of(fromNew, fromParam, enumDoc), 1)
|
||||
.addSeparator()
|
||||
.addComponent(text)
|
||||
|
||||
@@ -78,6 +78,7 @@ public class AppSettingsConfigurable implements Configurable {
|
||||
modified |= mySettingsComponent.getSkipBlank() != settings.skipBlank;
|
||||
modified |= mySettingsComponent.getSkipAnnotation() != settings.skipAnnotation;
|
||||
modified |= mySettingsComponent.getGetToSet() != settings.getToSet;
|
||||
modified |= mySettingsComponent.getFieldValue() != settings.fieldValue;
|
||||
|
||||
modified |= mySettingsComponent.getFromNew() != settings.fromNew;
|
||||
modified |= mySettingsComponent.getFromParam() != settings.fromParam;
|
||||
@@ -131,6 +132,7 @@ public class AppSettingsConfigurable implements Configurable {
|
||||
settings.skipBlank = mySettingsComponent.getSkipBlank();
|
||||
settings.skipAnnotation = mySettingsComponent.getSkipAnnotation();
|
||||
settings.getToSet = mySettingsComponent.getGetToSet();
|
||||
settings.fieldValue = mySettingsComponent.getFieldValue();
|
||||
|
||||
settings.fromNew = mySettingsComponent.getFromNew();
|
||||
settings.fromParam = mySettingsComponent.getFromParam();
|
||||
@@ -187,6 +189,7 @@ public class AppSettingsConfigurable implements Configurable {
|
||||
mySettingsComponent.setSkipBlank(settings.skipBlank);
|
||||
mySettingsComponent.setSkipAnnotation(settings.skipAnnotation);
|
||||
mySettingsComponent.setGetToSet(settings.getToSet);
|
||||
mySettingsComponent.setFieldValue(settings.fieldValue);
|
||||
|
||||
mySettingsComponent.setFromNew(settings.fromNew);
|
||||
mySettingsComponent.setFromParam(settings.fromParam);
|
||||
|
||||
@@ -72,6 +72,7 @@ public class AppSettingsState implements PersistentStateComponent<AppSettingsSta
|
||||
public boolean skipBlank = true;
|
||||
public boolean skipAnnotation = true;
|
||||
public boolean getToSet = true;
|
||||
public boolean fieldValue = true;
|
||||
public boolean fromNew = true;
|
||||
public boolean fromParam = false;
|
||||
public boolean enumDoc = true;
|
||||
|
||||
Reference in New Issue
Block a user