- 浏览: 220958 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
dysking:
SWT 和 JFace -
wangyuhfut:
东西不少啊。学习中。。。
一个比较好、中文说明的emacs配置文件 1 -
pacocai:
呵呵!学习,学习~~~不过要说编辑器的话个人更喜欢用VIM,比 ...
一个比较好、中文说明的emacs配置文件 1 -
zhf1zhf2:
这两百多个记起来也不容易啊
英国人是这样背的! -
regex:
试了两次,都是乱码,版本是23.1.1,看来不适合
汉化 Emacs 菜单
https://www.ibm.com/developerworks/cn/opensource/os-cn-ecljtf6/
文档选项
将打印机的版面设置成横向打印模式
打印本页
将此页作为电子邮件发送
将此页作为电子邮件发送
样例代码
级别: 中级
马 若劼 (maruojie@cn.ibm.com), 软件工程师, IBM 中国软件开发中心
2008 年 4 月 10 日
Text Hover(文本悬浮)和 Annotation Hover(标注悬浮)是两种提供快速帮助的功能。本文介绍两种悬浮的基本概念和在 JTF 中的实现方式。
Text Hover
Text Hover(文本悬浮)可以让用户快速的得到某种信息,而不用打开相对缓慢的 Eclipse 帮助系统。Eclipse 的 Java 编辑器使用了文本悬浮来显示 Javadoc 帮助,极大的方便了程序员。从功能上看,文本悬浮可以认为是一种增强型的 Tooltip,因为它支持显示更多的内容,并且可以显示成各种样子。
文本悬浮看起来很酷,但是原理却很简单。基本上就是三个步骤:
1. 根据鼠标位置得到字符偏移
2. 根据字符偏移得到字符所在单词和上下文信息
3. 根据这个单词以及上下文信息显示相关帮助
最关键的事情在于得到字符所在的单词并得到上下文信息,这样才能决定该显示什么样的帮助信息。所以这就又回到了词法解析器和语法解析器的领域了,只好略过不提。不过经过了这么多次的强调之后,希望你对词法解析器和语法解析器的重要性有了深切的体会。它们是代码编辑器里最重要的基石。
第一步不用我们操心,StyledText 已经提供了这样的能力。我们要处理的是第二和第三步。对于文本悬浮,相关的接口是 ITextHover;对于标注悬浮,相关的接口是 IAnnotationHover。
回页首
ITextHover
接下来我打算实现用文本悬浮显示变量值的功能,比如对下面的代码:
清单1. 示例语言
pa = 4;
b = 4;
a = b + 4;
如果你把鼠标移到 a 上,则会显示“8”,如果移到b上,则会显示“4”,是不是很酷呢?
修改解析器
这样的功能没有解析器的支持可不好做,所以我又修改了 Expr.g 文件,使解析器能够保存所有已经声明的变量和它们的值。SharedParser 也做了一定的修改,提供了一个 getVariableValue 方法来根据变量名得到值。用 ANTLR 完成这些事情确实很简单,我就不一一列出代码了。
实现 ITextHover
好消息是 JTF 已经提供了一个缺省的实现,叫做 DefaultTextHover,只要继承一下就可以了。下面是具体的代码:
清单2. ExprTextHover 继承 DefaultTextHover
public class ExprTextHover extends DefaultTextHover {
public ExprTextHover(ISourceViewer sourceViewer) {
super(sourceViewer);
}
@Override
public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
return new Region(offset, 1);
}
@Override
public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
// query super first
String info = super.getHoverInfo(textViewer, hoverRegion);
// if null, use our logic
if(info == null) {
// get document
IDocument doc = textViewer.getDocument();
// get token list
TokenList list = TokenManager.getTokenList(doc);
// get token
Token token = list.getToken(hoverRegion.getOffset());
if(token == null)
return null;
// if token is variable, get variable value
if(token.getType() == IExprTokens.ID) {
// parse
TreeManager.getTree(doc);
return String.valueOf(SharedParser.getVariableValue(token.getText()));
} else
return null;
} else
return info;
}
}
主要的工作在 getHoverInfo 这个方法里面,我先调用了父类的 getHoverInfo,这一般来说是推荐的,因为父类的 getHoverInfo 会去首先查询相应位置处有没有一个标注,如果有,它会返回标注的信息。所以我在后面检查了父类的返回值,如果不是 null 且鼠标下面是一个变量名的话,就从解析器得到变量的值。
配置
最后一步是修改 ExprConfiguration,覆盖 getTextHover 方法, 只是简单的返回我定义的 ExprTextHover 即可。
清单3. 让 JTF 知道我们的 Text Hover 实现
public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) {
return new ExprTextHover(sourceViewer);
}
效果
运行后,看看是不是得到了我想要的效果:
图1. 文本悬浮效果图
文本悬浮效果图
如我希望的那样,鼠标移动到 a 上面时,显示出了“8”。如果源代码中有错误,那么效果如下所示:
图2. 当源代码有错误时
当源代码有错误时
这正是由于我首先调用了父类的 getHoverInfo 的效果,父类为我们取出了标注信息。
回页首
IAnnotationHover
Annotation Hover(标注悬浮)只能给标尺上的标注提供悬浮帮助。在实现上,它比文本悬浮更简单一些,因为你不需要判断鼠标所在单词,也不需要想办法获取一些上下文信息。JTF 也提供了缺省实现:DefaultAnnotationHover。我在例子中继承了它,但是什么都没有覆盖。然后在 ExprConfiguration 中覆盖 getAnnotationHover 即可,和文本悬浮非常类似。
下面是标注悬浮的效果:
图3. 标注悬浮效果图
标注悬浮效果图
显示的信息和图2是一样的,因为是同一个标注。如果想返回不同的信息,覆盖 DefaultAnnotationHover 的 getHoverInfo 方法就可以了。
回页首
关于信息显示控件
我曾经在本系列的第四部分提过:JTF使用了一些接口来抽象信息显示方面的功能,比如 IInformationControl 代表了一个信息显示控件,IInformationControlCreator 代表了一个信息显示控件工厂。既然文本悬浮和标注悬浮也是显示信息,那么它们可以不可以定制信息显示控件呢?
答案是绝对没问题,但是你在 ITextHover 和 IAnnotationHover 找不到与之有关系的方法。是不是想起了什么?那些带有“Extension”字样的接口?Bingo! 看看 ITextHoverExtension 和 IAnnotationHoverExtension 吧,具体怎么做我就不演示了。
回页首
Accessibility
一个要达到产品级的软件,必须要考虑 Accessibility 的问题,所谓 Accessibility,简单的说,就是让残疾人也能够使用你的软件。Accessibility 有一个很基本的要求就是关键的文字都要能被读屏软件读出来。文本悬浮和标注悬浮是很酷,但是它带来了 Accessibility 方面的问题,因为悬浮窗口没有焦点,读屏软件是不会读它们的。我们看看在 Java 编辑器中,它如何解决这个问题:
图4. Java 编辑器中的文本悬浮
Java 编辑器中的文本悬浮
可以看到 Java 编辑器的文本悬浮窗口下面有一个提示:按 F2 之后可以得到焦点。这个功能即方便了查看一些比较长的帮助,又解决了 Accessibility 的问题。
我这里不演示具体步骤,但是给有兴趣的读者一些提示:
1. 悬浮窗口下面的提示可以通过 DefaultInformationControl 的构造函数传进去,如果你用的其它的信息控件,则看具体情况。
2. 为了处理相应的快捷键,需要定义一个快捷键绑定,快捷键发生的时候调用相应的方法把信息控件变成可设置焦点的。Eclipse中有一些代码可以参考,比如 InformationDispatchAction,它是 TextEditorAction 的内部类。
回页首
AbstractInfor...
如果你是一个喜欢刨根问底的人,你可能会问:我虽然实现了 TextHover 接口,但是文本编辑器是怎么知道什么时候该调用我这个接口的呢?文本编辑器不是上帝,它当然是不知道的,需要外力帮助它知道。可以看看 AbstractInformationControlManager 这个类以及它的子类,会发现它有一个叫做 TextViewerHoverManager 的子类,是不是有点明白了呢?原来 TextViewerHoverManager 会安装在 TextViewer 上,它会监听悬浮事件,然后负责调用我们的实现。
从 AbstractInformationControlManager 可以看出一点:JFace 把信息显示功能包装成了通用的模块,并不是一定要在文本编辑器这样的场合才可以用悬浮信息窗口。如果你需要在其它地方添加类似的功能,可以继承 AbstractInformationControlManager,完成你自己的信息显示功能。
回页首
结束语
又给大家留下了可以发挥的地方,我小小的总结一下:
1. 没有提供自定义的信息显示控件
2. 没有实现悬浮窗口的可焦点化
3. 尝试为其它东西实现一个悬浮提示功能,比如工具条?
如果上面这些部分你都能完成的话,相信你就可以做出来非常专业的悬浮帮助系统了。
回页首
声明
本文仅代表作者的个人观点,不代表 IBM 的立场。
文档选项
将打印机的版面设置成横向打印模式
打印本页
将此页作为电子邮件发送
将此页作为电子邮件发送
样例代码
级别: 中级
马 若劼 (maruojie@cn.ibm.com), 软件工程师, IBM 中国软件开发中心
2008 年 4 月 10 日
Text Hover(文本悬浮)和 Annotation Hover(标注悬浮)是两种提供快速帮助的功能。本文介绍两种悬浮的基本概念和在 JTF 中的实现方式。
Text Hover
Text Hover(文本悬浮)可以让用户快速的得到某种信息,而不用打开相对缓慢的 Eclipse 帮助系统。Eclipse 的 Java 编辑器使用了文本悬浮来显示 Javadoc 帮助,极大的方便了程序员。从功能上看,文本悬浮可以认为是一种增强型的 Tooltip,因为它支持显示更多的内容,并且可以显示成各种样子。
文本悬浮看起来很酷,但是原理却很简单。基本上就是三个步骤:
1. 根据鼠标位置得到字符偏移
2. 根据字符偏移得到字符所在单词和上下文信息
3. 根据这个单词以及上下文信息显示相关帮助
最关键的事情在于得到字符所在的单词并得到上下文信息,这样才能决定该显示什么样的帮助信息。所以这就又回到了词法解析器和语法解析器的领域了,只好略过不提。不过经过了这么多次的强调之后,希望你对词法解析器和语法解析器的重要性有了深切的体会。它们是代码编辑器里最重要的基石。
第一步不用我们操心,StyledText 已经提供了这样的能力。我们要处理的是第二和第三步。对于文本悬浮,相关的接口是 ITextHover;对于标注悬浮,相关的接口是 IAnnotationHover。
回页首
ITextHover
接下来我打算实现用文本悬浮显示变量值的功能,比如对下面的代码:
清单1. 示例语言
pa = 4;
b = 4;
a = b + 4;
如果你把鼠标移到 a 上,则会显示“8”,如果移到b上,则会显示“4”,是不是很酷呢?
修改解析器
这样的功能没有解析器的支持可不好做,所以我又修改了 Expr.g 文件,使解析器能够保存所有已经声明的变量和它们的值。SharedParser 也做了一定的修改,提供了一个 getVariableValue 方法来根据变量名得到值。用 ANTLR 完成这些事情确实很简单,我就不一一列出代码了。
实现 ITextHover
好消息是 JTF 已经提供了一个缺省的实现,叫做 DefaultTextHover,只要继承一下就可以了。下面是具体的代码:
清单2. ExprTextHover 继承 DefaultTextHover
public class ExprTextHover extends DefaultTextHover {
public ExprTextHover(ISourceViewer sourceViewer) {
super(sourceViewer);
}
@Override
public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
return new Region(offset, 1);
}
@Override
public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
// query super first
String info = super.getHoverInfo(textViewer, hoverRegion);
// if null, use our logic
if(info == null) {
// get document
IDocument doc = textViewer.getDocument();
// get token list
TokenList list = TokenManager.getTokenList(doc);
// get token
Token token = list.getToken(hoverRegion.getOffset());
if(token == null)
return null;
// if token is variable, get variable value
if(token.getType() == IExprTokens.ID) {
// parse
TreeManager.getTree(doc);
return String.valueOf(SharedParser.getVariableValue(token.getText()));
} else
return null;
} else
return info;
}
}
主要的工作在 getHoverInfo 这个方法里面,我先调用了父类的 getHoverInfo,这一般来说是推荐的,因为父类的 getHoverInfo 会去首先查询相应位置处有没有一个标注,如果有,它会返回标注的信息。所以我在后面检查了父类的返回值,如果不是 null 且鼠标下面是一个变量名的话,就从解析器得到变量的值。
配置
最后一步是修改 ExprConfiguration,覆盖 getTextHover 方法, 只是简单的返回我定义的 ExprTextHover 即可。
清单3. 让 JTF 知道我们的 Text Hover 实现
public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) {
return new ExprTextHover(sourceViewer);
}
效果
运行后,看看是不是得到了我想要的效果:
图1. 文本悬浮效果图
文本悬浮效果图
如我希望的那样,鼠标移动到 a 上面时,显示出了“8”。如果源代码中有错误,那么效果如下所示:
图2. 当源代码有错误时
当源代码有错误时
这正是由于我首先调用了父类的 getHoverInfo 的效果,父类为我们取出了标注信息。
回页首
IAnnotationHover
Annotation Hover(标注悬浮)只能给标尺上的标注提供悬浮帮助。在实现上,它比文本悬浮更简单一些,因为你不需要判断鼠标所在单词,也不需要想办法获取一些上下文信息。JTF 也提供了缺省实现:DefaultAnnotationHover。我在例子中继承了它,但是什么都没有覆盖。然后在 ExprConfiguration 中覆盖 getAnnotationHover 即可,和文本悬浮非常类似。
下面是标注悬浮的效果:
图3. 标注悬浮效果图
标注悬浮效果图
显示的信息和图2是一样的,因为是同一个标注。如果想返回不同的信息,覆盖 DefaultAnnotationHover 的 getHoverInfo 方法就可以了。
回页首
关于信息显示控件
我曾经在本系列的第四部分提过:JTF使用了一些接口来抽象信息显示方面的功能,比如 IInformationControl 代表了一个信息显示控件,IInformationControlCreator 代表了一个信息显示控件工厂。既然文本悬浮和标注悬浮也是显示信息,那么它们可以不可以定制信息显示控件呢?
答案是绝对没问题,但是你在 ITextHover 和 IAnnotationHover 找不到与之有关系的方法。是不是想起了什么?那些带有“Extension”字样的接口?Bingo! 看看 ITextHoverExtension 和 IAnnotationHoverExtension 吧,具体怎么做我就不演示了。
回页首
Accessibility
一个要达到产品级的软件,必须要考虑 Accessibility 的问题,所谓 Accessibility,简单的说,就是让残疾人也能够使用你的软件。Accessibility 有一个很基本的要求就是关键的文字都要能被读屏软件读出来。文本悬浮和标注悬浮是很酷,但是它带来了 Accessibility 方面的问题,因为悬浮窗口没有焦点,读屏软件是不会读它们的。我们看看在 Java 编辑器中,它如何解决这个问题:
图4. Java 编辑器中的文本悬浮
Java 编辑器中的文本悬浮
可以看到 Java 编辑器的文本悬浮窗口下面有一个提示:按 F2 之后可以得到焦点。这个功能即方便了查看一些比较长的帮助,又解决了 Accessibility 的问题。
我这里不演示具体步骤,但是给有兴趣的读者一些提示:
1. 悬浮窗口下面的提示可以通过 DefaultInformationControl 的构造函数传进去,如果你用的其它的信息控件,则看具体情况。
2. 为了处理相应的快捷键,需要定义一个快捷键绑定,快捷键发生的时候调用相应的方法把信息控件变成可设置焦点的。Eclipse中有一些代码可以参考,比如 InformationDispatchAction,它是 TextEditorAction 的内部类。
回页首
AbstractInfor...
如果你是一个喜欢刨根问底的人,你可能会问:我虽然实现了 TextHover 接口,但是文本编辑器是怎么知道什么时候该调用我这个接口的呢?文本编辑器不是上帝,它当然是不知道的,需要外力帮助它知道。可以看看 AbstractInformationControlManager 这个类以及它的子类,会发现它有一个叫做 TextViewerHoverManager 的子类,是不是有点明白了呢?原来 TextViewerHoverManager 会安装在 TextViewer 上,它会监听悬浮事件,然后负责调用我们的实现。
从 AbstractInformationControlManager 可以看出一点:JFace 把信息显示功能包装成了通用的模块,并不是一定要在文本编辑器这样的场合才可以用悬浮信息窗口。如果你需要在其它地方添加类似的功能,可以继承 AbstractInformationControlManager,完成你自己的信息显示功能。
回页首
结束语
又给大家留下了可以发挥的地方,我小小的总结一下:
1. 没有提供自定义的信息显示控件
2. 没有实现悬浮窗口的可焦点化
3. 尝试为其它东西实现一个悬浮提示功能,比如工具条?
如果上面这些部分你都能完成的话,相信你就可以做出来非常专业的悬浮帮助系统了。
回页首
声明
本文仅代表作者的个人观点,不代表 IBM 的立场。
发表评论
-
基于 JFace Text Framework 构建全功能代码编辑器: 第 7 部分:
2009-05-17 16:18 1079https://www.ibm.com/developerwo ... -
基于 JFace Text Framework 构建全功能代码编辑器: 第 5 部分:
2009-05-14 17:32 1232https://www.ibm.com/developerwo ... -
基于 JFace Text Framework 构建全功能代码编辑器: 第 4 部分
2009-05-14 17:31 1537Content Assistant developerWor ... -
基于 JFace Text Framework 构建全功能代码编辑器: 第 3 部分
2009-05-14 17:30 1316Double Click 和 Triple Click de ... -
实战SWT布局
2008-12-08 00:55 1426标准的SWT布局类 FillLayou ... -
SWT布局
2008-12-08 00:53 1153另外参见:http://java.chinaitlab.com ... -
基于 JFace Text Framework 构建全功能代码编辑器: 第 2 部分
2008-11-19 18:12 1230Syntax Highlight developerWork ... -
基于 JFace Text Framework 构建全功能代码编辑器: 第 1 部分
2008-11-19 18:11 1213级别: 中级 马 若劼 (maruojie@cn.ibm.c ... -
SWT 和 JFace, 第 2 部分: 简介
2008-11-19 18:06 1163http://www.ibm.com/developerwor ... -
SWT 和 JFace,第 1 部分: 简介
2008-11-19 18:04 1194http://www.ibm.com/developerwor ... -
基于 JFace Text Framework 构建全功能代码编辑器: 第 8 部分:
2008-11-19 03:54 0https://www.ibm.com/developerwo ... -
基于 JFace Text Framework 构建全功能代码编辑器: 第 10 部分:Text F
2008-11-19 03:50 0https://www.ibm.com/developerwo ... -
基于 JFace Text Framework 构建全功能代码编辑器: 第 11 部分:
2008-11-19 03:48 0https://www.ibm.com/developerwo ... -
基于 JFace Text Framework 构建全功能代码编辑器: 第 9 部分:Templa
2008-11-19 03:23 0基于 JFace Text Framework 构 ... -
JFace Text Editor完全掌握之终极指南
2008-06-13 01:57 1918JFace Text Editor是JFace里面一个功能强大 ... -
JFace 视图
2008-06-13 01:49 1168http://blog.itpub.net/post/5050 ... -
SWT的体系结构
2008-06-13 01:18 1249http://flyingbug.blogdriver.com ... -
SWT 全接触
2008-06-13 01:15 1747http://blog.csdn.net/DL88250/ar ... -
细说:AWT,SWT,Swing
2008-06-13 00:42 2040http://www.java3z.com/cwbwebhom ... -
SWT的--键盘事件处理
2008-06-12 21:51 2353http://203.208.37.104/search?q= ...
相关推荐
### 基于_JFace_Text_Framework_构建全功能代码编辑器 #### 引言与概述 _JFace_Text_Framework_(简称JTF),作为Eclipse平台的重要组成部分,为开发者提供了构建高度定制化的代码编辑器的强大能力。JTF不仅支撑了...
总结来说,IBM的JFace Text Framework教程为开发者提供了一个强大且灵活的工具,用于构建功能丰富的文本编辑器。通过学习和实践,开发者可以掌握如何利用这个框架来提升开发效率,创建出专业级的IDE(集成开发环境)...
标题提及的"org.eclipse.jface.text_3.8.101.v20130802-1147"是Eclipse中的一个关键组件,它负责文本编辑器的相关功能,包括代码提示。 `org.eclipse.jface.text`是Eclipse JFace库的一部分,JFace是构建用户界面的...
本文将围绕"jface.text 3.12.1.zip"这一特定的Eclipse插件进行深入探讨,该插件是Eclipse文本编辑器的重要组成部分,对于提升Java代码补全体验有着至关重要的作用。 首先,"jface.text"是Eclipse的Java Face (JFace...
标题中的"org.eclipse.jface.text_3.12.2.v20180112-1341.zip"是Eclipse插件的一个版本,它专注于文本编辑功能。Eclipse是一个开源的集成开发环境(IDE),而JFace是Eclipse的一部分,提供了面向用户的界面组件。...
Eclipse JFace Text是Eclipse IDE中的一个核心组件,它提供了高级文本编辑功能,广泛用于构建用户界面中的文本编辑器。这个特定的版本号表明它是该组件的一次更新迭代,可能包含错误修复、性能提升或其他新特性。 ...
JFace Text是Eclipse中的一个API,它是构建文本编辑器的基础,提供了文本编辑、搜索、替换、高亮等基本功能。在这个特定的版本中,开发者们对JFace Text进行了优化,特别是对于用户输入行为的处理,比如取消了空格和...
深入研究这部分源码,不仅可以提升对Eclipse JFace的理解,也有助于提升开发者在构建文本编辑器组件时的定制能力。同时,这也提醒我们,源码的修改应遵循良好的编程实践,确保软件的稳定性和可维护性。
《Eclipse JFace Text库与MyEclipse 10.0.0的编辑器功能优化》 在IT行业中,开发工具的效率与便利性对于程序员的工作至关重要。Eclipse作为一款广受欢迎的开源集成开发环境(IDE),其强大的扩展性和自定义能力一直...
了解和利用WTP中与插件开发相关的其他关键概念,如JFace Text Framework和Eclipse Editor Framework,可以帮助进一步优化编辑器的性能和用户体验。 #### 五、总结 基于WTP开发自定义的JSP编辑器是一个综合性的工程...
这个插件是JFace Text组件的一部分,JFace是Eclipse工作台(Workbench)框架的一个子项目,它提供了基于SWT(Standard Widget Toolkit)的高级用户界面构建工具。版本号"3.9.2"表明这是该插件的第三个主要版本的第九...
因为10.7.1已经完美破解(修正了war文件到处问题),故放上该版本修改过的org.eclipse.jface.text_3.7.2.v20111213-1208.jar 代码补全空格不上屏,适合习惯使用vs等工具的用户 详细描述参见10.0时的插件 ...
总的来说,Eclipse JFace Text模块是Eclipse IDE中不可或缺的一部分,它提供了丰富的文本编辑功能,尤其是自动补全特性,大大提升了开发效率。版本3.12.0.v20170523-1043的JFace Text可能包含了一些优化和改进,使得...
JFace包括数据绑定、视图管理、对话框和服务等组件,它将许多复杂的SWT操作进行了封装,例如表格和树的数据模型、表单编辑器等。通过研究JFace的源代码,开发者可以学习到如何优雅地组织用户界面,提高代码的可读性...
将现有JAR文件直接替换对应的org.eclipse.jface.text_*(后面的是版本号),只能提示增强,能在abcdef....等输入时提示,解决空格和=不能输入的问题(第一次自己编译的插件 嘎嘎)只能提示增强方法自己搜,这个是解决...
7. **Views and Editors**:JFace 提供了用于构建工作台视图和编辑器的框架,支持多窗口和多页编辑环境。 8. **Control Adapters**:这些适配器类可以添加额外的功能,例如在控件上添加右键菜单。 9. **Bindings ...
7. **视图和编辑器的实现**:Eclipse RCP中的视图和编辑器是通过JFace实现的,源代码能帮助我们理解这两者如何在RCP环境中协同工作。 总之,研究JFace的源代码不仅可以帮助开发者深入理解Eclipse RCP的工作原理,还...
myeclipse的自动补全代码有时会显得多余,给属性添加类型名,用这个替换掉\eclipse\plugins目录下的插件可以取消“空格”和“等号”下的自动补全功能,适用版本:org.eclipse.jface.text_3.8.2.v20121126-164145。...
**JFace** 是 Eclipse 平台的一个重要组成部分,它提供了一套丰富的 API 来帮助开发者构建基于 SWT(Standard Widget Toolkit)的用户界面。JFace 的核心目标是简化 GUI 开发流程,使开发者能够更加专注于应用程序...