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

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

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 我没有增加自定义的标注,所以这个方法并不复杂,基于 JFace Text Framework 构建全功能代码编辑器: 第 5 部分:Text Decoration(4),如果你有自己的标注类型,那么可以用程序方式或者扩展方式定义自己的标注配置信息,现在的编辑器还没有一个标尺,所以稍微修改一下 J

我没有增加自定义的标注,所以这个方法并不复杂。如果你有自己的标注类型,那么可以用程序方式或者扩展方式定义自己的标注配置信息,然后调用 SourceViewerDecorationSupport 的 setAnnotationPreference 方法将你的配置添加到库中

错误检测支持

下一步再一次和 ANTLR 扯上了关系,如果没有解析器的支持,要知道源代码中的错误恐怕有点困难。幸好我们已经有了很多基础工具,但是仍然有点不够。我稍微修改了一下 ANTLR 的文法,支持把错误保存到一个 Map 中。这样解析完成后,我就可以直接从解析器得到错误列表了。同时 SharedParser 做了少许增强,以便得到最近一次解析时的错误信息。这些修改就不一一列出了,总之我现在具有了得到错误位置与错误信息的能力。

扩展 Annotation

下一步是扩展 Annotation 类,因为 Annotation 类并没有实现 IAnnotationPresentation。我想让错误也在标尺上显示出来,所以要扩展 Annotation。我定义了 ExprAnnotation,它的代码的核心是 paint 方法,作用是在标尺上画一个背景,然后再画一个错误图标。至于画图的具体细节没有必要关心,熟悉 SWT 的 GC 使用方式的话应该不是问题,这里我就略过不提了。

Ruler 支持

提示:注意我们的布局代码也发生了变化,原来是 viewer.getTextWidget().setLayoutData(…), 现在是 viewer.getControl().setLayoutData(…)。因为安装了标尺之后,viewer 内部会对布局做了一些调整,这个时候 StyledText 不再是顶层控件,所以要使用 getControl。如果不了解的话,界面的布局会出乎意料,恐怕一时半会也不知道问题从何而来。

现在的编辑器还没有一个标尺,所以稍微修改一下 JTFDialog,传给 ExprViewer 的构造函数一个 VerticalRuler 实例即可。

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

Tags:基于 JFace Text

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