java IntelliJ插件不显示主项目创建向导上的数据,而是我需要单击下一步,什么会导致这种情况?

wixjitnu  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(94)

我正在为Intellij Idea制作一个插件,我在项目创建阶段遇到了一个问题。
当我在项目创建向导中点击我的插件“附加库和框架:”时,会出现一个中心有“无显示”的大正方形。我必须点击“下一步”按钮,以便我的设置显示出来。我不明白这是什么原因造成的。如果你需要的话,可以在我的plugin.xml下面。

<!-- Copyright 2000-2023 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
<!-- Plugin Configuration File. Read more: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html -->

<idea-plugin>

  <!-- Unique id for this plugin. Must stay constant for the life of the plugin. -->
  <id>org.intellij.sdk.project.wizard</id>

  <!-- Text to display as name on Settings | Plugin page -->
  <name>SDK: Project Wizard Demo</name>

  <!-- Product and plugin compatibility requirements -->
  <depends>com.intellij.modules.platform</depends>

  <!-- Text to display as description on Settings | Plugin page -->
  <description>
    <![CDATA[
      Demonstrates working with the Project Wizard.
    ]]>
  </description>
  <change-notes>
    <![CDATA[
      <ul>
        <li><b>2.0.0</b> Convert to Gradle-based plugin</li>
        <li><b>1.0.0</b> Release 2018.3 and earlier.</li>
      </ul>
    ]]>
  </change-notes>

  <!-- Text to display as company information on Settings | Plugin page -->
  <vendor url="https://plugins.jetbrains.com">IntelliJ Platform SDK</vendor>

  <extensions defaultExtensionNs="com.intellij">
    <moduleType
            id="DEMO_MODULE_TYPE"
            implementationClass="org.intellij.sdk.project.wizard.DemoModuleType"/>
  </extensions>

</idea-plugin>

更新:
我设法使“附加库和框架:“部分被替换我的插件的向导步骤。但是现在,当我按下“下一步”时,一个副本出现了。
更新2:以下是我的代码的Pastebin链接:

DemoModuleWizardStep.java: https://pastebin.com/tHSw0bbS
DemoModuleType.java: https://pastebin.com/QBh5LkDg
DemoModuleBuilder.java: https://pastebin.com/BBhCMPNd

另外,我正在编辑IntelliJ IDEA的代码,可以在这里找到:https://github.com/JetBrains/intellij-sdk-code-samples/tree/main/project_wizard

myzjeezk

myzjeezk1#

根据您提供的信息和pastebin链接,让我们尝试诊断问题。
1.“Nothing to Show”问题:当您的自定义ModuleWizardStep未正确初始化或未在ModuleBuilder中正确返回时,通常会出现“Nothing to Show”问题。
1.向导步骤重复:当您在单击“Next”后说“a duplicate showed up”时,通常意味着您的ModuleBuilder返回了自定义ModuleWizardStep的多个示例。
让我们来解决这些问题:

1.解决“无显示”问题:

确保DemoModuleBuildergetModuleType()方法返回正确的ModuleType。从getModuleType()返回的示例应该与在plugin.xml中注册的示例匹配。
DemoModuleBuilder.java中:

@Override
public ModuleType<?> getModuleType() {
    return DemoModuleType.getInstance();
}

DemoModuleType.java中,确保DemoModuleType singleton已正确初始化:

public static DemoModuleType getInstance() {
    return (DemoModuleType) ModuleTypeManager.getInstance().findByID(ID);
}

2.解决重复向导步骤问题:

确保在DemoModuleBuildergetCustomOptionsStep()中只返回ModuleWizardStep的一个示例。还应该检查任何其他可以返回ModuleWizardStep的方法,以确保它们不会无意中添加额外的步骤。
DemoModuleBuilder.java中:

@Override
public ModuleWizardStep[] getCustomOptionsStep(WizardContext context, Disposable parentDisposable) {
    return new ModuleWizardStep[]{
        new DemoModuleWizardStep()
    };
}

确保如果覆盖了其他方法(如createWizardSteps()),它们不会无意中添加额外的步骤。

相关问题