开发IDEA的插件时,有API的IDEA与JCEF的webview通信吗?
Is there API of IDEA communicating with JCEF's webview when developing IDEA's plugin?
目前正在准备开发一个涉及webview的IDEA插件,包含一些信息。由于我已经开发了类似功能的 VSCode 扩展并且它使用了许多 webview,我计划将这些 HTML 迁移到 JECF 的 IDEA 插件。
但是,这些功能需要与 extension/plugin 进行一些交互,如 VSCode 我可以单击 webview 的某些元素并通过 [=20= 提供的 acquireVsCodeApi 将一些文本插入编辑器] 本身。而且我不太确定是否可以通过在 IDEA 的插件中使用 JCEF 来执行此类通信? (我对 Jetbrain 的插件开发还很陌生 JAVA)
非常感谢您的任何建议。
是的,这是可能的。一种方法是将您的插件分成三个独立的模块:
- 包含 IDE 端插件代码的模块。
- 包含 JCEF 浏览器代码的模块。
- 一个充当消息传递接口的模块。该模块将启用前两个模块之间的通信。
查看 IntelliJ PDF Viewer plugin for a good example, in particular the kotlinjs-migrate
branch. Another good place to start - and to keep an eye on while you figure out how the pdf viewer plugin works - is the IntelliJ documentation page about JCEF. The section about the JBCefClient 您可能特别感兴趣,尽管它很少。
目前正在准备开发一个涉及webview的IDEA插件,包含一些信息。由于我已经开发了类似功能的 VSCode 扩展并且它使用了许多 webview,我计划将这些 HTML 迁移到 JECF 的 IDEA 插件。
但是,这些功能需要与 extension/plugin 进行一些交互,如 VSCode 我可以单击 webview 的某些元素并通过 [=20= 提供的 acquireVsCodeApi 将一些文本插入编辑器] 本身。而且我不太确定是否可以通过在 IDEA 的插件中使用 JCEF 来执行此类通信? (我对 Jetbrain 的插件开发还很陌生 JAVA)
非常感谢您的任何建议。
是的,这是可能的。一种方法是将您的插件分成三个独立的模块:
- 包含 IDE 端插件代码的模块。
- 包含 JCEF 浏览器代码的模块。
- 一个充当消息传递接口的模块。该模块将启用前两个模块之间的通信。
查看 IntelliJ PDF Viewer plugin for a good example, in particular the kotlinjs-migrate
branch. Another good place to start - and to keep an eye on while you figure out how the pdf viewer plugin works - is the IntelliJ documentation page about JCEF. The section about the JBCefClient 您可能特别感兴趣,尽管它很少。