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

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

 2009-12-19 00:00:00 来源:WEB开发网   
核心提示: 在继续介绍前,需要解释一下破坏程序 和修复程序 的功能,构建基于 CDT 的编辑器,第 2 部分: 在 CDT 中显示文本(5),本质上,IPresentationDamager 的目的是确定文档分区的哪一个区域被给定 DocumentEvent 所影响,如 清单 1 所示,每个DefaultD

在继续介绍前,需要解释一下破坏程序 和修复程序 的功能。本质上,IPresentationDamager 的目的是确定文档分区的哪一个区域被给定 DocumentEvent 所影响。因而,尽管有个令人讨厌的名字,破坏程序实际上只是一个破坏分析程序。IPresentationRepairer 使用破坏程序的结果,来创建一个包含用于改变文本颜色及样式所需信息的 TextPresentation。简单来说,DefaultDamagerRepairer 执行了这两个功能,通过为分区创建一个 TextPresentation 来对事件作出响应。

在 CSourceViewer 开始运行前,它访问了 CSourceViewerConfiguration 提供的对象,并安装了 PresentationReconciler。此安装允许协调程序监听 TextEvent。TextEvent 同 DocumentEvent 类似,不同之处就是 TextEvent 包含新文本及被替换过的文本,DocumentEvent 只包含新文本。

PresentationReconciler 接收到 TextEvent 后,它确定哪一个分区包含这个已改变的文本并提醒相应的 DefaultDamagerRepairer。即使该协调程序针对每个分区都有一个修复程序,DefaultDamagerRepairer 在所有类中也都完成相同的任务。与 FastPartitioner 类似,它确定包含损坏的第一行的开始和分区的开始。其中的最大值被认为是损坏的开始。它通过计算分区中的结束位置及分区中未更改文本的结束位置的最小值来寻找损坏的结束位置。DefaultDamagerRepairer 返回一个 IRegion,它通过提供一个偏移量及长度来表示 Document 的一部分。

步骤 4. 规则处理

接收到损坏信息后,PresentationReconciler 让分区的 DefaultDamagerRepairer 创建新的 TextPresentation,并将其应用于遭到破坏的区域。如 清单 1 所示,每个DefaultDamagerRepairer 都由一个与分区相匹配的扫描程序来初始化。修复程序首先让扫描程序分析遭到破坏的区域并生成一些 Token。

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

Tags:构建 基于 CDT

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