是否想在NetBeans IDE中添加功能或自动执行某些操作? 跟随我们编写您的第一个NetBeans插件。
让我们超越简单的工具栏示例 ,创建一个可以自动更新的插件。 该代码基于NetBeans的WakaTime插件 。 我们的示例插件将仅打印Hello World语句,并在可用的情况下更新至新版本……足以使您入门。
创建一个新的插件项目
选择File
-> New Project
然后选择NetBeans Modules
-> Module
作为项目类型。
为您的项目命名
选择插件的名称空间或代码名称
添加一个Java文件
插件起点
创建新的Java类文件后,使其扩展ModuleInstall并使用@OnShowing对其进行包装 ,使其仅在GUI加载后运行。
@OnShowing
public class MyPlugin extends ModuleInstall implements Runnable {
}
在您的OnShowing
按ALT + ENTER ,然后Search Module Dependency for OnShowing
选择Search Module Dependency for OnShowing
将Window System API导入到项目中。 这将为您的项目添加新的依赖关系,并将必要的import语句添加到文件顶部。 还要对ModuleInstall
执行此ModuleInstall
。
有时NetBeans org.openide.util
依赖项,因此您可能必须手动添加该依赖项。 为此,右键单击MyPlugin,然后选择Properties
。
选择类别Libraries
然后单击Add...
键入org.openide.util
然后单击OK
。 这会将依赖项添加到您的project.xml
文件中。
在MyPlugin类上按ALT + ENTER ,然后选择Implement all abstract methods
。
最后一件事,将此行添加到manifest.mf
文件。 OpenIDE-Module-Install: org/myorg/myplugin/MyPlugin.class
现在,将在插件加载后执行run()
方法。
记录中
让我们将println
输出输出到NetBeans IDE日志中。 首先,将记录器设置为MyPlugin类的属性。
public static final Logger log = Logger.getLogger("MyPlugin");
按ALT + ENTER导入java.util.logging.Logger 。
用log.info("MyPlugin has loaded.");
替换println
log.info("MyPlugin has loaded.");
。
自动更新您的插件
在MyPlugin包中创建一个新的Java文件UpdateHandler.java
。
用UpdateHandler.java替换此文件的内容。 搜索模块依赖项,并通过在每个import语句上按ALT + ENTER添加任何缺少的依赖项。
将这些行添加到manifest.mf
文件中。
OpenIDE-Module-Layer: org/myorg/myplugin/layer.xml
OpenIDE-Module-Implementation-Version: 201501010101
在MyPlugin包中创建一个新的XML文档。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
<filesystem><folder name="Services"><folder name="AutoupdateType"><file name="org_myorg_myplugin_update_center.instance"><attr name="displayName" bundlevalue="org.myorg.myplugin.Bundle#Services/AutoupdateType/org_myorg_myplugin_update_center.instance"/><attr name="enabled" boolvalue="true"/><attr name="instanceCreate" methodvalue="org.netbeans.modules.autoupdate.updateprovider.AutoupdateCatalogFactory.createUpdateProvider"/><attr name="instanceOf" stringvalue="org.netbeans.spi.autoupdate.UpdateProvider"/><attr name="url" bundlevalue="org.myorg.myplugin.Bundle#org_myorg_myplugin_update_center"/></file></folder></folder>
</filesystem>
将此代码添加到run()
方法内的MyPlugin类中。
WindowManager.getDefault().invokeWhenUIReady(new Runnable () {@Overridepublic void run() {UpdateHandler.checkAndHandleUpdates();}
});
将这些行添加到Bundle.properties
文件中:
Services/AutoupdateType/org_myorg_myplugin_update_center.instance=MyPlugin
UpdateHandler.NewModules=false
org_myorg_myplugin_update_center=https\://example.com/updates.xml
现在,每次NetBeans重新启动并启动插件时,它将通过从example.com下载updates.xml
来检查更新。
您的updates.xml文件告诉NetBeans从何处获取插件的新NBM。 要创建用于发布插件的NBM,请右键单击MyPlugin项目,然后选择Create NBM
。 NBM文件是您将发布到NetBeans插件门户的文件 。
有关在GitHub上托管updates.xml
的示例,请查看WakaTime NetBeans插件中的 update.xml和对应的Bundle.properties 。
翻译自: https://www.javacodegeeks.com/2015/02/write-netbeans-plugin.html