在我的插件中,我能够构建一个新的项目向导,但第一页看起来并不正确。例如。这就是我的插件:
这就是大多数其他插件所具有的:
我所缺少的是" SDK"选项。我们的插件需要Java 8,我喜欢选择SDK来显示它。但我不明白这些配置的位置。
这是我的plugins.xml
:
<extensions defaultExtensionNs="com.intellij">
<!-- moduleBuilder builderClass="com.codename1.plugin.intellij.module.CodenameOneModuleType"/ -->
<moduleType id="CodenameOne.Module" implementationClass="com.codename1.plugin.intellij.module.CodenameOneModuleType" classpathProvider="true" />
</extensions>
CodenameOneModuleType
只是扩展ModuleType<NewCodenameOneProject>
,其中NewCodenameOneProject
基本上是JavaModuleBuilder
。如果这会有所帮助,我可以发布一些更多来源。
BTW是否有插件API的javadoc?
我知道源代码在哪里,但是没有现成的JavaDoc吗?
答案 0 :(得分:0)
我没有找到一个完全明确的解决方案,但我确实根据讨论得出了几个结论here:
为项目设置SDK应通过以下方式完成:ProjectRootManager.getInstance(project).setProjectSdk(jdk);
我可以使用createWizardSteps
getCustomOptionsStep
。
一旦我理解了那些,我刚刚使用IntelliJ / IDEA gui构建器和一些逻辑重新创建了上面的组合框UI:
private void refreshSDKCombo(Sdk preferredSdk) {
DefaultComboBoxModel<Sdk> sdks = new DefaultComboBoxModel<>();
Sdk[] s = ProjectJdkTable.getInstance().getAllJdks();
for (Sdk ss : s) {
if (ss.getSdkType() instanceof JavaSdkType) {
String str = ss.getVersionString();
if (str.contains("1.8.") || str.contains("1.9.")) {
sdks.addElement(ss);
}
}
}
if(preferredSdk != null) {
String str = preferredSdk.getVersionString();
if (str.contains("1.8.") || str.contains("1.9.")) {
projectSDKCombo.setSelectedItem(preferredSdk);
}
}
projectSDKCombo.setModel(sdks);
if(sdks.getSize() > 0) {
projectSDKCombo.setSelectedIndex(0);
}
}
注意到我将选项限制为JDK 8+,这是我们的用例所必需的!
我绑定按钮逻辑以配置SDK:
newButton.addActionListener(e -> {
ProjectJdksEditor editor = new ProjectJdksEditor((Sdk)projectSDKCombo.getSelectedItem(),
ProjectManager.getInstance().getDefaultProject(),
newButton);
if (editor.showAndGet()) {
Sdk selectedJdk = editor.getSelectedJdk();
refreshSDKCombo(selectedJdk);
}
});