级别: 中级 John Casey (jocasey@us.ibm.com), WebSphere Developer for z/Series 全球技术销售支持, IBM
2006 年 8 月 20 日 本文将向您介绍创建用户操作来作为 LPEX Editor(LPEX Editor 是随 WebSphere® Developer for zSeries v6.0 一起提供的工具)的扩展的详细过程。文中将说明如何创建定义自定义用户操作的插件、如何测试用户操作,以及如何对插件进行打包。
引言
LPEX Editor 已集成到 Eclipse Workbench 中,可用于创建和编辑很多类型的文件,包括程序源文件、文档和数据文件。除了基本编辑功能外,核心 LPEX Editor 还提供以下功能:
- 语言分析,将使用自动缩进、颜色和文本效果来突出显示源程序的不同部分,如编程语言关键字、逻辑结构和注释行。
- 查看特定文档元素的筛选结果,以便能缩小可视范围,从而对文档的特定部分进行处理。
- 嵌入式信息和错误消息。
- 基本概要,模拟多个流行编辑器特有的键盘和命令。
- 精心设计的搜索工具,便于指定搜索的准确范围。
- 用于定义书签的位置标记工具,便于从一个位置快速移动到文档中的另一个位置。
- 键盘输入记录工具,便于记录一组键盘输入,以在日后自动重复操作。
- 用于自定义和扩展基本编辑器的工具,以便适合个人偏好和项目需求。
WebSphere Developer for zSeries v6.0 中提供了 z/OS LPEX Editor,该编辑器对 LPEX Editor 进行了扩展,可支持对包含使用 COBOL、PL/I、HLASM 和 JCL 语言编写的源代码的远程 MVS 文件进行编辑。z/OS LPEX Editor 提供了对基本 LPEX Editor 的以下扩展:
- 编辑远程 z/OS 源文件,并同时保持记录长度和序列号等 z/OS 属性。
- 采用 ISPF ENQ/DEQ 锁定远程文件,以防止其他用户(ISPF 或 z/OS LPEX)同时编辑这些文件。
- 一个内容辅助工具,可通过更少的键盘输入完成变量名称、COBOL 或 PL/I 语句和 EXEC CICS 语句。
- 提供了用于打开 COPY 或 INCLUDE 语句中引用的文件的命令,使用方法为:右键单击文件名,然后从上下文菜单中选择 Open Copy Member 或 Open Include File。
- 针对 PL/I 和 COBOL 提供的区分语言的帮助。按下 F1 键,将显示来自当前语句的语言参考手册中的信息。
- 提供 PL/I、COBOL HLASM 和 JCL 的大纲视图。
您可以向 LPEX Editor 添加自己的扩展,如用户概要、命令、操作和文档分析器等。这些扩展使用 Eclipse 插件体系结构实现。事实上,WebSphere Developer for zSeries 和 LPEX Editor 都是 Eclipse 插件。通过使用随 WebSphere Developer for zSeries 提供的 Eclipse 插件开发环境 (Eclipse Plug-in Development Environment),可以方便地为 LPEX Editor 等现有插件创建和打包新功能。
本文将向您介绍创建作为 LPEX Editor 扩展的用户操作的详细过程。我们将说明如何创建定义自定义用户操作的插件、如何测试用户操作,以及如何对插件进行打包。我们在本文中创建的操作将一次性执行三个操作:将光标移动到行尾,插入一个分号,然后在当前行下插入新行。遵循本文中的步骤进行操作并不需要 Java 或 Eclipse 知识。不过,本文假定您有一定 Eclipse 或基于 Eclipse 的产品(如 WebSphere Developer for zSeries)的使用经验。
创建插件
启动 WebSphere Developer for zSeries
启动 WebSphere Developer for zSeries 时,我建议创建一个新工作区,以在其中开发插件。Workbench 打开时,请关闭欢迎页。
启用插件开发环境
Eclipse 插件开发环境提供了多个工具来简化插件的开发工作。要启用对这些工具的访问,请执行以下步骤:
- 从 WebSphere Developer for zSeries 菜单栏选择 Windows - Preferences。
- 在左侧的 Preferences 视图中,展开 Workbench 并选择 Capabilities。
- 在 Preferences 视图右侧的 Capabilities 窗格中,展开 Eclipse Developer 并选中 Eclipse Plug-in Development 和 Eclipse Plug-in Development Examples 的复选框。
- 在 Preferences 视图的底部单击 OK,以保存更改并关闭窗口。
打开 Plug-in Development 透视图
从 WebSphere Developer for zSeries 菜单栏选择 Window-Open Perspective-Other。在 Select Perspective 窗口中,选择 Plug-in Development 并单击 OK,以打开专门设计用于开发插件的透视图。
创建插件开发项目
- 选择 File - New - Plug-in Project(图 1),以启动 New Project Wizard。
图 1. New Project Wizard
- 在 Plug-in Project 页面上输入
com.mycompany.lpexExtensions 作为项目名,然后单击 Next。
- 在 Plug-in Content 页面上单击 Finish,以创建插件项目以及必要的文件夹和文件。
- 您应该在左侧的 Package Explorer 视图中看到新插件
com.mycompany.lpexExtensions,且 com.mycompany.lpexExtensions 的 plugin.xml 文件已在编辑区域中打开(图 2)。
图 2. OrderProcessing 项目
注册插件
LPEX Editor 之类的插件具有已定义的扩展点(编程接口),可供插件用于添加新功能。请使用 Dependencies 页面来指定这些插件,这样就可将插件提供的代码(以及在编写新操作时将要使用的代码)添加到插件项目的类路径中。修改依赖项列表并保存了文件后,PDE 将自动更新您的类路径。
要注册插件,请执行以下步骤:
- 在编辑器中,单击 Dependencies(使用底部的选项卡或 Overview 页面上文本中的链接),以切换到 Dependencies 页面。
- 在 Dependencies 页面上,单击 Add 按钮。
- 在 Plug-in Selection 窗口的 Select a Plug-in 字段中输入
com.ibm.lpex,可将此字段下显示的列表限定为这三个项指定的结果(图 3)。选择 com.ibm.lpex 并单击 OK。
图 3. 已完成的 Order 业务对象类型
- 在编辑器中,单击 Extensions(使用底部的选项卡),以切换到 Extensions 页面。
- 在 Extensions 页面上,单击 Add 按钮。
- 在 New Extension 窗口中,选择
com.ibm.lpex.preload 并单击 Finish。
com.ibm.lpex.preload 扩展点允许 LPEX Editor 插件在初始化后记录所有声明客户机插件的类加载器。这样做的效果是,当您打开 LPEX Editor 时,新操作已经就绪,可以使用了。
- 键入 Ctrl+S,以保存对 plugin.xml 的更改。
- 您已经完成了创建和配置插件所需的所有更新。下一步就要创建您的 LPEX Editor 用户操作。
创建用户操作类
每个 LPEX Editor 用户操作都是实现特定 LPEX Editor 接口的 Java 类。要创建这种类,请执行以下步骤:
- 在 Package Explorer 视图中,展开 src 文件夹,然后右键单击
com.mycompany.lpexExtensions 包。在上下文菜单中选择 New - Class(图 4)。
图 4. ProcessOrder 组件
- 在 New Java Class 窗口的 Name 输入字段中输入
InsertSemicolonAction。由于在启动 New Java Class Wizard 时已选择了 package 文件夹,因此已对 Source 文件夹和 Package 字段进行了预先填充。
- 单击 Interfaces 文本框旁边的 Add 按钮。
- 在 Implemented Interfaces Selection 窗口的 Choose interfaces 输入字段中输入
lp,将在输入过程中截短列表,使 LpexAction 成为列出的第一个项,从而处于选定状态(图 5)。
图 5. 创建 ProcessOrder 接口
- 单击 OK。此步骤会将
com.ibm.lpex.core.LpexAction 添加到 Interfaces 框。
- 实现
com.ibm.lpex.core.LpexAction 接口的 Java 类是 LPEX Editor 用户操作。New Java Class Wizard 应该与图 6 所示类似。单击 Finish,以创建该类,并打开进行编辑。
图 6. 已完成的 CustomerCheck 接口
编写用户操作代码
在 LPEX Editor 用户操作类中,应在 doAction() 方法中编写操作的代码,并使用 available() 方法定义操作何时可用的条件。
要编写用户操作的代码,请执行以下步骤:
- 在 InsertSemicolonAction.java 的编辑器中,将
doAction 方法和 available() 方法的参数从 arg0 更改为 view(由于输入参数是一个 LpexView 对象,因此为了提高后续代码的可读性而进行了此更改)。
- 为
doAction 方法和 available() 方法添加清单 1 中所示的语句。
清单 1. 定义实现新 LPEX 操作的 Java 类
public class InsertSemicolonAction implements LpexAction {
/* (non-Javadoc)
* @see com.ibm.lpex.core.LpexAction#doAction(com.ibm.lpex.core.LpexView)
*/
public void doAction(LpexView view) {
// TODO Auto-generated method stub
// go to the end of the line
view.doAction(view.actionId("contextEnd"));
// insert semicolon
view.doDefaultCommand("insertText ;");
// insert a new line and position the cursor at the beginning
view.doAction(view.actionId("openLine"));
}
/* (non-Javadoc)
* @see com.ibm.lpex.core.LpexAction#available(com.ibm.lpex.core.LpexView)
*/
public boolean available(LpexView view) {
// TODO Auto-generated method stub
// allow the action to run in any visible, writable document
return view.currentElement() != 0 && !view.queryOn("readonly");
}
|
- 通过选择 File - Save 保存更改,这将自动对类进行编译。
- 将在错误代码行旁边使用带“X”的红色圆圈对错误进行标记。如果出现了此情况,请将鼠标指针悬停在红色圆圈上方以显示错误消息,然后进行必要的更正并再次保存文件。如果没有错误,则请关闭 InsertSemicolonAction.java 的编辑器。

 |

|
测试用户操作
启动测试环境
Eclipse 提供了一个运行时环境,用于测试所开发的插件。要启动测试环境,请执行以下步骤:
- 在 plugin.xml 的编辑器中转到 Overview 页(单击 Overview 选项卡)。
- 在 Overview 页上单击 Launch a runtime workbench 或 Launch a runtime workbench in debug mode,这将启动 WebSphere Developer for zSeries 的另一个实例,其中部署了您的插件代码。
- 当出现标题为 Resource - Eclipse Platform 的 Workbench 窗口时,切换到此窗口。
定义用户操作
- 在 Resource - Eclipse Platform 窗口中,从菜单栏选择 Window - Preferences,以切换到 Preferences 页。
- 在 Preferences 窗口中,展开 LPEX Editor(左侧),然后选择 User Actions。
- 在 User Actions 面板中,在 Name 字段中输入
insertSemicolon,在 Class name 字段中输入 com.mycompany.lpexExtensions.InsertSemicolonAction,然后单击顶部的 Set 按钮(图 7)。
图 7. 在 Preferences 窗口中定义用户操作
为用户操作分配键序列
- 在 Preferences 窗口 LPEX Editor(左侧)下,选择 User Key Actions。
- 在 User Key Actions 面板中,在 Key 字段中输入
c-4,在 Action 字段中输入 insertSemicolon,然后单击顶部的 Set 按钮(图 8)。注意:通过分配键序列(如 Ctrl+4),可提供执行新操作的快捷键。可以选择所需的任何键序列。
- 单击 OK,以保存更改并关闭 Preferences 窗口。
图 8. 分配键序列
测试新用户操作
要测试新操作,您需要在 z/OS LPEX Editor 中打开一个文件。执行此操作的一个简单方法是,使用随 WebSphere Developer for zSeries 提供的示例代码创建一个新项目。由于我们的用户操作支持使用分号作为命令结尾的 PL/I 语法,因此我们将使用 PL/I 示例。
要测试您的操作,请执行以下步骤:
- 从菜单栏选择 File - New - Example…
- 在 New Example 窗口中,展开 Examples,再展开 Workstation PL/I,选择 PLI Sample 1,然后单击 Next。
- 在 z/OS Local Project 页上的 Project name 输入字段中输入
PLITest,然后单击 Finish。
- 如果出现 Confirm Perspective Switch 对话框,请单击 Yes。
- 在 z/OS Projects 视图中展开项目 PLITest,展开文件夹 pli,然后双击 HelloApp.pli,以对其进行编辑。
- 将光标置于文本行的行首,然后按 Ctrl+4。将执行您的新操作,在行尾放置一个分号,并在下面插入一个新行。
- 也可以使用操作命令从命令行运行您的操作。将光标置于文本行的行首,然后按 Esc,从而将光标置于命令行中。在命令行区域输入操作
insertSemicolon,并按 Enter 键。将随即执行您的新操作。
- 完成了新操作的测试后,请关闭 HelloApp.pli 的编辑器。您并不需要保存更改。
- 在测试 Workbench 窗口的菜单栏中选择 File - Exit,以关闭此 Workbench 窗口。
在 WebSphere Developer for zSeries 中安装新插件
从 PDE 导出插件
在开发期间,工作区内的插件将按原样使用,以便能对其进行快速测试和调试。当对新插件的操作满意后,您将希望发布此插件,以便其他人使用。发布插件的最简单方法是使用 Export Plug-ins and Fragments 向导:
- 从 WebSphere Developer for zSeries 菜单栏中选择 File - Export。
- 在 Select 窗口中选择 Deployable plug-ins and fragments,然后单击 Next。
- 在 Deployable plug-ins and fragments 窗口中,选中
com.mycompany.lpexExtensions 的复选框(在 Available Plug-ins and Fragments 文本框中列出)。
- 在 Export Options 字段中,从下拉列表中选择一种目录结构。可以采用以下三种格式之一部署插件:
- 单个 ZIP 文件,其内容可以解压缩到任何基于 Eclipse 的产品中。
- 目录结构,因而导出操作的目标位置可以为 Eclipse 安装的根目录。
- 用于更新站点的单个 JAR 存档。此选项将为每个插件创建一个 JAR,并将这些 JAR 文件置于所选目标位置的 plugins/ 子目录中。
- Destination 字段包含希望写入的目录结构的路径名称,请在其中输入
C:\WDzPlugins(图 9)。
图 9. 选择目标目录
- 还可以通过选中 Save Export Operation 的复选框来保存此导出操作的设置,从而可以在不必再次使用向导的情况下重复执行此导出操作。
- 单击 Finish 来启动构建过程,将显示一个消息对话框(图 10)。将随即开始进行构建。您不需要按任何按钮。当构建完成后,对话框将关闭。
图 10. 构建消息
将插件复制到您的 WebSphere Developer for zSeries 安装目录
- 使用 Windows Explorer 导航到 WDzPlugins 目录,以查看结果。其中应该包含一个子目录 plugins,对于选择导出的每个插件,其中都包含一个文件夹。此文件夹中包含一个 jar 文件(新操作类位于其中)和 plugin.xml(其中包含有关插件的信息),如图 11 中所示。
图 11. 导出目录
- 将 c:\WDzPlugins\plugins\com.mycompany.lpexExtensions_1.0.0 文件夹移动到 \WDz60\wdz\eclipse\plugins,其中 WDz60 是 WebSphere Developer for zSeries 安装目录(图 12)
图 12. 安装目录
验证插件正常工作
- 停止 WebSphere Developer for zSeries 并将其重启。
- 通过使用 Preferences 视图,将您的操作类与一个名称关联,并在 Preferences 中将此名称分配给一个键序列(请参见定义用户操作和向用户操作分配键序列,以回顾相关知识)。
- 在 z/OS Text Editor 中打开一个文件,并进行测试。如果一切正常,您现在应该有了一个可正常工作的插件。
结束语
Eclipse 提供了一个便于添加和部署新用户功能的体系结构。在本文中,我们利用此体系结构并使用自己的用户操作来扩展 WebSphere Developer for z/Series 中的 z/OS LPEX Editor。可以将本文中的步骤作为范例,以便根据其创建 LPEX Editor 的其他扩展。
参考资料 学习
获得产品和技术
讨论
关于作者  | |  |
John Casey 是 IBM 认证应用程序开发专家。在供职于 IBM 的 27 年间,他曾参与分布式平台和 zSeries 平台上的很多应用程序项目。他曾在 IBM 内部和外部举行过很多技术研讨会并负责撰写相关培训材料。他目前的主要职责是帮助全球的 IBM 客户了解和使用 IBM 开发工具(如 WebSphere Developer for zSeries 和 WebSphere Studio Asset Analyzer),以满足他们的应用程序转换需求。您可以通过 jcasey@us.ibm.com 与 John 联系。
|
对本文的评价
|