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

developerWorks 中国  >  WebSphere  >

在 WebSphere Developer for zSeries v6.0 中为 LPEX 编辑器创建用户概要

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 中级

John Casey (jocasey@us.ibm.com), WebSphere Developer for z/Series 全球技术销售支持, IBM

2006 年 9 月 04 日

LPEX 用户概要允许您为特定任务组织 LPEX 编辑器自定义,而不用手动自定义 LPEX 编辑器。本文介绍如何在WebSphere® Developer for zSeries v6.0 中创建和实现用户概要。

引言

在我以前的文章 Extending the LPEX Editor in WebSphere Developer for zSeries v6.0 中,我介绍了如何创建和部署新的 LPEX 操作。要使用新的操作,您需要手动识别 LPEX 编辑器的此操作及其快捷键。有了用户概要,您就不用手动自定义 LPEX 编辑器了。

用户概要的另一个好处在于提供了一种方法来对 LPEX 编辑器自定义进行分组。通过创建多个用户概要,您可以针对某一特定需求激活一组自定义。使用 LPEX 编辑器基本概要,您可以将编辑器配置为采用几种流行编辑器(例如 ISPF、XEDIT、VI 和 Emacs)的键盘与个性化命令。当选择要使用哪一个基本概要时,LPEX 编辑器会为正在打开的文档运行一组相应的定义,如果是手动调用,则 LPEX 编辑器会为已打开的文档运行一组相应的定义。

您可以通过 userProfile 方法将用户概要实现为 Java ™ 类。然后使用 userProfile 方法通过调用 LPEX 命令和操作来编写 LPEX 自定义代码。当 LPEX 编辑器打开一个新文档时,它会发出 updateProfile 命令,该命令将调用定义为缺省用户概要的类的 userProfile 方法。

LPEX 提供了三种上下文(或者说是范围),它们决定哪个编辑器设置对正在编辑的文档有效:

  • install 上下文标识从 com.ibm.lpex.core 包中的 Install.properties 文件读取的编辑器设置。
  • Default 编辑器设置位于 Preferences 视图的 LPEX 编辑器页面中。它们可通过 Install.properties 文件设置,或者在注册客户端 LPEX 插件时由用户手动设置,如本文所介绍的。
  • 最后,current 上下文描述具有编辑焦点的特定文档的设置。每个文档都具有各自的current 上下文设置。通过使用这些设置,可以使编辑某个文档中的文本时可用的操作、键分配或编辑器参数与编辑另一个文档中的文本时不同。

第一次打开一个文档时,其上下文设置为 default。当执行 preload 方法时,我们将利用这一事实将缺省用户概要设置为用户概要类。因而,当打开 LPEX 编辑器时,它将运行 userProfile classname 方法,此方法定义新的操作,分配快捷键,并将我们的首选编辑器样式设置为 ISPF。

在本文中,我们将向您介绍如何为 LPEX 编辑器创建、测试和部署用户概要。尽管您不需要熟悉 Java 或 Eclipse 来按照本文的指导一步步进行操作,但我们假定您对 Eclipse 或基于 Eclipse 的某种产品有所了解,例如 WebSphere Developer for zSeries。

创建用户概要插件

在 Eclipse 平台中,插件是打包函数的基本单元。您可以使用插件清单文件 plugin.xml 描述插件。我们的 LPEX 编辑器用户概要将被打包为插件。

尽管可以使用任何 Java IDE 构建 Eclipse 插件,但 Eclipse 插件开发环境(Eclipse Plug-in Development Environment,PDE)提供了简化插件开发的工具。例如,PDE 创建了支持插件定义和部署的项目结构,以及 Java 编码。PDE 提供向导来简化清单文件和支持 Java 类的定义。

启用插件开发环境

  1. 启动 WebSphere Developer for zSeries。当提示输入工作区名称时 ,创建一个在其中开发插件的新工作区。
  2. 从 Workbench 菜单栏选择 Windows - Preferences
  3. 在左侧的 Preferences 视图中,展开 Workbench 并选择 Capabilities
  4. 在 Preferences 视图右侧的 Capabilities 窗格中,展开 Eclipse Developer 并选中 Eclipse Plug-in DevelopmentEclipse Plug-in Development Examples 的复选框。
  5. 在 Preferences 视图的底部单击 OK,以保存更改并关闭窗口。

创建插件开发项目

  1. 从 Workbench 菜单栏选择 Window - Open Perspective - Other ...
  2. 在 Select Perspective 窗口中,选择 Plug-in Development 并单击 OK,以打开为插件开发人员提供帮助的透视图。
  3. 通过选择 File - New - Plug-in Project 启动 New Project Wizard。
  4. 在 Plug-in Project 页面上输入 com.mycompany.lpexExtensions 作为项目名,然后单击 Next
  5. 在 Plug-in Content 页面上单击 Finish,以创建插件项目以及必要的文件夹和文件。

    您应该在左侧的 Package Explorer 视图中看到新插件 com.mycompany.lpexExtensions,以及在编辑器区域打开的该插件的 plugin.xml 文件。

    提示:编辑器中活动文件的选项卡为蓝色,如果将鼠标悬停在蓝色区域上,则会显示文件 com.mycompany.lpexExtensions/plugin.xml 的全名。

完成插件清单文件

插件(例如 LPEX 编辑器)可能已定义了客户端插件可以使用的扩展点。这些扩展点是基本编程接口。插件清单捕获客户端插件将使用哪些 LPEX 扩展点。

  1. 在编辑器中,单击 Dependencies(使用底部的选项卡或 Overview 页面上文本中的链接),以切换到 Dependencies 页面。
  2. 在 Dependencies 页面上,单击 Add 按钮。
  3. 在 Plug-in Selection 窗口上的 Select a Plug-in 字段中输入 com.ibm.lpex,这样会将显示在此字段下的列表减少为三个条目。选择 com.ibm.lpex 并单击 OK。此步骤会将这些插件添加到插件项目的类路径中。
  4. 在编辑器中,单击 Extensions(使用底部的选项卡),以切换到 Extensions 页面。
  5. 在 Extensions 页面上,单击 Add 按钮。
  6. 在 New Extension 窗口中,选择 com.ibm.lpex.preload 并单击 Finish
  7. 右键单击 com.ibm.lpex.preload 并单击 New - preload
  8. 在 Extension Element Details 下,将生成的类名称更改为com.mycompany.lpexExtensions.Preload
  9. Ctrl+S,以将更改保存到 plugin.xml。

创建 Preload 类

Preload Java 类定义了 preload 方法。此方法(由 LPEX 编辑器调用)将我们的用户概要类定义为缺省用户概要。

要创建这种类,请执行以下步骤:

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

    图 1. 指定 Preload 类
    指定 Preload 类

  2. 在 New Java Class 窗口中,验证 Source FolderPackage 字段是否分别预填写为com.mycompany.lpexExtensions/srccom.mycompany.lpexExtensions,这样填写是因为您已从包文件夹启动了 New Java Class 向导。
  3. Name 字段中输入 Preload
  4. 单击 Interfaces 文本框旁边的 Add 按钮。
  5. 在 Implemented Interfaces Selection 窗口的 Choose interfaces 字段中输入 lpexp,这样就缩短了您键入的列表。
  6. 选择 LpexPreload 并单击 OK。此步骤会将 com.ibm.lpex.core.LpexPreload 添加到 Interfaces 框。
  7. 单击 Finish,以创建此类并打开它进行编辑。
  8. 在 Preload.java 的编辑器中,将下列语句添加到现有 import 语句之后:
    import com.ibm.lpex.core.LpexView;
  9. 在 Preload.java 的编辑器中,将下列语句添加到 preload 方法中:
    LpexView.doGlobalCommand("set default.updateProfile.userProfile com.mycompany.lpexExtensions.UserProfile1");
  10. Ctrl+S,以保存更改。
  11. 验证您的代码是否与清单 1 中的代码类似。您可以忽略注释。确保没有错误。
  12. 关闭 Preload.java 的编辑器。


清单 1. 已完成的 Preload 类定义(已删除了模板生成的注释)

							
package com.mycompany.lpexExtensions;
import com.ibm.lpex.alef.LpexPreload;
import com.ibm.lpex.core.LpexView;
public class Preload implements LpexPreload {
	public void preload() {
		LpexView.doGlobalCommand(
			"set default.updateProfile.userProfile
			com.mycompany.lpexExtensions.UserProfile1" );
	}
}
						

创建用户概要类

将 LPEX 编辑器用户概要实现为具有 userProfile 方法的 Java 类。然后通过调用 userProfile 方法中的 LPEX 命令和操作来编写 LPEX 自定义代码。

要创建这种类,请执行以下步骤:

  1. 在 Package Explorer 视图中,展开 src 文件夹,然后右键单击 com.mycompany.lpexExtensions 包。在上下文菜单中选择 New - Class
  2. 在 New Java Class 窗口中,验证 Source FolderPackage 字段是否分别预填写为com.mycompany.lpexExtensions/srccom.mycompany.lpexExtensions
  3. Name 字段中输入 UserProfile1
  4. 单击 Finish,以创建此类并打开它进行编辑。
  5. 在 UserProfile1.java 编辑器中,在 package 语句后添加两个import 语句,如清单 2 所示。
  6. 添加 userProfile 方法以及其所有语句,如清单 2 所示。
  7. Ctrl+S,以保存更改。
  8. 验证您的代码是否与清单 2 中的代码类似。您可以忽略注释。确保没有错误。
  9. 关闭 UserProfile1.java 的编辑器。


清单 2. 已完成的 UserProfile1 类(已删除了模板生成的注释)

						
package com.mycompany.lpexExtensions;
import com.ibm.lpex.core.LpexAction;
import com.ibm.lpex.core.LpexView;
public class UserProfile1 {
	public static void userProfile(LpexView lpexView) {
		// define new action
		lpexView.defineAction("insertSemicolon2Action", new LpexAction() {
			public void doAction(LpexView view) {
				// go to the end of the line
				view.doAction(view.actionId("contextEnd"));
				// insert a semicolon and comment string
				view.doCommand("insertText ; /*  */");
				// position the cursor in the middle of the comment
				view.doAction(view.actionId("left"));
				view.doAction(view.actionId("left"));
				view.doAction(view.actionId("left"));
			}

			public boolean available(LpexView view) {
				// allow the action to run for any visible text line in a writable document
				return view.currentElement() != 0 && !view.queryOn("readonly");
			}
		});
		// Assign keys "Ctrl+5" to run insertSemicolon2Action
		lpexView.doCommand("set keyAction.c-5 insertSemicolon2Action");

		// set ispf as default editor style
		lpexView.doDefaultCommand("set default.updateProfile.baseProfile ispf");
		/* lpexView.doDefaultCommand("updateProfile"); */
	}
}					

测试用户概要插件

Eclipse 提供了一个运行时环境,运行时 Workbench,以便在开发插件的过程中同时对其进行测试。要启动该运行时 Workbench,请执行以下步骤:

  1. 转到 plugin.xml 的编辑器中的 Overview 页面(单击 Overview 选项卡)。
  2. 在 Overview 页面上,单击 Launch a runtime workbench,这样就启动了可以访问您的插件代码的 WebSphere Developer for zSeries 的另一个实例。

观察 Preload 类的效果

  1. 通过从菜单栏选择 Window - Preferences 来打开 Preferences 页面。
  2. 在 Preferences 窗口中,展开左侧的 LPEX Editor 并选择 User Profiles。请注意,Preload 方法已被调用,并将 com.mycompany.lpexExtensions.UserProfile1 设置为缺省用户概要,如图 2 所示:

    图 2. 观察 Preload 类的效果
    观察 Preload 类的效果

  3. 单击 Cancel,以关闭 Preferences 窗口。

测试用户概要

要测试新操作,您需要在 z/OS LPEX 编辑器中打开一个文件。执行此操作的一个简单方法是,使用随 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+5。将执行您的新操作,在这一行末尾加分号,并在其下面新插入一行。
  7. 也可以使用操作命令从命令行运行您的操作。将光标置于文本行的行首,然后按 Esc,从而将光标置于命令行中。在命令行区域输入 action insertSemicolon2Action,然后按 Enter。将随即执行您的新操作。
  8. 测试新操作结束后,关闭 HelloApp.pli 的编辑器。无需保存更改。
  9. 在测试 Workbench 窗口的菜单栏中选择 File - Exit,以关闭此 Workbench 窗口。

将插件部署到 WebSphere Developer for zSeries

要部署插件,首先需要将其从 PDE 导出,然后将该插件复制到 WebSphere Developer for zSeries 安装目录。

从 PDE 导出插件

在开发过程中,工作区中的插件“按原样”使用,这样您就可以快速对其进行测试和调试。当对新插件的操作满意后,您将希望发布此插件,以便其他人使用。发布插件最简单的方法是使用导出插件和代码片段向导:

  1. 从 WebSphere Developer for zSeries 菜单栏中选择 File - Export...
  2. 在 Select 窗口中选择 Deployable plug-ins and fragments,然后单击 Next
  3. 在 Deployable plug-ins and fragments 窗口中,选中在 Available Plug-ins and Fragments 文本框中列出的 com.mycompany.lpexExtensions 复选框。
  4. 在 Export Options 字段中,从列表选择目录结构。您可将插件部署为如下三种格式之一:
    • 单个 ZIP 文件,其内容可以解压缩到任何基于 Eclipse 的产品中。
    • 目录结构,因而导出操作的目标位置可以为 Eclipse 安装的根目录。
    • 更新站点的单个 JAR 存档。此选项为每个插件创建一个 JAR,并将这些 JAR 置于所选目的地的 /plugins/ 子目录中。
  5. 在 Destination 字段(其包含您希望在其中写入目录结构的路径名称)中输入 C:\WDzPlugins
  6. 单击 Finish 以启动构建过程,这样会显示一个消息框,指示正在进行构建。您不需要按任何按钮。当完成构建后,此对话框将关闭。

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

  1. 通过 Windows Explorer 导航至 WDzPlugins 目录,以查看结果。该目录应该包含一个子目录 plugins,其包含您选择导出的插件的文件夹。此文件夹包含一个 JAR 文件(它包含您的 preload 和用户概要代码)和 plugin.xml(它是您插件的清单)。
  2. c:\WDzPlugins\plugins\com.mycompany.lpexExtensions_1.0.0 文件夹移至 WDz60\wdz\eclipse\plugins,其中,WDz60 是 WebSphere Developer for zSeries 安装目录。

验证插件是否正常工作

  1. 停止 WebSphere Developer for zSeries 并重新启动它。
  2. 验证该用户概要是否已添加到 Preferences 视图中的 LPEX editor User Profile 页面。
  3. 在 LPEX 编辑器中打开 PL/I 文件,并确认 insertSemicolon2Action 是否正常工作。

结束语

用户概要有助于轻松自定义 LPEX 编辑器。它们使得不需要手动定义,并为特殊任务提供了一种组织编辑器设置的方法。本文介绍了如何在 WebSphere Developer for z/Series 中扩展 LPEX 编辑器,以便在编辑器打开时自动加载用户概要。遵循本文的步骤,您将获得一个模型,您可以采用此模型为 LPEX 编辑器创建自己的用户概要。



参考资料

学习

讨论


关于作者

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 使用条款