WEB开发网
开发学院软件开发Java 构建基于 CDT 的编辑器,第 2 部分: 在 CDT 中显示... 阅读

构建基于 CDT 的编辑器,第 2 部分: 在 CDT 中显示文本

 2009-12-19 00:00:00 来源:WEB开发网   
核心提示: 步骤 2. 用 FastPartitioner 进行文档分区CDT 并不在每次键入文本时分析整个文档,而是使用由 Eclipse 文本编辑器 API 提供的分而治之的策略,构建基于 CDT 的编辑器,第 2 部分: 在 CDT 中显示文本(3),也就是说,它将 Document 分解为一些名为分

步骤 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 中的一个。

上一页  1 2 3 4 5 6 7  下一页

Tags:构建 基于 CDT

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接