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

GEF实践总结(四)SelectionTool与SelectionEditPolicy

    博客分类:
  • GEF
阅读更多

一. 目标

  1. 能够选中Column。
  2. 对Column选择时,能够在首要选中、次要选中、取消选中显示不一样的颜色。


二. 修改GraphicalViewer,设置EditDomain,并指定ActiveTool
会发现目前的效果中,无法点选、圈选图像(Table或Column),没错,因为缺少了SelectionTool或MarqueeTool。

//
EditDomain domain = new EditDomain();
domain.setActiveTool(new SelectionTool());
graphicalViewer.setEditDomain(domain);

 

EditDomain 类似于GraphicalViewer的执行的上下环境,通过setActiveTool可以设置当前处于Active状态的Tool。
Tool :对鼠标事件、按键等的处理,或代理
SelectionTool :点选
MarqueeTool :圈选


三. 改写Figure

public TableColumnFigure() {
super();

this.setOpaque(true);
}

 

setOpaque :设置背景色不透明

public void setSelection(boolean primary, boolean selected) {
if (primary && selected) {
this.setBackgroundColor(ColorConstants.yellow);
} else if (selected) {
this.setBackgroundColor(ColorConstants.lightGray);
} else {
this.setBackgroundColor(ColorConstants.white);
}
}
  1. 首要选中时背景色为黄色
  2. 次要选中时背景色为灰色
  3. 未选中(取消选中)时背景色为白色

四. 给TableColumnEditPart添加SelectionEditPolicy

public class TableColumnSelectionEditPolicy extends SelectionEditPolicy {
@Override
protected void showPrimarySelection() {
TableColumnFigure figure = (TableColumnFigure) getHostFigure();
figure.setSelection(true, true);
}

@Override
protected void showSelection() {
TableColumnFigure figure = (TableColumnFigure) getHostFigure();
figure.setSelection(false, true);
}

@Override
protected void hideSelection() {
TableColumnFigure figure = (TableColumnFigure) getHostFigure();
figure.setSelection(false, false);
}
} 
 

a) EditPolicy
b) SelectionEditPolicy

  1. showPrimarySelection : 显示首要选中的模型。默认情况下直接使用showSelection方法。
  2. showSelection :显示选中的模型,非首要选中的模型。
  3. hideSelection :取消选中

五. 注册SelectionEditPolicy

@Override
protected void createEditPolicies() {
installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new TableColumnSelectionEditPolicy());
}
 

六. 启动,查看运行效果


七. 总结

  1. 通过给GraphicalViewer添加EditDomain,并指定Active的Tool为SelectionTool就可以点选图像了。
  2. 通过添加SelectionEditPolicy,就可以处理首要选中,非首要选中,未选中(取消选中)的不同效果了。

 

3
0
分享到:
评论
1 楼 xmind 2010-05-19  
请问楼主 怎么不让多选啊?
谢谢

相关推荐

    GEF学习总结

    GEF 全称 Graphical Editor Framework 。它是一个基于 eclipse 的图形化编辑框架。通过它,开发人员可以方便的以图形化的方式(而非文本的方式)展示和编辑模型。

    GEF学习体会与经验总结(.doc)

    **GEF学习体会与经验总结** GEF,全称Graphical Editing Framework,是Eclipse组织开发的一个图形编辑框架,主要用于构建可自定义的图形化编辑工具。它为开发者提供了丰富的API和工具,使得创建复杂的图形用户界面...

    Gef 学习总结

    **Gef 学习总结** Gef,全称为 Graph Editor Framework,是一个强大的图形编辑框架,主要用于构建可视化的图形编辑工具。在IT行业中,Gef通常与EMF(Eclipse Modeling Framework)结合使用,用于创建复杂的建模和...

    GEF研究总结

    【GEF研究总结】 GEF(Graphical Editor Framework)是一个专为开发图形化编辑应用程序的框架,它使得开发者可以通过图形化方式展示和编辑模型,从而提高用户体验。在各种图形化编辑应用中,如UML类图编辑器、XML...

    自己下的GEF资源打包

    描述进一步说明了这个包中包含的具体内容,如“GEF_Tutorial”、“GEF实例”、“入门教程”以及“GEF-whole-upload”,这些都暗示了这是一个全面的学习资源,旨在帮助用户从基础到实践全方位掌握GEF。 GEF,全称为...

    GEF教程,注重实践。

    **GEF教程——实践导向的图形编辑框架解析** 在IT领域,图形编辑框架(Graphical Editing Framework,简称GEF)是用于构建用户界面,特别是图形化编辑器的一种强大的开源工具。本教程着重于实践,旨在帮助开发者...

    GEF开发整合资料大全

    **GEF与Java的关系** GEF是用Java语言编写的,并且与Eclipse插件开发环境紧密结合。开发者可以利用Java的面向对象特性,结合GEF提供的API,轻松地构建出强大的图形编辑器。通过Eclipse插件机制,这些编辑器可以无缝...

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

    4. "GEF_Tutorial.pdf" 和 "GEF_zh(1).pdf"、"GEF_zh.pdf" 是GEF的教程,可能包含详细的示例代码和实践指导。 5. "eclipse插件开发快速入门图文教程.pdf" 和 "Eclipse插件开发学习笔记.pdf" 可能是针对Eclipse插件...

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

    10. **调试与测试**:提供调试GEF应用程序的方法和技巧,以及如何进行单元测试和集成测试。 通过深入学习这些内容,开发者能够具备创建专业级图形编辑器的能力,适用于软件建模、流程设计、电路图等多种场景。对于...

    GEF开发实践

    ### GEF开发实践知识点解析 #### 一、GEF向导与工程创建 **1. 创建GEF工程** GEF(Graphical Editing Framework)是Eclipse提供的一个强大的图形编辑框架,适用于构建复杂图形用户界面的应用程序。创建GEF工程是...

    GEF Example Source Code

    **GEF(Graphical Editing Framework)** 是一个用于构建图形编辑工具的开源框架...总的来说,这个压缩包为学习和实践GEF框架提供了一个宝贵的资源,开发者可以通过研究这些示例代码来提升自己的图形编辑工具开发能力。

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

    #### 四、深入理解Editor与View差异 虽然两者都可以用来显示GEF图形,但**Editor**与**View**存在本质区别: - **Editor**提供文件保存功能,适用于需要持久化数据的场景。 - **View**主要用于展示数据,不涉及...

    GEF框架入门学习

    这是我自己在学习GEF的时候做的一些总结。 1、GEF中的概念比如Command,Tool,Request等等。 2、GEF中使用到的几种设计模式。 3、GEF中对鼠标键盘事件处理的机制、流程。

    GEF教程

    通过系统的学习和实践,尤其是参考“八进制”Blog上的详尽教程,开发者能够逐渐掌握GEF框架的精髓,从而在实际项目中发挥其最大效能,创造出既美观又实用的图形编辑应用。GEF框架的学习之路虽漫长,但其带来的回报...

    GEF实现拷贝粘贴

    标题“GEF实现拷贝粘贴”涉及到的是在软件开发中使用Graphical Editing Framework(GEF)进行图形界面编辑时,如何实现复制和粘贴功能的技术。GEF是Eclipse平台下用于构建图形化编辑器的框架,它提供了一套完整的...

    GEF入门学习例子

    **GEF入门学习例子** **概述** `GEF`(Graphical Editing Framework)是Eclipse开源组织提供的一款强大的图形编辑...在实践中,可以进一步扩展GEF,例如添加自定义图形元素、改进用户界面或者实现更复杂的图形操作。

    GEF 入门教程

    **GEF 入门教程** ...总结,GEF为开发者提供了强大的图形编辑功能,通过理解和掌握GEF的原理和实践,可以高效地构建具有专业图形界面的软件工具。在学习过程中,不断实践和研究,将使你在这个领域更加精通。

    GEF典型实现例子

    MHT文件通常是网页的单个文件存档,可能保存了两篇与GEF相关的博客文章:“Draw2D备忘 - 技术源于生活 - CSDN博客.mht”和“2008年1月1日 随笔档案 - Liugang的博客 - 博客园.mht”。这两篇文章可能分别由CSDN博主和...

    GEF_Tutorial.rar(GEF开发指南)

    "emf&gef.pdf"和"GEF_Tutorial.pdf"这两份文档很可能包含了详细的实例代码和步骤说明,帮助读者逐步理解并实践上述知识点。通过这些例子,你可以学习如何将理论知识应用到实际项目中。 **9. 进阶主题** 随着对GEF的...

Global site tag (gtag.js) - Google Analytics