`
liugang594
  • 浏览: 987619 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

GEF中扩大、缩小时处理编辑行为

    博客分类:
  • GEF
 
阅读更多

我们为GEF应用提供了ZoomIn和ZoomOut功能之后,在图放大缩小的时候,如果有一个类似于TextCellEditor这样的直接编辑行为放在某个EditPart上,在未做处理的情况下,编辑控件的显示可能会不如人意。

 

因此我们希望在Figure变大缩小的时候,编辑控件也能随之变化。

 

要达到这个效果其他也不能。只要在控件显示之前计算正确控件大小,位置,和字体就可以了。

 

这个处理可以在CellEditorLocator的relacate()方法里处理,例如:

 

		Control control = celleditor.getControl();
		IFigure figure = editPart.getContentPane();
		Rectangle bounds = figure.getBounds();
		Point location = bounds.getLocation();
		ScalableFreeformRootEditPart root = (ScalableFreeformRootEditPart) editPart
				.getRoot();
		double zoom = root.getZoomManager().getZoom();
		
		Font font = control.getFont();
		FontData fontData = font.getFontData()[0];
		fontData.height = (float) (fontData.height*zoom);
		control.setFont(new Font(control.getDisplay(),fontData));
		
		int width = (int) (bounds.width*zoom);
		int height =(int) (bounds.height*zoom);
		
		figure.translateToAbsolute(location);
		if (figure instanceof ScrollPane) {
			control.setBounds(location.x, location.y, width,
					((ElementTypeFigure)((ScrollPane) figure).getContents()).getHeaderHeight());
		} else {
			control.setBounds(location.x, location.y, width,
					height);
		}

 

先得到当前的缩放倍率,然后把编辑控件的缺省大小,字体都乘以这个倍率之后再做处理,就能得到正确的结果了

 

分享到:
评论

相关推荐

    GEF中文教程+代码

    在本教程中,我们将深入探讨GEF的基本概念、设计原则以及如何使用它来开发自己的图形编辑器。 **1. GEF简介** GEF的设计目标是将图形编辑器的实现细节抽象化,让开发者能够专注于业务逻辑和模型设计,而不是底层的...

    GEF 入门版中文教程 源码

    3. **编辑器(Editor)**:在RCP环境中,编辑器是包含视图的工作空间,它处理用户的输入并更新模型。GEF提供了一套机制来创建和管理编辑器。 4. **命令(Command)**:GEF中的命令模式用于封装对模型的修改操作,使得...

    GEF入门学习例子

    GEF编辑器通常基于`AbstractGraphicalEditor`类,可以集成到Eclipse IDE中。 4. **指挥者(Commander)**: 指挥者处理用户操作,如工具栏点击或键盘输入,将这些操作转化为模型的更改。GEF的命令框架(Command ...

    GEF教程及demo源码GEF_RCP_DEMO.zip

    EditPolicy是GEF中用于实现特定编辑行为的适配器。它允许EditPart根据当前上下文动态改变其行为,增加了系统的灵活性。 7. **RCP(Rich Client Platform)** Eclipse RCP是一个用于构建桌面应用程序的框架,它...

    GEF学习资料.zip

    4. **编辑域(Edit Domain)**:编辑域是GEF环境中最高级别的容器,管理所有的编辑部分和参与者,负责全局事件的处理和协调。 5. **编辑部分(Edit Part)**:编辑部分是视图中的可交互区域,通常对应模型中的一个...

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

    总之,通过这个"GEF入门实例代码2",开发者可以了解到如何在Eclipse中构建一个基于GEF的图形编辑器,这不仅涉及数据模型的设计,还包括视图的绘制、用户交互的处理以及可撤销/重做机制的实现。通过实践,开发者可以...

    GEF锚点鼠标定位

    在GEF中,锚点的定位直接影响到连接线的形状和行为,特别是当用户通过鼠标进行交互时。"GEF锚点鼠标定位"这个主题主要探讨的是如何使锚点跟随鼠标移动,从而提供更加灵活和直观的用户操作体验。 1. **GEF框架基础**...

    GEF中文帮助实例

    GEF(Graphical Editing Framework)是Eclipse平台中的一个组件,主要用于创建图形化的编辑器。它提供了一套完整的框架,用于构建可扩展的、交互式的图形编辑应用程序,特别是针对那些需要可视表示的数据模型。GEF为...

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

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

    GEF典型实现例子

    这两篇文章可能分别由CSDN博主和博客园博主分享了他们在使用GEF和相关技术,如Draw2D(用于在GEF中绘制2D图形的库)时的经验和技巧。 在深入理解GEF时,我们需要关注以下几个核心概念: 1. **模型-视图-控制器(MVC...

    [翻译]Eclipse图形化编辑框架(GEF)/更新第7章:层和视图

    Eclipse图形化编辑框架(GEF)是Eclipse平台中的一个重要组件,主要用于构建可自定义的图形编辑工具。它为开发人员提供了一套全面的API和设计模式,使得创建复杂的图形用户界面(GUI)变得相对简单。在本篇博文中,...

    GEF 进阶+源码.rar

    3. **编辑域(Edit Domain)**:编辑域是GEF中的核心组件,它管理着所有的编辑器操作,包括绘图板(GraphicalViewer)、命令堆栈(CommandStack)等。 4. **图形编辑器(Graphical Editor)**:这是实际用户与图形...

    GEF快速入门教程和EMF教程

    通常情况下,GEF会集成到Editor中而非View中,这是因为Editor提供了文件保存机制,这对于图形编辑来说非常关键。 1. **创建Editor**: - 在`plugin.xml`的“extensions”页面中,添加一个新的编辑器。选择`org....

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

    Gef,全称Graphical Editing Framework,是Eclipse项目的一部分,是一个用于构建图形编辑框架的开源库,主要用于开发基于Swing或SWT的图形用户界面应用。这个框架支持模型驱动的编辑环境,允许开发者创建复杂的图形...

    GEF理解系列三

    在GEF(Graphical Editing Framework)中,理解其工作流程对于开发图形编辑工具至关重要。GEF主要用于构建基于SWT和JFace的图形用户界面,它提供了丰富的功能来处理图形元素的绘制、操作和交互。本篇文章将深入探讨...

    GEF入门系列

    - **流程图编辑器**:设计工作流或业务流程时,GEF可以帮助构建图形化的流程表示。 - **UML建模工具**:支持创建和编辑类图、序列图等多种UML模型。 5. **扩展与自定义** - **Zest图表库**:作为GEF的一个扩展,...

    GEF 入门教程 中文版

    - 编辑策略是GEF中的核心概念之一,用于控制图形元素的行为。 - 它定义了如何响应用户的输入(如鼠标点击、拖拽等)。 **知识点2:图形编辑部件(EditPart)** - 图形编辑部件是GEF中的基本单位,它将模型元素映射...

    java gef开发实例

    通过这个实例,开发者可以掌握如何利用GEF创建图形界面,理解MVC模式在图形编辑器中的应用,进一步提升在Eclipse RCP或图形化工具开发中的能力。通过实际操作和调试,可以加深对GEF框架的理解,并为将来更复杂的图形...

    GEF_Tutorial.rar(GEF开发指南)

    随着对GEF的深入学习,你可能还会接触到更多高级特性,如Zest(用于创建图表和网络图的GEF扩展)、自定义编辑政策(EditPolicies)以控制特定图元的行为,以及自定义图元的绘画策略等。 总之,"GEF_Tutorial.rar"是...

Global site tag (gtag.js) - Google Analytics