WEB开发网
开发学院软件开发Java 基于 JFace Text Framework 构建全功能代码编辑器... 阅读

基于 JFace Text Framework 构建全功能代码编辑器: 第 11 部分:Text Folding

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示:Text FoldingText Folding(文本折叠)其实在 Eclipse 2.1 的时候就已经出现了苗头,在 Eclipse 3.0 之后,基于 JFace Text Framework 构建全功能代码编辑器: 第 11 部分:Text Folding,文本折叠的架构被重新设计了,开始逐渐变的实用,文本折叠标

Text Folding

Text Folding(文本折叠)其实在 Eclipse 2.1 的时候就已经出现了苗头,在 Eclipse 3.0 之后,文本折叠的架构被重新设计了,开始逐渐变的实用。我们先来了解一下JTF为了文本折叠做了哪些工作。

ProjectionViewer

SourceViewer 本身不支持文本折叠,所以 JTF 添加了一个 ProjectionViewer 专门支持文本折叠,它是 SourceViewer 的子类。

主从文档结构

JTF 是不可能神奇的知道哪些文本是可以折叠的,这些事情都得有人告诉它。在有文本折叠的情况下,我们能看到的只是一部分文字,但是创建的 IDocument 实例里面是包含了所有文字的,怎么才能知道哪些不该显示?所以 JTF 引入了一个 Master/Slave(主/从)文档架构,主文档就是包含了所有内容的文档,而从文档则只包含用户能看得见的内容,从文档的实现类是 ProjectionDocument。既然存在两个文档,那么就带了同步的问题,所以又引入了 ProjectionDocumentManager 来维护主从文档的同步。需要注意的是,ProjectionDocument 不能直接创建,必须通过 ProjectionDocumentManager 的 createSlaveDocument 方法来创建。

好消息是:我们在实现文本折叠时不用关心什么主从文档架构,因为这些都被JTF包装好了,在上层,我们看到的只有一个文档。

ProjectionAnnotation

在 Java 编辑器中可以看到,可以折叠的地方旁边都有个小图标,它显示了当前的折叠状态,并且可以点击它改变折叠状态。从界面上看,你应该能想到:这不就是标注吗?没错,确实是标注,只不过这个标注是显示在另外一条标尺上的,和显示错误标注的标尺不同罢了。文本折叠标注的实现类是 ProjectionAnnotation,在实现文本折叠的过程中,很重要的一部分工作就是及时刷新 ProjectionAnnotation。

1 2 3 4 5 6  下一页

Tags:基于 JFace Text

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