一. 目标
-
能够选中Column。
-
对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);
}
}
-
首要选中时背景色为黄色
-
次要选中时背景色为灰色
-
未选中(取消选中)时背景色为白色
四. 给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
:
-
showPrimarySelection
: 显示首要选中的模型。默认情况下直接使用showSelection方法。
-
showSelection
:显示选中的模型,非首要选中的模型。
-
hideSelection
:取消选中
五. 注册SelectionEditPolicy
@Override
protected void createEditPolicies() {
installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new TableColumnSelectionEditPolicy());
}
六. 启动,查看运行效果
七. 总结
-
通过给GraphicalViewer添加EditDomain,并指定Active的Tool为SelectionTool就可以点选图像了。
-
通过添加SelectionEditPolicy,就可以处理首要选中,非首要选中,未选中(取消选中)的不同效果了。
分享到:
相关推荐
GEF 全称 Graphical Editor Framework 。它是一个基于 eclipse 的图形化编辑框架。通过它,开发人员可以方便的以图形化的方式(而非文本的方式)展示和编辑模型。
Gef 学习总结,Gef 相对资料比较少没有完整的文档都要靠自己学习
该资料对GEF这个框架的一些理解,以及自己的一些学习体会,其中大部分是从网上搜到的一些关于GEF框架的质料,这里已经经过了整理,对于一个初学者很有帮助。
关于gef的一点研究总结
这是我自己在学习GEF的时候做的一些总结。 1、GEF中的概念比如Command,Tool,Request等等。 2、GEF中使用到的几种设计模式。 3、GEF中对鼠标键盘事件处理的机制、流程。
GEF入门必读 GEF入门系列 GEF-whole-upload 感谢八进制
我下的资源的打包,希望有帮助,包括:GEF_Tutorial,GEF实例,入门教程,GEF-whole-upload
RCP与GEF的课件,简单的介绍了RCP和GEF中的各组件的功能,已经工作流程
GEF开发实践说明,简单的实例说明。有什么问题请留言
GEF: Graphical Editing Framework <br>GEF是一套MVC Framework,它能帮你比较容易的建立图形化的编辑器,V(View)的部分常常是基于SWT的Draw2D,因此Draw2D也看作是GEF的一部分。依赖:org.eclipse.gef***, org...
基于GEF框架的SVG制作工具设计与实现
gef 绘图折线的实现方法。 gef API chm 格式
GEF简易教程-学习GEF的入门教程,不错的gef入门教程
GEF eclipse 插件
GEF-ALL-3.7 GEF-ALL-3.8 官方包。 GEF Draw2d 学习资料
GEF.rar GEF.rar GEF.rar
Agenda Start things off What is GEF? GEF Demo Draw2d Overview Example GEF Overview Break Hands-on Activity: Shapes Example
一本很好的GEF入门教程,通过实例详细的描述了GEF开发的全流程。
这是我参考了一些其他资料,自己写的一个GEF示例程序。 在这个demo中你可以看到以下的功能: 1. 往画布上添加多种节点 2. 节点之间的连线 3. 节点内容的编辑功能 4. 删除连线 5. 删除节点 6. 对节点的拖动以改变...