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

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

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 图4. Java 编辑器中的文本悬浮可以看到 Java 编辑器的文本悬浮窗口下面有一个提示:按 F2 之后可以得到焦点,这个功能即方便了查看一些比较长的帮助,基于 JFace Text Framework 构建全功能代码编辑器: 第 6 部分:Text Hover 和 Annotation Ho

图4. Java 编辑器中的文本悬浮
基于 JFace Text Framework 构建全功能代码编辑器: 第 6 部分:Text Hover 和 Annotation Hover

可以看到 Java 编辑器的文本悬浮窗口下面有一个提示:按 F2 之后可以得到焦点。这个功能即方便了查看一些比较长的帮助,又解决了 Accessibility 的问题。

我这里不演示具体步骤,但是给有兴趣的读者一些提示:

悬浮窗口下面的提示可以通过 DefaultInformationControl 的构造函数传进去,如果你用的其它的信息控件,则看具体情况。

为了处理相应的快捷键,需要定义一个快捷键绑定,快捷键发生的时候调用相应的方法把信息控件变成可设置焦点的。Eclipse中有一些代码可以参考,比如 InformationDispatchAction,它是 TextEditorAction 的内部类。

AbstractInfor...

如果你是一个喜欢刨根问底的人,你可能会问:我虽然实现了 TextHover 接口,但是文本编辑器是怎么知道什么时候该调用我这个接口的呢?文本编辑器不是上帝,它当然是不知道的,需要外力帮助它知道。可以看看 AbstractInformationControlManager 这个类以及它的子类,会发现它有一个叫做 TextViewerHoverManager 的子类,是不是有点明白了呢?原来 TextViewerHoverManager 会安装在 TextViewer 上,它会监听悬浮事件,然后负责调用我们的实现。

从 AbstractInformationControlManager 可以看出一点:JFace 把信息显示功能包装成了通用的模块,并不是一定要在文本编辑器这样的场合才可以用悬浮信息窗口。如果你需要在其它地方添加类似的功能,可以继承 AbstractInformationControlManager,完成你自己的信息显示功能。

结束语

又给大家留下了可以发挥的地方,我小小的总结一下:

没有提供自定义的信息显示控件

没有实现悬浮窗口的可焦点化

尝试为其它东西实现一个悬浮提示功能,比如工具条?

如果上面这些部分你都能完成的话,相信你就可以做出来非常专业的悬浮帮助系统了。

本文示例源代码或素材下载

上一页  1 2 3 4 5 

Tags:基于 JFace Text

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