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

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

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 清单 3. 使用 ReconcilerpublicIReconcilergetReconciler(ISourceViewersourceViewer){returnnewMonoReconciler(newExprReconcilingStrategy((ExprViewer)sourceVi

清单 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 方法的实现是:

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

Tags:基于 JFace Text

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