IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

扩展 WebSphere Developer for zSeries v6.0 中的 LPEX Editor

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 中级

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 插件开发环境提供了多个工具来简化插件的开发工作。要启用对这些工具的访问,请执行以下步骤:

  1. 从 WebSphere Developer for zSeries 菜单栏选择 Windows - Preferences
  2. 在左侧的 Preferences 视图中,展开 Workbench 并选择 Capabilities
  3. 在 Preferences 视图右侧的 Capabilities 窗格中,展开 Eclipse Developer 并选中 Eclipse Plug-in DevelopmentEclipse Plug-in Development Examples 的复选框。
  4. 在 Preferences 视图的底部单击 OK,以保存更改并关闭窗口。

打开 Plug-in Development 透视图

从 WebSphere Developer for zSeries 菜单栏选择 Window-Open Perspective-Other。在 Select Perspective 窗口中,选择 Plug-in Development 并单击 OK,以打开专门设计用于开发插件的透视图。

创建插件开发项目

  1. 选择 File - New - Plug-in Project(图 1),以启动 New Project Wizard。

    图 1. New Project Wizard
    New Project Wizard

  2. 在 Plug-in Project 页面上输入 com.mycompany.lpexExtensions 作为项目名,然后单击 Next
  3. 在 Plug-in Content 页面上单击 Finish,以创建插件项目以及必要的文件夹和文件。
  4. 您应该在左侧的 Package Explorer 视图中看到新插件 com.mycompany.lpexExtensions,且 com.mycompany.lpexExtensions 的 plugin.xml 文件已在编辑区域中打开(图 2)。

    图 2. OrderProcessing 项目
    OrderProcessing 项目

注册插件

LPEX Editor 之类的插件具有已定义的扩展点(编程接口),可供插件用于添加新功能。请使用 Dependencies 页面来指定这些插件,这样就可将插件提供的代码(以及在编写新操作时将要使用的代码)添加到插件项目的类路径中。修改依赖项列表并保存了文件后,PDE 将自动更新您的类路径。

要注册插件,请执行以下步骤:

  1. 在编辑器中,单击 Dependencies(使用底部的选项卡或 Overview 页面上文本中的链接),以切换到 Dependencies 页面。
  2. 在 Dependencies 页面上,单击 Add 按钮。
  3. 在 Plug-in Selection 窗口的 Select a Plug-in 字段中输入 com.ibm.lpex,可将此字段下显示的列表限定为这三个项指定的结果(图 3)。选择 com.ibm.lpex 并单击 OK

    图 3. 已完成的 Order 业务对象类型
    已完成的 Order 业务对象类型

  4. 在编辑器中,单击 Extensions(使用底部的选项卡),以切换到 Extensions 页面。
  5. 在 Extensions 页面上,单击 Add 按钮。
  6. 在 New Extension 窗口中,选择 com.ibm.lpex.preload 并单击 Finish
  7. com.ibm.lpex.preload 扩展点允许 LPEX Editor 插件在初始化后记录所有声明客户机插件的类加载器。这样做的效果是,当您打开 LPEX Editor 时,新操作已经就绪,可以使用了。
  8. 键入 Ctrl+S,以保存对 plugin.xml 的更改。
  9. 您已经完成了创建和配置插件所需的所有更新。下一步就要创建您的 LPEX Editor 用户操作。

创建用户操作类

每个 LPEX Editor 用户操作都是实现特定 LPEX Editor 接口的 Java 类。要创建这种类,请执行以下步骤:

  1. 在 Package Explorer 视图中,展开 src 文件夹,然后右键单击 com.mycompany.lpexExtensions 包。在上下文菜单中选择 New - Class(图 4)。

    图 4. ProcessOrder 组件
    ProcessOrder 组件

  2. 在 New Java Class 窗口的 Name 输入字段中输入 InsertSemicolonAction。由于在启动 New Java Class Wizard 时已选择了 package 文件夹,因此已对 Source 文件夹和 Package 字段进行了预先填充。
  3. 单击 Interfaces 文本框旁边的 Add 按钮。
  4. 在 Implemented Interfaces Selection 窗口的 Choose interfaces 输入字段中输入 lp,将在输入过程中截短列表,使 LpexAction 成为列出的第一个项,从而处于选定状态(图 5)。

    图 5. 创建 ProcessOrder 接口
    创建 ProcessOrder 接口

  5. 单击 OK。此步骤会将 com.ibm.lpex.core.LpexAction 添加到 Interfaces 框。
  6. 实现 com.ibm.lpex.core.LpexAction 接口的 Java 类是 LPEX Editor 用户操作。New Java Class Wizard 应该与图 6 所示类似。单击 Finish,以创建该类,并打开进行编辑。

    图 6. 已完成的 CustomerCheck 接口
    已完成的 CustomerCheck 接口

编写用户操作代码

在 LPEX Editor 用户操作类中,应在 doAction() 方法中编写操作的代码,并使用 available() 方法定义操作何时可用的条件。

要编写用户操作的代码,请执行以下步骤:

  1. 在 InsertSemicolonAction.java 的编辑器中,将 doAction 方法和 available() 方法的参数从 arg0 更改为 view(由于输入参数是一个 LpexView 对象,因此为了提高后续代码的可读性而进行了此更改)。
  2. 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");
    			} 
    	

  3. 通过选择 File - Save 保存更改,这将自动对类进行编译。
  4. 将在错误代码行旁边使用带“X”的红色圆圈对错误进行标记。如果出现了此情况,请将鼠标指针悬停在红色圆圈上方以显示错误消息,然后进行必要的更正并再次保存文件。如果没有错误,则请关闭 InsertSemicolonAction.java 的编辑器。




回页首


测试用户操作

启动测试环境

Eclipse 提供了一个运行时环境,用于测试所开发的插件。要启动测试环境,请执行以下步骤:

  1. 在 plugin.xml 的编辑器中转到 Overview 页(单击 Overview 选项卡)。
  2. 在 Overview 页上单击 Launch a runtime workbenchLaunch a runtime workbench in debug mode,这将启动 WebSphere Developer for zSeries 的另一个实例,其中部署了您的插件代码。
  3. 当出现标题为 Resource - Eclipse Platform 的 Workbench 窗口时,切换到此窗口。

定义用户操作

  1. 在 Resource - Eclipse Platform 窗口中,从菜单栏选择 Window - Preferences,以切换到 Preferences 页。
  2. 在 Preferences 窗口中,展开 LPEX Editor(左侧),然后选择 User Actions
  3. 在 User Actions 面板中,在 Name 字段中输入 insertSemicolon,在 Class name 字段中输入 com.mycompany.lpexExtensions.InsertSemicolonAction,然后单击顶部的 Set 按钮(图 7)。

    图 7. 在 Preferences 窗口中定义用户操作
    在 Preferences 窗口中定义用户操作

为用户操作分配键序列

  1. 在 Preferences 窗口 LPEX Editor(左侧)下,选择 User Key Actions
  2. 在 User Key Actions 面板中,在 Key 字段中输入 c-4,在 Action 字段中输入 insertSemicolon,然后单击顶部的 Set 按钮(图 8)。注意:通过分配键序列(如 Ctrl+4),可提供执行新操作的快捷键。可以选择所需的任何键序列。
  3. 单击 OK,以保存更改并关闭 Preferences 窗口。

    图 8. 分配键序列
    分配键序列

测试新用户操作

要测试新操作,您需要在 z/OS LPEX Editor 中打开一个文件。执行此操作的一个简单方法是,使用随 WebSphere Developer for zSeries 提供的示例代码创建一个新项目。由于我们的用户操作支持使用分号作为命令结尾的 PL/I 语法,因此我们将使用 PL/I 示例。

要测试您的操作,请执行以下步骤:

  1. 从菜单栏选择 File - New - Example
  2. 在 New Example 窗口中,展开 Examples,再展开 Workstation PL/I,选择 PLI Sample 1,然后单击 Next
  3. 在 z/OS Local Project 页上的 Project name 输入字段中输入 PLITest,然后单击 Finish
  4. 如果出现 Confirm Perspective Switch 对话框,请单击 Yes
  5. 在 z/OS Projects 视图中展开项目 PLITest,展开文件夹 pli,然后双击 HelloApp.pli,以对其进行编辑。
  6. 将光标置于文本行的行首,然后按 Ctrl+4。将执行您的新操作,在行尾放置一个分号,并在下面插入一个新行。
  7. 也可以使用操作命令从命令行运行您的操作。将光标置于文本行的行首,然后按 Esc,从而将光标置于命令行中。在命令行区域输入操作 insertSemicolon,并按 Enter 键。将随即执行您的新操作。
  8. 完成了新操作的测试后,请关闭 HelloApp.pli 的编辑器。您并不需要保存更改。
  9. 在测试 Workbench 窗口的菜单栏中选择 File - Exit,以关闭此 Workbench 窗口。




回页首


在 WebSphere Developer for zSeries 中安装新插件

从 PDE 导出插件

在开发期间,工作区内的插件将按原样使用,以便能对其进行快速测试和调试。当对新插件的操作满意后,您将希望发布此插件,以便其他人使用。发布插件的最简单方法是使用 Export Plug-ins and Fragments 向导:

  1. 从 WebSphere Developer for zSeries 菜单栏中选择 File - Export
  2. 在 Select 窗口中选择 Deployable plug-ins and fragments,然后单击 Next
  3. 在 Deployable plug-ins and fragments 窗口中,选中 com.mycompany.lpexExtensions 的复选框(在 Available Plug-ins and Fragments 文本框中列出)。
  4. 在 Export Options 字段中,从下拉列表中选择一种目录结构。可以采用以下三种格式之一部署插件:
    • 单个 ZIP 文件,其内容可以解压缩到任何基于 Eclipse 的产品中。
    • 目录结构,因而导出操作的目标位置可以为 Eclipse 安装的根目录。
    • 用于更新站点的单个 JAR 存档。此选项将为每个插件创建一个 JAR,并将这些 JAR 文件置于所选目标位置的 plugins/ 子目录中。
  5. Destination 字段包含希望写入的目录结构的路径名称,请在其中输入 C:\WDzPlugins(图 9)。

    图 9. 选择目标目录
     选择目标目录

  6. 还可以通过选中 Save Export Operation 的复选框来保存此导出操作的设置,从而可以在不必再次使用向导的情况下重复执行此导出操作。
  7. 单击 Finish 来启动构建过程,将显示一个消息对话框(图 10)。将随即开始进行构建。您不需要按任何按钮。当构建完成后,对话框将关闭。

    图 10. 构建消息
    构建消息

将插件复制到您的 WebSphere Developer for zSeries 安装目录

  1. 使用 Windows Explorer 导航到 WDzPlugins 目录,以查看结果。其中应该包含一个子目录 plugins,对于选择导出的每个插件,其中都包含一个文件夹。此文件夹中包含一个 jar 文件(新操作类位于其中)和 plugin.xml(其中包含有关插件的信息),如图 11 中所示。

    图 11. 导出目录
    导出目录

  2. 将 c:\WDzPlugins\plugins\com.mycompany.lpexExtensions_1.0.0 文件夹移动到 \WDz60\wdz\eclipse\plugins,其中 WDz60 是 WebSphere Developer for zSeries 安装目录(图 12)

    图 12. 安装目录
    安装目录

验证插件正常工作

  1. 停止 WebSphere Developer for zSeries 并将其重启。
  2. 通过使用 Preferences 视图,将您的操作类与一个名称关联,并在 Preferences 中将此名称分配给一个键序列(请参见定义用户操作和向用户操作分配键序列,以回顾相关知识)。
  3. 在 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 联系。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款