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

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

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 清单 2. 添加新的 Ruler 列//createviewerCompositeRulerruler=newCompositeRuler();AnnotationRulerColumncolumn=newAnnotationRulerColumn(12,newDefaultMarkerAnno

清单 2. 添加新的 Ruler 列

// create viewer 
CompositeRuler ruler = new CompositeRuler(); 
AnnotationRulerColumn column = new AnnotationRulerColumn( 
 12, new DefaultMarkerAnnotationAccess()); 
column.addAnnotationType("org.eclipse.ui.workbench.texteditor.error"); 
column.addAnnotationType("jtf.tutorial.annotation.undeclared.variable"); 
ruler.addDecorator(0, column); 

注意如果用了 CompositeRuler,添加的实际上是 IVerticalRulerColumn 的实现了。

在适当的时候更新文本折叠标注

最后一步就是找一个合适的时机来更新文本折叠标注,第一时间你可能会想到添加一个 IDocumentListener,这样文本每次变化的时候就可以更新文本折叠标注。这是可以的,不过我要用另外一种方式。看看 SourceViewerConfiguration,它有一个 getReconciler 方法,返回类型是 IReconciler 接口。Reconciler 翻译过来是“调解人”,确实很是费解,你可以做如下理解:现在有一段文字,在你没有编辑它的时候,可以认为文字处于一种稳定的状态;当你开始编辑的时候,由于你不断的输入新字符,因此文字的稳定状态被打破了,各种建立好的关系被破坏,于是就出现了一个调解人来使破坏后的文字重回稳定状态。所以,Reconciler 会在你编辑文字之后被调用,但不是立刻!这样可以避免不必要的调用,提高性能。缺点是你必须等那么一小会儿才能看到结果。在本系列第二部分中,已经提到了 PresentationReconciler,虽然它并不是实现了 IReconciler 接口,但是其概念是一致的。

更新文本折叠标注的事情很适合用 Reconciler 来实现,所以我覆盖了 ExprConfiguration 的 getReconciler 方法:

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

Tags:基于 JFace Text

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