`

EditPart的选中

    博客分类:
  • GEF
 
阅读更多

EditPart的选中状态:

在EditPart里面可以通过setSelected(int value)的方式,设置对EditPart的选中状态。一共有三种选中状态:SELECTED_NONE = 0; SELECTED = 1; SELECTED_PRIMARY = 2;

当你仅仅设置了这个状态的时候,编辑器界面是会有改变的,它会让你感觉选中了EditPart。但是这个时候你看大纲视图,你看属性视图,你会发现都没有做相应的变化。而且你这个时候,你对你选中的对象做拖拽操作的时候,是无效果的。

由此可见,EditPart的setSelected方法只是一个描述选中状态类型的操作,它并没有帮你执行,鼠标选中当前节点的操作。

 

如果你想用代码的方式选中编辑器上的某个节点,可以获取它或者它的父EditPartViewer对象,然后把它的EditPart传入进去。代码如下:

 

getParent().getViewer().select(getParent());

 

在EditPartViewer里面有一个SelectionManager的对象,对选中的节点进行管理。

 

/**
	 * @see EditPartViewer#setSelectionManager(SelectionManager)
	 */
	public void setSelectionManager(SelectionManager model) {
		Assert.isNotNull(model);
		if (selectionModel != null)
			selectionModel.internalUninstall();
		selectionModel = model;
		model.internalInitialize(this, selection, new Runnable() {
			public void run() {
				fireSelectionChanged();
			}
		});
		if (getControl() != null)
			model.internalHookControl(getControl());
	}

 

/**
	 * Fires selection changed to the registered listeners at the time called.
	 */
	protected void fireSelectionChanged() {
		Object listeners[] = selectionListeners.toArray();
		SelectionChangedEvent event = new SelectionChangedEvent(this,
				getSelection());
		for (int i = 0; i < listeners.length; i++)
			((ISelectionChangedListener) listeners[i]).selectionChanged(event);
	}
 

上面这段是来自AbstractEditPartViewer类里面对选中这一个操作的处理。最基本的原理还是自己构造一个事件,让后触发选中。

 

 

另外在DefaultEditDomain里面也有很多触发事件的方法,类似鼠标可键盘的都有,虽然传入的事件基类跟SelectionChangedEvent不一样,但是基本原理相似。我自己没试,所以也不知道效果如何。 

 

 

分享到:
评论

相关推荐

    第四章 GEF框架.doc

    视图(View)则利用Draw2D系统来展示模型,而控制器(Controller)通常表现为EditPart。EditPart作为模型和视图之间的桥梁,负责处理用户操作和模型更新之间的交互。 MVC模式在GEF中的工作流程如下:用户对视图进行...

    InfoJet Service 2.0 Build 2007.03.05

    InfoJet EditPart 是一系列用于在浏览器中编辑SharePoint中InfoPath表单的Web Parts。 InfoJet EditPart使用InfoJet Service作为InfoPath表单Web编辑引擎。在SharePoint中使用InfoJet EditPart无需编写任何程序。...

    Eclipse_GEF.doc

    每个模型对象都有对应的EditPart对象,而这些EditPart对象又由**EditPartFactory**工厂负责创建。此外,EditPart还安装了多个**EditPolicy**对象,用于处理特定类型的用户请求,并将请求转化为对模型的操作。 #### ...

    GEF 入门教程

    3. **EditPart**: EditPart是模型和视图之间的适配器,它负责将模型的变化反映到视图上,反之亦然。 4. **Command**: 命令模式是GEF中的一个重要概念,用于管理用户的编辑操作,确保可撤销/重做功能。 **四、GEF...

    GEF-runtime-3.3.zip

    4. **图形交互**:通过监听和响应用户的鼠标和键盘事件,实现图形元素的选中、拖拽、复制、粘贴等操作。 5. **测试和调试**:在Eclipse环境中运行插件,进行功能验证和性能优化。 此外,GEF还提供了许多高级特性,...

    GEF in Action

    它由几个关键组件组成,包括Model(模型)、View(视图)、EditPart(编辑部分)、Figure(图形)和Command(命令)。Model代表数据模型,是业务逻辑的载体;View是模型的可视化表示,通过EditPart进行管理;...

    GEF入门实例代码2《Eclipse插件开发》中实例

    Command代表可撤销/重做的操作,Model表示数据模型,View负责显示图形,EditPart作为模型和视图之间的桥梁,而Figure则是实际在屏幕上绘制的对象。 2. **实例代码结构分析** 在" GefExample "这个压缩包中,通常会...

    GEF入门教程 八进制版本的源代码

    4. **EditParts**:编辑部件是视图中的可编辑单元,每个EditPart对应一个模型元素。 5. **Commands**:命令模式用于处理图形编辑操作,确保操作的可撤销/重做。 6. **Connectors**:连接器用于创建和管理图形元素...

    The Eclipse Graphical Editing Framework (GEF)

    GEF提供`EditPart`类作为视图的基础,开发者可以通过继承`EditPart`并重写相关方法来创建自定义视图。 4. **控制器(Controller)** 控制器处理用户输入,将它们转化为对模型的更改。GEF的`Command`机制允许开发者...

    GEF资源文件

    3. **EditPart(编辑部件)**:EditPart是GEF中实现图形化编辑的关键组件,它负责将模型对象映射到图形元素,并处理用户交互。EditPart包含了一个图形化表示(figure)和对模型的操作逻辑。 4. **Command(命令)**...

    Gef 学习总结

    - **编辑部分(EditPart)**:编辑部分是视图中的可编辑组件,每个图形元素都有对应的EditPart,负责渲染和处理用户输入。 - **命令(Command)**:Gef使用命令模式来实现可撤销/重做的功能,每个编辑操作对应一个...

    eclipse插件开发框架GEF API文档

    - 实现EditPart:将模型转换为可视化的EditPart,处理绘图和事件。 - 创建Part:定义Part类,关联EditPart和View。 - 实现Command:定义可撤销/重做的操作。 - 配置和启动:在Eclipse插件的启动配置中添加新的...

    深入GMF/EMF/GEF

    主要是对自己做的项目的一些总结,包括如何自动添加图元、删除图元,建立连线,获得编辑器的EditPart,不打开编辑器,获取编辑器的EditPart,属性居中,自动保存图片等功能的实现。另外还有一些参考资料

    GEF教程及demo源码

    - **EditPart**: 视图中的表示层,负责将Figure与模型关联,处理用户交互。 - **Model**: 数据模型,存储图形的结构和属性信息。 - **Command**: 操作命令,封装了对模型的修改,支持撤销/重做操作。 **3. GEF工作...

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

    - `org.eclipse.gef.editpolicies`包下的类:提供了各种编辑策略,如连接策略、布局策略等,它们决定了EditPart如何响应特定请求。 - `org.eclipse.gef.handles`包下的类:用于创建图形元素的手柄,用户可以通过手柄...

    PluginPDF&Notes.7z

    GEF MVC (Mode, Figure, EditPart) (交互层,模型与图形元素映射,工作台交互处理) View: Draw2d 图形化界面 Control 核心 mode 用户设计 (绘图,着色,图形布局管理,图形缩放控制) SWT 画布 Canvas,处理...

    GEF理解系列三

    当用户在图形视图上执行操作(如点击、拖动等)时,SWT事件会被转换为请求(request),这些请求随后被发送到Controller(通常是EditPart)上。Controller并不直接处理操作,而是通过安装在其上的Policy对象来处理。...

Global site tag (gtag.js) - Google Analytics