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

developerWorks 中国  >  Open source  >

为 Perl、Python 和 PHP 构建 Eclipse 开发环境

使用 Dynamic Languages Toolkit (DLTK) 创建自己的 IDE

developerWorks
前一页第 3 页,共 11 页后一页

文档选项

样例代码


对本教程的评价

帮助我们改进这些内容


开始 DLTK 项目

为简单起见,本教程将所有 Octave IDE 特性集成到一个简单的插件中。总体来说,就是用多个插件实现一个特性:这些插件分别包含核心类、UI 类、调试类等等。但是本教程的代码只需要一个插件,因此运行 Eclipse 时,单击 File > New > Project,选择 Plug-in Project 选项,然后创建一个新的插件项目。在示例代码中,项目名为 org.dworks.octaveide,并且插件类为 OctavePlugin(但是您可以选择自己喜欢的名称)。

配置 Octave 插件

在创建插件之后,下一步便是将一些扩展添加到 Octave IDE 插件的配置文件中:plugin.xml(需要单击 File > New > File 来创建该文件)。这些扩展告诉 Eclipse 这个插件如何在工作台中工作。首先,plugin.xml 文件需要两个简单的扩展:一个用于识别 Octave 编辑器,另一个用于识别需要编辑的文件的类型。清单 1 给出了第一个扩展,它定义 Octave 编辑器的特征。


清单 1. Octave IDE 编辑器扩展
					
<extension point="org.eclipse.ui.editors">
   <editor
      id="org.dworks.octaveide.editor.OctaveEditor"   
      class="org.dworks.octaveide.editor.OctaveEditor"
      contributorClass="org.dworks.octaveide.actions.OctaveActionContributor"
      default="true"
      icon="icons/oct.gif"
      name="%OctaveEditor.name">
      <contentTypeBinding
         contentTypeId="org.dworks.octaveide.octaveContentType">
      </contentTypeBinding>
   </editor>
</extension>

有关 DLTK 的想法

随着我对 DLTK 的了解不断增加,它也变得越来越奇妙。DLTK 创建者考虑到了各个方面,而本教程仅涉及到一些表面的东西。每次我琢磨 DLTK 是否支持我需要的特性时,它最终都会支持。可见,DLTK 的创建者考虑得很全面。

不过,DLTK 也有一些缺点。它是一个复杂的系统,并且关于它的文档也不多,甚至不存在。源代码中包含一些非常有用的注释,但不是很多。庆幸的是,DLTK 示例(专门针对 Tcl 编辑器)就如何在现实中使用 DLTK 解答了许多容易混淆的问题。

这个扩展包含几个非常重要的属性。class 属性定义构成编辑器的基类:OctaveEditor。随后您将创建这个类。contributorClass 属性识别为编辑器提供行为的类。default 属性要求 OctaveEditor 应该是相关文件的默认编辑器。name 属性识别将在编辑器中显示的文本。就像在 plugin.properties 文件中定义的一样,OctaveEditor.name 属性对应 “Octave Script Editor”。

这个扩展中最后需要解释的是 contentTypeBinding。Eclipse 包含一个内容类型注册表,用来表示文件格式和命名约定。通过将 contentTypeBinding 元素添加到编辑器的扩展,就可以将编辑器与文件后缀、文件名,甚至文件别名关联起来。但您的 Octave 编辑器只需要关注 *.m 文件,因此 org.eclipse.core.runtime.contentTypes 扩展很简单。清单 2 给出了第二个扩展。


清单 2. Octave IDE ContentType 扩展
					
<extension point="org.eclipse.core.runtime.contentTypes">
   <content-type
      id="org.dworks.octaveide.octaveContentType"   
      base-type="org.eclipse.core.runtime.text"
      file-extensions="m"
      name="%octaveContentType"
      priority="high">       
   </content-type>
</extension>

许多属性都可以用来定制内容类型,但是这个声明将 org.dworks.octaveide.octaveContentType 内容类型识别为基于文本的,并且与文件后缀 .m 相关联。priority 属性要求如果一个文件与多个内容类型相关联,某个类型必须具有很高的优先级。





回页首


创建 DLTK 语言工具箱类

使用 DLTK 的最大好处是定制 IDE 的工作方式很简单。这个定制可以通过 DLTK 的语言工具箱接口来实现(IDLTKCoreLanguageToolkitIDLTKDebugUILanguageToolkitIDLTKUILanguageToolkit 等)。实现这些接口之后,它们就给出配置 IDE 的各个方面的方法,比如解析、颜色使用、用户首选项和解释器的访问。

本教程主要关注 DLTK UI,因此仅需关心 IDLTKUILanguageToolkit。这个接口中的方法执行两项功能之一:它们或者返回处理编辑器配置的类,或者提供在 plugin.xml 中声明的配置对象的 ID。现在列出这些方法中的 7 个。

getEditorId(Object elementID)
返回编辑器的 ID
getTextTools()
返回 ScriptTextTools 对象,它定制如何在编辑器中显示文本
createSourceViewerConfiguration()
返回 ScriptSourceViewerConfiguration 对象,它配置编辑器的源代码查看器的操作
getPreferenceStore()
返回 IPreferenceStore 对象,它包含用户设置
getEditorPreferencePages()
返回与编辑器设置相关的首选项页面的 ID
getInterpreterPreferencePages()
返回与脚本解释器相关的首选项页面的 ID
getIntepreterId()
返回脚本解释器的 ID

在示例代码中,OctaveUILanguageToolkit 类使用对象和标识符补充了这些方法。在这个工具箱中,与列出的前两个方法对应的两个对象是 OctaveEditorOctaveTextTools





回页首


创建 Octave 编辑器和 Octave 文本工具

现在编辑器扩展已经配置完成,接下来首先需要做的就是创建 OctaveEditor。由于有了 DLTK,所以不需要编写很多代码:DLTK 的 ScriptEditor 类(OctaveEditor 的超类)帮助您处理大部分编辑器操作。您仅需一些配置方法。在 OctaveEditor 中,最重要的方法是 getTextTools(),它返回一个 ScriptTextTools 对象。

ScriptTextTools 类十分方便。这个中心类访问其他几个提供编辑器特性的类。通过编写 ScriptTextTools 的子类,编辑器能够定制这些特性的执行方式。Octave 编辑器创建一个称为 OctaveTextTools 的子类,它能够访问两个重要的对象:

OctavePartitionScanner
读取编辑器文本并决定分区界限
OctaveSourceViewerConfiguration
配置 ScriptSourceViewer 及其响应用户生成的事件的方式

这些对象在实现语法着色 时尤为重要 — 即根据文本的语法功能改变代码中文本的颜色。下一个主题将更加详细地解释这个特性。





回页首



前一页第 3 页,共 11 页后一页
    关于 IBM 隐私条约 联系 IBM 使用条款