Intellij 插件开发:在不同项目中打开时,toolWindow 扩展为空白 windows
Intellij Plugin Development: toolWindow extension is blank when opened in different project windows
当我在不同的 intellij windows 中打开多个 (3-4) 项目时,我的 JSON 插件工具 window 显示为空白。
这是我的 plugin.xml
<idea-plugin>
<id>com.xxxxx.json.Editor</id>
<name>JSON Editor</name>
<version>1.5</version>
<vendor email="xxxxxxxxxx" url="xxxxxxx">xxxxxx</vendor>
<description><![CDATA[
JetBrains IntelliJ IDE plugin for easy viewing and editing of currently opened JSON file in IDE using Tree Structure.
]]></description>
<change-notes><![CDATA[
Feature: Indentation changes - adding space after ':' char.
]]>
</change-notes>
<idea-version since-build="192.6"/>
<extensions defaultExtensionNs="com.intellij">
<toolWindow id="JSON Editor" anchor="right" factoryClass="JsonEditor" />
</extensions>
<actions>
</actions>
</idea-plugin>
这是包含插件内容(按钮和树视图)的屏幕截图 JSON 编辑器工具 window。
这是同一工具窗口内容完全空白的屏幕截图(如果在不同 windows 中打开多个 (3-4) 项目,则会发生这种情况。)
这是 createToolWindowContent 方法的代码 -
public class JsonEditor implements ToolWindowFactory {
private JPanel mainContent;
....
....
@Override
public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
this.project = project;
ContentFactory contentFactory =
ContentFactory.SERVICE.getInstance();
Content content = contentFactory.createContent(mainContent, "", false);
toolWindow.getContentManager().addContent(content);
}
}
如何解决这个问题?我也可以让插件扩展实例的不同状态以不同的方式打开吗?
每次调用 createToolWindowContent
方法时,您都需要创建不同的 mainContent
实例,因为 AWT 小部件只能有一个父级。
此方法根据 IDE window 调用,因此 window 将 "win"。
所以不要写 mainContent
写 createMainContentInstance()
。然后,您可以通过使用当前 window 的项目对象来访问全局所需的详细信息,这在 windows.
之间是不同的
当我在不同的 intellij windows 中打开多个 (3-4) 项目时,我的 JSON 插件工具 window 显示为空白。 这是我的 plugin.xml
<idea-plugin>
<id>com.xxxxx.json.Editor</id>
<name>JSON Editor</name>
<version>1.5</version>
<vendor email="xxxxxxxxxx" url="xxxxxxx">xxxxxx</vendor>
<description><![CDATA[
JetBrains IntelliJ IDE plugin for easy viewing and editing of currently opened JSON file in IDE using Tree Structure.
]]></description>
<change-notes><![CDATA[
Feature: Indentation changes - adding space after ':' char.
]]>
</change-notes>
<idea-version since-build="192.6"/>
<extensions defaultExtensionNs="com.intellij">
<toolWindow id="JSON Editor" anchor="right" factoryClass="JsonEditor" />
</extensions>
<actions>
</actions>
</idea-plugin>
这是包含插件内容(按钮和树视图)的屏幕截图 JSON 编辑器工具 window。
这是同一工具窗口内容完全空白的屏幕截图(如果在不同 windows 中打开多个 (3-4) 项目,则会发生这种情况。)
这是 createToolWindowContent 方法的代码 -
public class JsonEditor implements ToolWindowFactory {
private JPanel mainContent;
....
....
@Override
public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
this.project = project;
ContentFactory contentFactory =
ContentFactory.SERVICE.getInstance();
Content content = contentFactory.createContent(mainContent, "", false);
toolWindow.getContentManager().addContent(content);
}
}
如何解决这个问题?我也可以让插件扩展实例的不同状态以不同的方式打开吗?
每次调用 createToolWindowContent
方法时,您都需要创建不同的 mainContent
实例,因为 AWT 小部件只能有一个父级。
此方法根据 IDE window 调用,因此 window 将 "win"。
所以不要写 mainContent
写 createMainContentInstance()
。然后,您可以通过使用当前 window 的项目对象来访问全局所需的详细信息,这在 windows.