构建基于 CDT 的编辑器,第 2 部分: 在 CDT 中显示文本
2009-12-19 00:00:00 来源:WEB开发网在继续介绍前,需要解释一下破坏程序 和修复程序 的功能。本质上,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。
- ››基于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编程设计的创建及应用
更多精彩
赞助商链接