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

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

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: AnnotationPreference不要以为什么样的标注画成什么样子是规定死了的,实际上它们都是通过 Eclipse 的 Preference 系统来控制的,基于 JFace Text Framework 构建全功能代码编辑器: 第 5 部分:Text Decoration(3),请打开 E

AnnotationPreference

不要以为什么样的标注画成什么样子是规定死了的,实际上它们都是通过 Eclipse 的 Preference 系统来控制的。请打开 Eclipse 的 Preference 设置,找到 General->Editors->Text Editors->Annotations,你会发现原来这里都可以控制。而这些选项就被包装在了 AnnotationPreference 中。如果你想添加一种标注的配置信息,可以通过程序方式,也可以通过 org.eclipse.ui.editors.markerAnnotationSpecification 扩展点。

MarkerAnnotationPreferences

AnnotationPreference 包装的只是一种标注的配置信息,要得到全部的信息,可以通过 MarkerAnnotationPreferences 类。

实现文本装饰功能

我打算实现一个语法错误检查的功能,如果用户输入的源代码有问题,则把它标记出来。让我们一步步开始这个过程。

SourceViewerDecorationSupport

不得不说和文本装饰相关的概念、接口非常的多,而我列举的只是一些最重要的,还不是全部。这么复杂的功能,要直接写到 SourceViewer 里面去不免显的臃肿,所以 SourceViewer 通过 SourceViewerDecorationSupport 来支持文本装饰功能,避免了把所有代码都塞到一个类里面去。

我在本系列第一部分提过,之所以没有用 Eclipse 标准 editors 扩展点来做演示,是因为 Editor 本身为我们隐藏了一些东西,文本装饰的支持就是其中之一。现在我们手动添加文本装饰的支持,在 ExprViewer 中增加一个 configureDecorationSupport 方法并在 configure 方法中调用它。代码如下:

清单 1. 在 ExprViewer 中使用 SourceViewerDecorationSupport

protected void configureDecorationSupport() 
{ 
// create support object 
decorationSupport = new SourceViewerDecorationSupport( 
 this, null, new DefaultMarkerAnnotationAccess(), ColorManager.getInstance()); 
 
// add other annotation preference 
MarkerAnnotationPreferences prefs = new MarkerAnnotationPreferences(); 
MarkerAnnotationPreferences.initializeDefaultValues( 
 Activator.getDefault().getPreferenceStore()); 
Iterator<Object> e = prefs.getAnnotationPreferences().iterator(); 
while(e.hasNext()) { 
 // add to support 
 decorationSupport.setAnnotationPreference((AnnotationPreference)e.next()); 
 } 
 
 // install support 
 decorationSupport.install(Activator.getDefault().getPreferenceStore()); 
} 

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

Tags:基于 JFace Text

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