这里两天一直在学习eclipse的RCP plugin开发的使用技巧,想用eclipe的插件来实现我之前利用ibator改造的dao生成工具。
看了两天先把 extension的 view看得有点感觉了,这里我先把jface的 treeViewer这个控件说明一下,如何在eclipse的view里面显示一个树状结构的目录树。
<extension
point="org.eclipse.ui.views">
<category
name="Sample Category"
id="test3plugin">
</category>
<view
category="test3plugin"
class="test3plugin.ViewPartTest"
icon="icons/alias.gif"
id="test3plugin.view1"
name="test3plugin.ViewPartTest"
restorable="true">
</view>
</extension>
先在plugin.xml文件中声明一个org.eclipse.ui.views的扩展,这个很简单没有什么好说的了。
然后是创建 test3plugin.ViewPartTest类:
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.ui.JavaElementLabelProvider;
import org.eclipse.jdt.ui.StandardJavaElementContentProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.ITreeViewerListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeExpansionEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
public class ViewPartTest extends ViewPart {
public ViewPartTest() {
}
@Override
public void createPartControl(Composite parent) {
TreeViewer viewer = new TreeViewer(parent);
// Provide members of a compilation unit or class file
ITreeContentProvider contentProvider = new StandardJavaElementContentProvider(
true);
viewer.setContentProvider(contentProvider);
// There are more flags defined in class JavaElementLabelProvider
ILabelProvider labelProvider = new JavaElementLabelProvider(
JavaElementLabelProvider.SHOW_DEFAULT
| JavaElementLabelProvider.SHOW_QUALIFIED
| JavaElementLabelProvider.SHOW_ROOT);
viewer.setLabelProvider(labelProvider);
// Using the Java model as the viewers input present Java projects on
// the first level.
viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace()
.getRoot()));
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
System.out.println(event.getSource().toString());
}
});
viewer.addTreeListener(new ITreeViewerListener() {
@Override
public void treeCollapsed(TreeExpansionEvent event) {
System.out.println("treeCollapsed:"
+ event.getElement().toString());
}
@Override
public void treeExpanded(TreeExpansionEvent event) {
System.out.println("treeExpanded:"
+ event.getElement().toString());
}
});
}
@Override
public void setFocus() {
}
这里最关键的是三个方法:
- setContentProvider
- setLabelProvider
- setInput
经过查看源代码之后,明白了这个三个方法的意思是这样的:
- setContentProvider 提供页面上树节点内容的提供内容,设置IContentProvider类型的对象
- setLabelProvider 因为在每个树节点上要显示有图片和现实文字,所以设置IBaseLabelProvider类型的对象
- setInput 设置目录树的根节点, 注意这个方法设置的root对象在应用目录显示树上是不现实的。
另外还有两个事件监听接口:
- addSelectionChangedListener 当鼠标在树节点上焦点移动之后就会触发这个方法
- addTreeListener 这个回调接口的方法是在鼠标双击了树的枝或者叶之后,打开或者关闭节点触发的
值得一提的是以上这几个方法都是用了策略模式来隔离变化。这样可以通过这套代码实现各种复杂的业务需求
分享到:
相关推荐
TreeViewer是SWT中的一个类,它封装了JFace Data Binding的支持,使得我们能够更方便地绑定数据到树形控件上。通过TreeViewer,我们可以创建具有多级节点、可选中状态、以及自定义列的树结构。 在`MyTreeViewer....
1. **《Eclipse SWT/JFace 开发实战精解》**:这本书深入介绍了如何使用SWT和JFace进行Eclipse插件开发,包含丰富的实例和实践指导。 2. **《SWT-JFace-3.4-zh-CN.chm》**:这是一份中文手册,详细讲解了SWT和...
3. 表格和树视图:如何使用TableViewer和TreeViewer来展示和操作结构化数据。 4. 模型-视图-控制器(MVC):解释MVC模式如何帮助保持代码的清晰性和可扩展性。 5. 对话框(Dialogs):介绍如何使用JFace提供的标准...
在这个名为“jface treeView 的sample”的例子中,我们将深入探讨如何使用jFace来实现一个功能完备的TreeView。 首先,让我们了解`TreeView`的基本用法。在jFace中,`TreeView`是通过`org.eclipse.jface.viewers....
1. **Viewers**:JFace提供了一种模型-视图-控制器(MVC)的实现,用于构建可定制的数据查看器,如TreeViewer和TableViewer。它们允许开发者以树形或表格形式展示数据,并提供了丰富的操作,如排序、过滤和编辑。 2...
- 探索JFace:了解JFace如何简化SWT的使用,如利用TreeViewer和TableViewer展示数据。 - 练习MVC:通过创建一个简单的数据编辑视图,实践JFace的MVC模式。 - 扩展Eclipse:学习如何创建Eclipse插件,将SWT/JFace...
在"Oreilly.SWT.A.Developers.Notebook.Oct.2004.eBook-LiB.chm"这本书中,读者可以深入学习SWT和JFace的使用方法,包括控件的创建、事件处理、布局管理、数据模型的构建、对话框的使用,以及如何在Eclipse插件开发...
JFace的TableViewer和TreeViewer提供了一种更抽象的方式来操作这些组件,包括数据绑定和排序。 7. **JFace服务**:包括Dialog、WorkbenchWindow、Action、SelectionService等,它们简化了窗口、动作和选择事件的...
在Java编程环境中,JFace库是Eclipse RCP(Rich Client Platform)的一部分,它提供了一套高级用户界面组件,如TableViewer和TreeViewer,用于构建桌面应用程序。在文档标题和描述中提到的问题主要涉及到JFace中的...
2. **Viewer Framework**:JFace的`TableViewer`和`TreeViewer`提供了强大的表格和树形视图管理,支持数据模型、过滤、排序等功能。例如,创建一个表格展示数据: ```java Table table = new Table(shell, SWT....
5. **树和表控件**:JFace的`TreeViewer`和`TableViewer`提供了更高级别的抽象,用于展示和操作树形和表格数据,支持过滤、排序和拖放等功能。 6. **命令框架**:JFace的命令框架允许开发者定义和执行可扩展的用户...
在"RCP jface 数据绑定 例子和测试范例"中,这个文件可能包含了一个使用数据绑定技术的`TreeViewer`示例。 5. **数据绑定API**: JFace的数据绑定API包括`Bindings`, `ValueProviders`, `Listeners`等,它们一起...
总之,深入研究JFace的源码不仅可以帮助我们更好地使用这个库,还能提升我们的GUI编程技能,尤其是在Eclipse平台上的开发。对于想要提升自己的Eclipse插件开发能力的开发者而言,这是一个不容错过的学习资源。
3. **表和树的视图**:JFace的TableViewer和TreeViewer类提供了丰富的表格和树形视图功能,支持排序、过滤和自定义列。 4. **对话框和页面**:JFace简化了创建各种对话框和向导页的过程,例如InputDialog、...
5. **表和树视图**:JFace的`TableViewer`和`TreeViewer`是用于展示数据的强大工具。它们支持各种操作,如排序、过滤、选择和编辑。在`org.eclipse.jface.snippets`中,你可以找到关于如何使用这些视图的实例代码。 ...
2. JFace库:理解其设计理念,以及如何创建和使用TreeViewer。 3. SWT(Standard Widget Toolkit):JFace的基础,提供了与操作系统交互的底层组件。 4. JFace Data Binding:可能涉及到的数据绑定,用于自动同步UI...
在 JFace 中,TableViewer 和 TreeViewer 扩展了这些功能,添加了数据绑定和自定义列渲染等功能。 8. **Layout Managers**:SWT 提供了多种布局管理器,如 FillLayout、GridLayout、FormLayout 等,用于控制组件在...
在Java开发领域,特别是使用Eclipse RCP(Rich Client Platform)进行桌面应用开发时,JFace是不可或缺的一部分。JFace是SWT(Standard Widget Toolkit)的一个扩展,提供了更高级别的抽象层,简化了用户界面的构建...
7. 表格和树:TableViewer和TreeViewer的使用,以及如何自定义列、行操作和数据提供者。 8. 表单构建:JFace表单构建器简化了复杂表单的创建,如FormToolkit和FormLayout的运用。 通过"SWT-JFace-3.5-API.chm"文件...
其次,JFace是在SWT基础上构建的一层抽象,它简化了SWT的使用,提供了一种面向对象的API,使得开发人员可以更加专注于业务逻辑,而不是底层的GUI细节。JFace包括数据绑定、视图管理、对话框和服务等组件,它将许多...