基于 JFace Text Framework 构建全功能代码编辑器: 第 6 部分:Text Hover 和 Annotation Hover
2010-03-18 00:00:00 来源:WEB开发网图4. Java 编辑器中的文本悬浮
可以看到 Java 编辑器的文本悬浮窗口下面有一个提示:按 F2 之后可以得到焦点。这个功能即方便了查看一些比较长的帮助,又解决了 Accessibility 的问题。
我这里不演示具体步骤,但是给有兴趣的读者一些提示:
悬浮窗口下面的提示可以通过 DefaultInformationControl 的构造函数传进去,如果你用的其它的信息控件,则看具体情况。
为了处理相应的快捷键,需要定义一个快捷键绑定,快捷键发生的时候调用相应的方法把信息控件变成可设置焦点的。Eclipse中有一些代码可以参考,比如 InformationDispatchAction,它是 TextEditorAction 的内部类。
AbstractInfor...
如果你是一个喜欢刨根问底的人,你可能会问:我虽然实现了 TextHover 接口,但是文本编辑器是怎么知道什么时候该调用我这个接口的呢?文本编辑器不是上帝,它当然是不知道的,需要外力帮助它知道。可以看看 AbstractInformationControlManager 这个类以及它的子类,会发现它有一个叫做 TextViewerHoverManager 的子类,是不是有点明白了呢?原来 TextViewerHoverManager 会安装在 TextViewer 上,它会监听悬浮事件,然后负责调用我们的实现。
从 AbstractInformationControlManager 可以看出一点:JFace 把信息显示功能包装成了通用的模块,并不是一定要在文本编辑器这样的场合才可以用悬浮信息窗口。如果你需要在其它地方添加类似的功能,可以继承 AbstractInformationControlManager,完成你自己的信息显示功能。
结束语
又给大家留下了可以发挥的地方,我小小的总结一下:
没有提供自定义的信息显示控件
没有实现悬浮窗口的可焦点化
尝试为其它东西实现一个悬浮提示功能,比如工具条?
如果上面这些部分你都能完成的话,相信你就可以做出来非常专业的悬浮帮助系统了。
本文示例源代码或素材下载
更多精彩
赞助商链接