Skip to content

Commit

Permalink
feat(extensionPoints): 1.18 Support 2020.1 set JBR with JCEF | 支持 202…
Browse files Browse the repository at this point in the history
…0.1 设置 JCEF 的 JBR
  • Loading branch information
LinWanCen committed Nov 4, 2024
1 parent 0b48c94 commit f8ba906
Show file tree
Hide file tree
Showing 49 changed files with 315 additions and 287 deletions.
5 changes: 3 additions & 2 deletions .run/Run Plugin.run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="scriptParameters" value="--stacktrace" />
<option name="taskDescriptions">
<list />
</option>
Expand All @@ -14,11 +14,12 @@
<option value="runIde" />
</list>
</option>
<option name="vmOptions" value="" />
<option name="vmOptions" value="-Xmx2G" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<RunAsTest>false</RunAsTest>
<method v="2" />
</configuration>
</component>
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

## [1.0.0]

- 1.18 Support 2020.1 set JBR with JCEF
- 1.17 Preview HTML File
- 1.16 ★ method call graph
- 1.15 Support .puml and navigate to class_method
Expand All @@ -26,6 +27,7 @@

# 中文更新日志

- 1.18 支持 2020.1 设置 JCEF 的 JBR
- 1.17 预览 HTML 文件
- 1.16 ★ 方法调用图
- 1.15 支持 .puml 文件和跳转 class_method
Expand Down
23 changes: 20 additions & 3 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import org.jetbrains.changelog.Changelog
import org.jetbrains.changelog.markdownToHTML
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
Expand Down Expand Up @@ -32,17 +31,35 @@ kotlin {
JavaLanguageVersion.of(11)
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions {
jvmTarget = "11"
}
}
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}

val ideTypeStr = properties("platformType")

// Configure Gradle IntelliJ Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
intellij {
pluginName.set(properties("pluginName"))
version.set(properties("platformVersion"))
val platformVersion = properties("platformVersion")
version.set(platformVersion)
type.set(ideTypeStr)

// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file.
plugins.set(properties("platformPlugins").split(',').map(String::trim).filter(String::isNotEmpty))
val platformPlugins = if("2020.1" == platformVersion) "platformPlugins_2020_1" else "platformPlugins"
plugins.set(properties(platformPlugins).split(',').map(String::trim).filter(String::isNotEmpty))
if ("RD" == ideTypeStr || "CL" == ideTypeStr) {
plugins.set(plugins.get().filter {
val id = it.toString()
val jvm = id.contains("java") || id.contains("kotlin") || id.contains("groovy") || id.contains("PsiViewer")
!jvm
})
}
}

sourceSets {
Expand Down
32 changes: 22 additions & 10 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@ pluginGroup = com.github.linwancen.drawgraph
pluginName = draw-graph
pluginRepositoryUrl = https://github.com/LinWanCen/draw-graph
# SemVer format -> https://semver.org
pluginVersion = 1.17
pluginVersion = 1.18

# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
# Support JavaFx
#pluginSinceBuild = 201
#pluginUntilBuild = 201.*
# Support JCEF
pluginSinceBuild = 202
# 2020.2 use JCEF, 2020.1 is JavaFx, Should Set JCEF JBR
pluginSinceBuild = 201
pluginUntilBuild =

# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
Expand All @@ -24,11 +21,26 @@ platformVersion = 2020.2
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
# Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22
platformPlugins = java, org.jetbrains.kotlin, org.intellij.groovy \
, PsiViewer:202-SNAPSHOT.3 \
, JavaScript \
, Pythonid:202.6397.98 \
, org.intellij.scala:2020.2.49 \
, JavaScript, Pythonid:202.6397.98, org.jetbrains.plugins.go:202.6397.94 \
, com.jetbrains.php:202.6397.115, org.jetbrains.plugins.ruby:202.6397.59 \
, org.rust.lang:0.3.140.3644-202, org.toml.lang:0.2.140.3644-202
, com.jetbrains.php:202.6397.115 \
, org.jetbrains.plugins.go:202.6397.94 \
, org.jetbrains.plugins.ruby:202.6397.59 \
, org.rust.lang:0.3.140.3644-202 \
, org.toml.lang:0.2.140.3644-202 \
, PsiViewer:202-SNAPSHOT.3

platformPlugins_2020_1 = java, org.jetbrains.kotlin, org.intellij.groovy \
, JavaScript \
, Pythonid:201.6668.121 \
, org.intellij.scala:2020.1.43 \
, com.jetbrains.php:201.6668.153 \
, org.jetbrains.plugins.go:201.6668.60.126 \
, org.jetbrains.plugins.ruby:201.6668.113 \
, org.rust.lang:0.3.131.3366-201 \
, org.toml.lang:0.2.131.3366-201 \
, PsiViewer:201.6251.22-EAP-SNAPSHOT.3

# Gradle Releases -> https://github.com/gradle/gradle/releases
gradleVersion = 7.6
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,11 @@ import com.jetbrains.cidr.lang.OCLanguage
import com.jetbrains.cidr.lang.psi.OCDeclarator
import com.jetbrains.cidr.lang.psi.OCFunctionDefinition
import com.jetbrains.cidr.lang.psi.OCReferenceElement
import org.slf4j.LoggerFactory

class CParser : ParserLang<OCFunctionDefinition>() {
private val log = LoggerFactory.getLogger(this::class.java)

init {
log.info("load CParser")
SERVICES[OCLanguage.getInstance().id] = this
override fun id(): String {
return OCLanguage.getInstance().id
}

override fun funClass(): Class<OCFunctionDefinition> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@ import com.github.linwancen.plugin.graph.settings.DrawGraphProjectState
import org.jetbrains.plugins.groovy.GroovyLanguage
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod
import org.slf4j.LoggerFactory

class GroovyParser : ParserLang<GrMethod>() {
private val log = LoggerFactory.getLogger(this::class.java)

init {
log.info("load GroovyParser")
SERVICES[GroovyLanguage.id] = this
override fun id(): String {
return GroovyLanguage.id
}

override fun funClass(): Class<GrMethod> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,11 @@ import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.search.PsiShortNamesCache
import com.intellij.psi.search.searches.OverridingMethodsSearch
import com.intellij.psi.util.PsiTreeUtil
import org.slf4j.LoggerFactory


open class JavaParser : ParserLang<PsiMethod>() {
private val log = LoggerFactory.getLogger(this::class.java)

init {
log.info("load JavaParser")
SERVICES[JavaLanguage.INSTANCE.id] = this
override fun id(): String {
return JavaLanguage.INSTANCE.id
}

override fun nameToElementImpl(project: Project, name: String): PsiElement? {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@ import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
import org.slf4j.LoggerFactory

class KotlinParser : ParserLang<KtNamedFunction>() {
private val log = LoggerFactory.getLogger(this::class.java)

init {
log.info("load KotlinParser")
SERVICES[KotlinLanguage.INSTANCE.id] = this
override fun id(): String {
return KotlinLanguage.INSTANCE.id
}

override fun funClass(): Class<KtNamedFunction> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@ import com.github.linwancen.plugin.graph.parser.java.JavaComment
import com.intellij.psi.PsiElement
import com.intellij.psi.javadoc.PsiDocComment
import com.intellij.psi.util.elementType
import org.jetbrains.kotlin.psi.psiUtil.allChildren
import org.jetbrains.plugins.scala.lang.scaladoc.lexer.ScalaDocTokenType
import org.jetbrains.plugins.scala.lang.scaladoc.psi.api.ScDocInlinedTag
import org.jetbrains.plugins.scala.lang.scaladoc.psi.api.ScDocParagraph

class ScalaComment : JavaComment() {
companion object {
Expand All @@ -23,15 +21,7 @@ class ScalaComment : JavaComment() {
if (docComment == null) {
return
}
for (element in docComment.descriptionElements) {
if (element is ScDocParagraph) {
val first = docComment.allChildren.first
if (first != null) {
addDescription(first.allChildren.asSequence(), map)
}
break
}
}
addDescription(docComment.children.asSequence(), map)
addTag(docComment, map)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@ import com.github.linwancen.plugin.graph.settings.DrawGraphProjectState
import org.jetbrains.plugins.scala.ScalaLanguage
import org.jetbrains.plugins.scala.lang.psi.api.expr.ScReferenceExpression
import org.jetbrains.plugins.scala.lang.psi.api.statements.ScFunctionDefinition
import org.slf4j.LoggerFactory

class ScalaParser : ParserLang<ScFunctionDefinition>() {
private val log = LoggerFactory.getLogger(this::class.java)

init {
log.info("load ScalaParser")
SERVICES[ScalaLanguage.INSTANCE.id] = this
override fun id(): String {
return ScalaLanguage.INSTANCE.id
}

override fun funClass(): Class<ScFunctionDefinition> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,10 @@
import com.github.linwancen.plugin.graph.settings.DrawGraphAppState;
import com.github.linwancen.plugin.graph.settings.DrawGraphProjectState;
import com.github.linwancen.plugin.graph.ui.webview.Browser;
import com.intellij.ide.FileEditorSelectInContext;
import com.github.linwancen.plugin.graph.ui.webview.BrowserFactory;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.fileEditor.EditorDataProvider;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.fileEditor.impl.CurrentEditorProvider;
import com.intellij.openapi.fileEditor.impl.EditorComposite;
import com.intellij.openapi.fileEditor.impl.EditorWindow;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindow;
Expand All @@ -25,7 +21,6 @@
import org.jetbrains.annotations.Nullable;

import javax.swing.*;
import javax.swing.tree.DefaultTreeCellEditor;
import java.awt.event.FocusEvent;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
Expand Down Expand Up @@ -114,9 +109,9 @@ public GraphWindow(@NotNull Project project, ToolWindow toolWindow) {
}

private void initOut(Project project) {
mermaidBrowser = Browser.of(mermaidOut, project);
graphvizBrowser = Browser.of(graphvizOut, project);
plantumlBrowser = Browser.of(plantumlOut, project);
mermaidBrowser = BrowserFactory.of(mermaidOut, project);
graphvizBrowser = BrowserFactory.of(graphvizOut, project);
plantumlBrowser = BrowserFactory.of(plantumlOut, project);
initSrc();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,55 +1,28 @@
package com.github.linwancen.plugin.graph.ui.webview;

import com.github.linwancen.plugin.graph.ui.DrawGraphBundle;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupActivity;
import com.intellij.ui.components.JBTextArea;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import javax.swing.*;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;
import java.lang.reflect.Method;

public abstract class Browser implements StartupActivity.RequiredForSmartMode {
@Override
public void runActivity(@NotNull Project project) {}
public abstract class Browser {

@NotNull
static Map<String, Class<? extends Browser>> map = new HashMap<>();
public Class<?> clazz;

static {
// ensure load
map.put(BrowserJcef.class.getName(), BrowserJcef.class);
}
public abstract void addImpl(@NotNull JPanel out, Project project);

public abstract void loadImpl(String html);

@Nullable
public static Browser of(@NotNull JPanel out, Project project) {
out.removeAll();
out.setLayout(new BorderLayout());
@NotNull StringBuilder errMsg = new StringBuilder();
for (@NotNull Class<? extends Browser> c : map.values()) {
try {
@NotNull Browser browser = c.getConstructor().newInstance();
@Nullable String s = browser.add(out, project);
if (s == null) {
return browser;
}
errMsg.append(s).append("\n");
} catch (Exception e) {
errMsg.append(e).append("\n");
public String load(String html) {
try {
if (html != null) {
Method method = clazz.getDeclaredMethod("loadImpl", String.class);
method.invoke(this, html);
}
return null;
} catch (Throwable e) {
return e.toString();
}
errMsg.insert(0, DrawGraphBundle.message("web.load.err.msg"));
@NotNull JBTextArea errTip = new JBTextArea();
errTip.setText(errMsg.toString());
out.add(errTip);
return null;
}

@Nullable
abstract String add(JPanel out, Project project);

public abstract String load(String html);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.github.linwancen.plugin.graph.ui.webview;

import com.github.linwancen.plugin.graph.ui.DrawGraphBundle;
import com.github.linwancen.plugin.graph.ui.webview.extension.BrowserExtensionPoint;
import com.intellij.openapi.project.Project;
import com.intellij.ui.components.JBTextArea;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import javax.swing.*;
import java.awt.*;
import java.util.List;

public class BrowserFactory {
@Nullable
public static Browser of(@NotNull JPanel out, Project project) {
List<BrowserExtensionPoint> browsers = BrowserExtensionPoint.BROWSER_EPN.getExtensionList();
out.removeAll();
out.setLayout(new BorderLayout());
@NotNull StringBuilder errMsg = new StringBuilder();
for (BrowserExtensionPoint browser : browsers) {
try {
return browser.add(out, project);
} catch (Throwable e) {
errMsg.append(e).append("\n");
}
}
errMsg.insert(0, DrawGraphBundle.message("web.load.err.msg"));
@NotNull JBTextArea errTip = new JBTextArea();
errTip.setText(errMsg.toString());
out.add(errTip);
return null;
}
}
Loading

0 comments on commit f8ba906

Please sign in to comment.