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

基于 JFace Text Framework 构建全功能代码编辑器: 第 6 部分:Text Hover 和 Annotation Hover

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示:Text HoverText Hover(文本悬浮)可以让用户快速的得到某种信息,而不用打开相对缓慢的 Eclipse 帮助系统,基于 JFace Text Framework 构建全功能代码编辑器: 第 6 部分:Text Hover 和 Annotation Hover,Eclipse 的 Java 编辑器使用了文

Text Hover

Text Hover(文本悬浮)可以让用户快速的得到某种信息,而不用打开相对缓慢的 Eclipse 帮助系统。Eclipse 的 Java 编辑器使用了文本悬浮来显示 Javadoc 帮助,极大的方便了程序员。从功能上看,文本悬浮可以认为是一种增强型的 Tooltip,因为它支持显示更多的内容,并且可以显示成各种样子。

文本悬浮看起来很酷,但是原理却很简单。基本上就是三个步骤:

根据鼠标位置得到字符偏移

根据字符偏移得到字符所在单词和上下文信息

根据这个单词以及上下文信息显示相关帮助

最关键的事情在于得到字符所在的单词并得到上下文信息,这样才能决定该显示什么样的帮助信息。所以这就又回到了词法解析器和语法解析器的领域了,只好略过不提。不过经过了这么多次的强调之后,希望你对词法解析器和语法解析器的重要性有了深切的体会。它们是代码编辑器里最重要的基石。

第一步不用我们操心,StyledText 已经提供了这样的能力。我们要处理的是第二和第三步。对于文本悬浮,相关的接口是 ITextHover;对于标注悬浮,相关的接口是 IAnnotationHover。

ITextHover

接下来我打算实现用文本悬浮显示变量值的功能,比如对下面的代码:

清单1. 示例语言

        pa = 4; 
b = 4; 
a = b + 4; 

如果你把鼠标移到 a 上,则会显示“8”,如果移到b上,则会显示“4”,是不是很酷呢?

修改解析器

这样的功能没有解析器的支持可不好做,所以我又修改了 Expr.g 文件,使解析器能够保存所有已经声明的变量和它们的值。SharedParser 也做了一定的修改,提供了一个 getVariableValue 方法来根据变量名得到值。用 ANTLR 完成这些事情确实很简单,我就不一一列出代码了。

1 2 3 4 5  下一页

Tags:基于 JFace Text

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