构建基于 CDT 的编辑器,第 2 部分: 在 CDT 中显示文本
2009-12-19 00:00:00 来源:WEB开发网步骤 2. 用 FastPartitioner 进行文档分区
CDT 并不在每次键入文本时分析整个文档,而是使用由 Eclipse 文本编辑器 API 提供的分而治之的策略。也就是说,它将 Document 分解为一些名为分区 的互不包含的部分。这样,CDT 只检查包含了修改过的文本的分区。例如,如果要在多行注释中改变一个单词,CDT 只分析包含了注释的分区,而不分析其余代码。
用户界面(UI)插件中的 plugin.xml 文件创建了一个 org.eclipse.core.filebuffers.documentSetup 扩展点的扩展。当创建了一个 CDT Document 时,此扩展将其同一个 FastPartitioner 对象连接到一起,从而确定和管理其子部分。
在 CDT 中,此分区程序由四个 String 组成的一个数组来初始化,每个 String 命名了一个不同的分区:
模块化的不足之处
当我用 Eclipse 图形编辑器框架(GEF)API 创建一个图形编辑器时,很明显需要关注点分离。我很高兴拥有了成百上千个符合模型-视图-控制器(MVC)模式的单一功能的类。的确,它很复杂,但考虑到 GEF 编辑器中的图形、连接及相互关系,该复杂性就可以理解了。
然而,就我的观点来看,文本编辑器不需要达到这样的复杂度。毕竟,它只不过 是文本。我不必为了将每一个可变的 的实例显示为蓝色黑体字,而去读数页文档。您也许会认为我对分区及规则处理的讨论过于详细,但实际上我已经省略了一些内容。那些还能容忍我的懒惰的人,可以在这方面再做些努力。
多行注释
单行注释
字符串
字符
CDT 也用 FastCPartitionScanner 来初始化分区程序。简单来说,Eclipse 扫描程序将 Document 范围中的字符转换为一系列存有任意数据 Object 的 Token。在运用 FastCPartitionScanner 的情况下,每个 Token 包含有为当前分区命名的四个 String 中的一个。
- ››基于IP地址的vsftp服务器
- ››构建Windows 8风格应用23-App Bar概述及使用规范
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››构建域名服务器(DNS)
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››构建Android平台Google Map应用
- ››基于Windows Azure的云计算应用设计
- ››构建WinForm 通用速选(全选、反选、清空)组件
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
更多精彩
赞助商链接