本教程将介绍以下主题:
- 设置插件模块项目
- 创建菜单项和工具栏按钮
- 安装和使用插件模块
设置插件模块项目
开始编写插件模块之前,必须确保您具备所有必要的软件,并且确保正确设置了您的项目。NetBeans 提供一个向导,用于设置插件模块需要的基本文件。
安装软件
开始之前,需要在您的计算机上安装以下软件:
- NetBeans IDE 5.0
- Java Standard Development Kit (JDK™) version 1.4.2或 5.0
创建 NetBeans 插件模块项目
1. 选择 File > New Project。在 Categories 下,选择 NetBeans Plug-in Modules。
NetBeans 插件模块支持提供三个项目类型:
模块项目。 创建单独的插件模块需要的模板。
库包装模块项目。 为一个或多个插件模块需要的外部 JAR 文件创建插件模块。
模块套件项目。 为一组相互依赖的插件模块和库包装模块(您想一起部署的模块)创建模板。
2. 选择 Module Project。单击 Next。
3. 在 Name and Location 面板中,在 Project Name 中键入 MyFirstModule。将 Project Location 更改为您计算机上的任何目录,如 c:\mymodules。选择 Standalone Module 单选按钮和 Set as Main Project 复选框。单击 Next。
4. 在 Basic Module Configuration 面板中,用 myorg 替换 Code Name Base 中的 yourorghere,从而整个代码的 Code Name Base 为 org.myorg.myfirstmodule。注意,本地包和 XML 层将存储在 org.myorg.myfirstmodule 包中。这些文件执行以下操作:
本地化资源包。 指定用于国际化的特定于语言的字符串。
XML 层。 在 NetBeans System Filesystem 中注册菜单和工具栏按钮之类的项。
单击 Finish。IDE 创建 MyFirstModule 项目。该项目包含所有资源和项目元数据,如该项目的 Ant 构建脚本。该项目在 IDE 中打开。您可以在 Projects 窗口 (Ctrl-1) 中查看其逻辑结构并在 Files 窗口 (Ctrl-2) 中查看其文件结构:
除本地化资源包和 XML 层之外,该项目还包括以下重要文件:
模块清单(Module Manifest)。 声明该项目是插件模块。此外,它设置一些特定于模块的设置,如 XML 层的位置、本地化资源包的位置和模块版本。
构建脚本。 提供一个您可以创建自己的 Ant 目标和重写在 nbproject/build-impl.xml 中指定的目标的位置。
项目元数据。 包含以下信息,如该项目类型、内容、平台、类路径、依赖性,以及 Ant 脚本中项目命令和目标之间的影射。
NetBeans 平台配置。 包含 IDE 或 Platform 使用的属性。
每用户 NetBeans 平台配置。 包含特定于 IDE 安装的属性。例如,如果在 VCS 上共享该项目,则不会在存储库中查看您在此文件中设置的任何属性。您可以从 NetBeans Platform Config 中将一个属性复制到此文件中,并在每个文件中为该属性确定不同的定义。此文件中的定义优先于 NetBeans Platform Config 中的定义。
在学习本教程的过程中不需要修改任何这些文件。注意,以上列出的重要文件是 Files 窗口中的以下文件的逻辑视图:分别是 manifest.mf、build.xml、nbproject/project.xml、nbproject/platform.properties 和 nbproject/private/platform-private.properties。
创建菜单项和工具栏按钮
使用 NetBeans 插件模块文件模板来建立该模块的功能的基础。使用文件模板时,IDE 将注册您在 layer.xml 文件中创建的项。使用向导创建文件模板后,可以使用 NetBeans API 列表继续开发该模块。
使用 Action 向导
1. 在 Projects 窗口中,右键单击该项目节点,并选择 New > File/Folder。在 New File 向导中,选择 Categories 下的 NetBeans Module Development 和 File Types 下的 Action。单击 Next。
2. 在 Action Type 面板中,接受默认设置。单击 Next。
3.在 GUI Registration 面板中,选择 Global Menu Item 并选择 Global Toolbar Button。设置以下值:
类别: Tools
菜单: Tools
位置: Tools - HERE - <separator>
工具栏: Build
位置: Run Main Project - HERE - Debug Main Project
在 Global Menu Item 部分选择 Separator Before 和 Separator After。
现在应该看到下图:
注意关于 GUI Registration 面板中各部分的以下内容:
类别。 指定在 Options 窗口的 Keymap 部分中该 action 的位置。
Global Menu Item。 指定作为菜单项注册该 action 的菜单。在菜单中现有项内的菜单项的位置也可以在此处设置。
Global Toolbar Button。 指定作为按钮注册该 action 的工具栏。在工具栏中现有按钮内的工具栏按钮的位置也可以在此处设置。
Global Keyboard Shortcut。 指定将调用 action 的键击事件。
File Type Context Menu Item。 指定出现菜单项的文件类型的 MIME 类型。现有菜单项中菜单项的位置以及其分隔符也可 以在此处设置。
Editor Context Menu Item。 指定出现菜单项的编辑器的 MIME 类型。现有菜单项中菜单项的位置以及其分隔符也可 以在此处设置。
单击 Next。
4. 在 Name, Icon, and Location 面板中,在 Class Name 中键入 MyFirstAction 并在 Display Name 键入 My First Action。在 Icon 中,在您的文件系统中浏览 16x16 像素图标。例如,您可以在 NetBeans IDE 5.0 安装目录中的以下位置找到一些 16x16 像素图标:
5.单击 Finish。enterprise2\jakarta-tomcat-5.5.9\server\webapps\admin\images
IDE 在 org.myorg.myfirstmodule 中创建 MyFirstAction.java 并在 Source Editor 中打开它。这是您应该看到的(单击该链接可以看到相关的 NetBeans API Javadoc):
正如在 GUI Registration 面板中指定的那样,该 IDE 将在 layer.xml 文件中作为菜单项和工具栏按钮注册 action 类。package org.myorg.myfirstmodule; import org.openide.util.HelpCtx; import org.openide.util.actions.CallableSystemAction; public final class MyFirstAction extends CallableSystemAction { public void performAction() { // TODO implement action body } public String getName() { return "My First Action"; } protected String iconResource() { return "org/myorg/myfirstmodule/Groups.gif"; } public HelpCtx getHelpCtx() { return HelpCtx.DEFAULT_HELP; } protected boolean asynchronous() { return false; } }
<filesystem> <folder name="Actions"> <folder name="Tools"> <file name="org-myorg-myfirstmodule-MyFirstAction.instance"> <attr name="instanceClass" stringvalue="org.myorg.myfirstmodule.MyFirstAction"/> </file> </folder> </folder> <folder name="Menu"> <folder name="Tools"> <attr name="org-openide-actions-ToolsAction.instance /org-myorg-myfirstmodule-MyFirstAction.shadow" boolvalue="true"/> <file name="org-myorg-myfirstmodule-MyFirstAction.shadow"> <attr name="originalFile" stringvalue="Actions/Tools/org-myorg-myfirstmodule-MyFirstAction.instance"/> </file> <attr name="org-myorg-myfirstmodule-MyFirstAction.shadow/Separator1.instance" boolvalue="true"/> </folder> </folder> <folder name="Toolbars"> <folder name="Build"> <attr name="org-netbeans-modules-project-ui-RunMainProject.shadow /org-myorg-myfirstmodule-MyFirstAction.shadow" boolvalue="true"/> <file name="org-myorg-myfirstmodule-MyFirstAction.shadow"> <attr name="originalFile" stringvalue="Actions/Tools/org-myorg-myfirstmodule-MyFirstAction.instance"/> </file> <attr name="org-myorg-myfirstmodule-MyFirstAction.shadow /org-netbeans-modules-project-ui-DebugMainProject.shadow" boolvalue="true"/> </folder> </folder> </filesystem>
6.在 Source Editor 中,按以下形式填写 performAction() 方法:
public void performAction() { String msg = "I'm plugged in!"; NotifyDescriptor d = new NotifyDescriptor.Message(msg, NotifyDescriptor.INFORMATION_MESSAGE); DialogDisplayer.getDefault().notify(d); }
调用 NotifyDescriptor 和 DialogDisplayer 的行带有下划线并标记为错误,类似于以下说明。这是因为相关的包尚未得到声明。下一步将声明这些包。
7. 在 Projects 窗口中,右键单击 MyFirstOptionCategory 项目节点并选择 Properties。在 Libraries 窗格中,单击 Add。键入 notifyd 并注意返回的列表将缩小,直到显示包含 NotifyDescriptor 的包:
单击 OK。将 Dialogs API 添加到 Module Dependencies 列表。单击 OK 确认,并退出 Project Properties 对话框。
8. 在 Source Editor 中,单击 Alt-Shift-F。两个新的导入语句即被添加到源文件的顶部,而且红色下划线消失。这些是新的 import 语句(单击链接可以看到相关的 NetBeans API Javadoc):
import org.openide.DialogDisplayer;
import org.openide.NotifyDescriptor;
插件模块到此结束。接着,您需要安装和使用它。
安装和使用插件模块
IDE 使用 Ant 构建脚本来构建和安装您的插件模块。构建脚本是创建插件模块项目时为您创建的。
安装插件模块
- 在 Projects 窗口,右键单击 MyFirstModule 项目并在 Target Platform 中选择 Install/Reload。
插件模块即在目标平台中构建和安装。目标平台在 Tools > NetBeans Platform Manager 中设置。目标平台打开,您可以试用新的插件模块。默认目标 IDE 或平台是由开发 IDE 的当前实例使用的安装平台。
使用 NetBeans 插件模块
1.在新打开的 IDE 菜单栏中,可以看到新的菜单和菜单项,还有您在 Action 向导中指定的图标。
2.选择该菜单项以调用 MyFirstAction.java 中的 performAction 方法。您应该看到出现 JOptionPane 及当中的信息:
3.单击 Toolbar 按钮。它即调用同一 action 而且结果相同。其形式如下: