`
lggege
  • 浏览: 375223 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

GEF TreeViewer使用

    博客分类:
  • GEF
阅读更多
GEF的ContentOutlinePage就是TreeViewer使用的例子.

下面直接贴代码, 有空再进行整理:

第一段代码, 在SWT的Composite的界面上添加一个GEF的TreeViewer.
		treeViewer = new org.eclipse.gef.ui.parts.TreeViewer();
		treeViewer.createControl(composite);


第二段代码: 设置TreeViewer
		treeViewer.setEditDomain(new EditDomain());
		RootTreeEditPart rootTreeEditPart = new RootTreeEditPart();
		rootTreeEditPart.setWidget((Tree) treeViewer.getControl()); // 注意这里
		treeViewer.setRootEditPart(rootTreeEditPart);
		treeViewer.setEditPartFactory(new TreeEditPartFactory());
		treeViewer.setContents(templateModel); // 模型
		
		getSynchronizer().addViewer(treeViewer); // getSynchronizer()是一个SelectionSynchronizer.


第三段代码: TreeViewer的EditPartFactory. [很简单告诉TreeViewer怎么从Model得到TreeEditPart]
public class TreeEditPartFactory implements EditPartFactory {
	/**
	 * @see org.eclipse.gef.EditPartFactory#createEditPart(org.eclipse.gef.EditPart, java.lang.Object)
	 */
	public EditPart createEditPart(EditPart context, Object model) {
		EditPart part = null;
		if (model instanceof TemplateModel) {
			part = new TemplateTreeEditPart(); 
		}
		if (part != null) {
			part.setModel(model);
		}
		return part;
	}
}


第四部分: 一个基本的TreeEditPart的定义.
直接继承于AbstractTreeEditPart. 也可以按照需要去覆盖里面的getText, getImage等方法.
如果Model是父子结构的, 一定要覆盖getModelChildren方法.
public class TemplateTreeEditPart extends AbstractTreeEditPart {
	@Override
	protected List getModelChildren() { // 得到当前模型下的子模型.
		TemplateModel model = (TemplateModel) this.getModel();
		return model.getChildren();
		// return super.getModelChildren();
	}
}
分享到:
评论

相关推荐

    Eclipse开发使用GEF和EMF(IBM 红皮书)中英文对照版

    《Eclipse开发使用GEF和EMF》是IBM红皮书系列中的一部经典著作,主要探讨了如何在Eclipse环境中利用GEF(图形编辑框架)和EMF( Eclipse模型框架)进行图形化应用程序的开发。这两项技术是Eclipse平台上的核心组件,...

    自己下的GEF资源打包

    这个资源包可能包含了对理解、学习和使用GEF非常有帮助的材料。描述进一步说明了这个包中包含的具体内容,如“GEF_Tutorial”、“GEF实例”、“入门教程”以及“GEF-whole-upload”,这些都暗示了这是一个全面的学习...

    GEF入门必读 GEF入门系列 GEF-whole-upload

    **GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它在Eclipse平台上广泛使用,特别是在开发复杂的图形用户界面和工具时。本资料集旨在为初学者提供一个全面的入门指南,帮助理解GEF...

    GEF-Update-3.7.1.zip

    使用GEF进行Eclipse插件开发,开发者可以构建出具有交互式图形界面的应用程序,如流程图编辑器、UML建模工具等。GEF提供了丰富的API和设计模式,如MVC(模型-视图-控制器)、Command模式和AdapterManager,以支持...

    Eclipse的GEF学习

    GEF提供的视图包括图形视图(GraphicalViewer)和树状视图(TreeViewer),前者用于主编辑区域,后者常用于实现大纲视图。 #### 三、GEF的工作流程 GEF的应用程序工作流程紧密围绕MVC架构展开: 1. 用户对编辑区域的...

    GEF-II电场仪使用手册.pdf

    GEF-II地电场仪是一种专门用于测量地球表面地电场的设备,主要观测地球内部自然电场以及外部非人工电流体系与地球介质相互作用产生的电场。本手册详细介绍了该仪器的使用方法、技术指标、组成部分以及故障排除等,为...

    gef 转折线的相关方法实现和 GEF的API chm 格式

    总的来说,gef转折线的实现涉及PathFigure和Segment的组合使用,而GEF的API为开发者提供了丰富的工具和接口,使得构建交互式图形编辑器变得简单。通过熟练掌握这些知识,开发者可以轻松创建出具有复杂图形交互功能的...

    GEF典型实现例子

    标题“GEF典型实现例子”指的是使用Graphical Editing Framework (GEF)的示例应用。GEF是Eclipse平台下的一个开源项目,主要用于构建图形化编辑工具,它提供了丰富的图形用户界面(GUI)组件和框架,帮助开发者创建...

    GEF-ALL-3.7+GEF-ALL-3.8+GEF_Draw2d学习资料

    6. "jgraphx-1_10_0_6.zip.rar" 是JGraphX的压缩包,这是一个基于Java的图形库,有时会与GEF和Draw2D结合使用,用于创建更复杂的图形表示。 通过这些资源,学习者可以深入理解GEF和Draw2D的工作原理,掌握如何在...

    GEF_Tutorial.rar(GEF开发指南)

    本教程是针对想要学习和掌握GEF技术的开发者,通过实例教学,深入浅出地介绍GEF的使用方法和开发流程。 **1. GEF基础知识** GEF的核心概念包括模型(Model)、视图(View)和控制器(Controller)。模型是数据结构...

    GEF简易教程-学习GEF的入门教程

    总之,通过本教程的学习,你将掌握GEF的基本使用方法,学会如何在RCP项目中构建图形编辑器,并理解Editor与View的差异。继续探索GEF的高级特性,将有助于你开发出更加复杂且功能丰富的图形化应用程序。

    GEF教程及demo源码GEF_RCP_DEMO.zip

    在Java环境中,GEF常与SWT(Standard Widget Toolkit)结合使用,提供强大的图形渲染和交互功能。 本教程主要涉及以下几点关键知识点: 1. **GEF基础概念** GEF的核心是其五层架构,包括Model(模型)、View...

    GEF-SDK-3.7.0

    **GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它在Eclipse平台中被广泛使用。**GEF-SDK-3.7.0** 是这个框架的一个特定版本,提供了开发人员构建图形用户界面(GUI)和可视化编辑...

    GEF快速入门教程和EMF教程

    本文将详细介绍如何使用Graphical Editing Framework (GEF)实现一个简单的“Hello World”示例,并结合Eclipse Modeling Framework (EMF)进行扩展。通过此教程,读者能够理解GEF的基本架构以及如何在Eclipse RCP应用...

    GEF Example Source Code

    标题"GEF Example Source Code"表明这是一个关于GEF框架的示例源代码集合,它可能包含各种演示如何使用GEF构建图形编辑功能的代码实例。这些示例可以帮助开发者理解和学习如何有效地利用GEF库来创建自定义的图形编辑...

    IBM GEF 推广资料

    此外,还会提供动手实践的机会,通过“Shapes Example”来让参与者亲身体验GEF的使用,以避免常见错误。 为了参与这个教程,你需要准备: 1. **Eclipse 3.1M5a**:这是开发环境,确保你有这个版本或更高版本的...

    GEF_Demo_Code20170307

    这个项目旨在演示如何利用GEF进行图形界面开发,并且特别关注了通过适配器(Adapter)扩展点来实现属性页配置以及在非Editor的ViewPart中使用GEF。 GEF是Eclipse平台下的一个开源库,专门用于构建可自定义的、图形...

Global site tag (gtag.js) - Google Analytics