基于 JFace Text Framework 构建全功能代码编辑器: 第 11 部分:Text Folding
2010-03-18 00:00:00 来源:WEB开发网清单 3. 使用 Reconciler
public IReconciler getReconciler(ISourceViewer sourceViewer) {
return new MonoReconciler(new ExprReconcilingStrategy((ExprViewer)sourceViewer),
false);
}
我返回了一个 MonoReconciler,这是 JTF 缺省提供的。为了创建 MonoReconciler,还必须提供一个 IReconcilingStrategy 接口的实现,它是事情真正完成的地方,下面是 ExprReconcilingStrategy 的实现:
清单 4. ExprReconcilingStrategy 实现了 IReconcilingStrategy 接口
public class ExprReconcilingStrategy implements IReconcilingStrategy {
private IDocument doc;
private ExprViewer viewer;
public ExprReconcilingStrategy(ExprViewer viewer) {
this.viewer = viewer;
}
private void internalReconcile() {
TokenList list = TokenManager.getTokenList(doc);
viewer.updateProjectionAnnotations(list.getLineRanges());
}
public void reconcile(IRegion partition) {
internalReconcile();
}
public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) {
internalReconcile();
}
public void setDocument(IDocument document) {
doc = document;
}
}
关键的代码在 internalReconcile 中,只是重新得到每条语句的范围,然后刷新文本折叠标注,updateProjectionAnnotations 方法的实现是:
更多精彩
赞助商链接