![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GEF
文章平均质量分 81
核桃科技
这个作者很懒,什么都没留下…
展开
-
在GEF中使用Ctrl + 鼠标中间键实现放大缩小
viewer.setProperty(MouseWheelHandler.KeyGenerator.getKey(SWT.MOD1), MouseWheelZoomHandler.SINGLETON);加上这句就OK了2009-09-21 17:01:30 · 146 阅读 · 0 评论 -
外部执行Command而Editor不提示已修改的解决办法
理论:有些时候的需求往往不是通过plette来创建模型和连线以及其他的Command,那么你要想在别的地方执行Command,且让DiagramEditor知道你修改了,那么你就将Command传到Editor中去执行就可以了;具体的实现:在DiagramEditor中提供一个方法,用来执行Comamnd,代码如下: [code="java"] public void executeComman...2009-12-21 16:19:23 · 83 阅读 · 0 评论 -
用ToolbarLayout实现多个IFigure组合在一起
最近忙着移动的测试,好久没发博文了,发现现在很多人都想要在figure下加一行字来进行描述,其实这个实现起来也很简单,就是重写figure的构造方法,既然简单我就简要的说说实现的步骤吧 写一个类继承Figure并实现HandleBounds接口 接下来就是重点了,在构造方法中new ToolbarLayout();这个ToolbarLayout有个方法也很重要,那就是setSpacing它需要...2009-07-21 11:26:32 · 82 阅读 · 0 评论 -
实现GEF中editor的背景为网格
在editor中的initializeGraphicalViewer方法中加上如下代码即可: [code="java"]getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_ENABLED, new Boolean(true)); getGraphicalViewer() .setProperty(SnapT...原创 2010-05-13 17:32:30 · 112 阅读 · 0 评论 -
将GEF模型显示保存为图片
from:http://blog.csdn.net/moneyice/archive/2007/03/08/1524371.aspx 项目需求,要把GEF模型在editor中的显示保存为一张图片,便于预览或在文档中使用。研究了GMF的代码,它使用AWT来进行图片的输出,所以在中间作了一个SWT和AWT的转换Adapter. 是一个叫做AWTGraphics的类.其实使用SWT本身就可以进行。...原创 2009-09-02 18:56:09 · 107 阅读 · 0 评论 -
Bendpoint随着图元位置的变化而变化
我这里以gef.tutorial.step为例,在此工程基础修改代码实现该功能 首先将ContentsEditPart的布局做如下调整 [code="java"] protected IFigure createFigure() { Layer figure = new Layer() { public void paint(Graphics graphics) { ...2011-04-15 11:33:52 · 242 阅读 · 0 评论 -
创建连线后点击空白区域箭头恢复成默认样式
关于连线创建的过程大家可以看[url]http://blog.chinaunix.net/u2/89957/showart_2068848.html[/url] 继承ConnectionCreationTool然后做如下实现就可以了: [code="java"]protected boolean handleButtonDown(int button) { boolean res...2010-12-29 21:39:21 · 88 阅读 · 0 评论 -
根据模型得到对应的控制器
[code="java"](EditPart) getGraphicalViewer().getEditPartRegistry().get(element)[/code]2010-12-30 10:49:39 · 106 阅读 · 0 评论 -
实现GEF RulerComposite
模型部分: [code="java"]public class ElementBase extends AbstractModel implements IAdaptable { /** * */ private static final long serialVersionUID = 1L; /** * 布局 */ private Rectan...2010-12-30 13:41:31 · 198 阅读 · 0 评论 -
连线上加文字
前面写了个连线上显示文字,直接用的label,那样确实简单,但有的时候还是需要独立出来,这个时候就要有单独的控制器,原理很简单:即文字是连线的子节点,然后将文字添加到连线上面,就OK了;实现父子关系很简单:在连线控制器中添加getChildren方法就OK了,然后将文字绑定到连线上面就是刷新的时候确定连线的上的坐标然后绑定Label就可以了,直接上代码: [code="java"]protect...2010-12-30 13:50:59 · 295 阅读 · 0 评论 -
缺省将FlyoutPalette放在左边
重写FlyoutPaletteComposite.FlyoutPreferences的getDockLocation()方法 [code="java"]public int getDockLocation() { int dock = getPreferenceStore().getInt(PALETTE_DOCK_LOCATION); if (0 == dock) { ...2010-12-30 22:49:43 · 116 阅读 · 0 评论 -
给DiagramEditPart添加Request
实现ScalableFreeformRootEditPart中的performRequest方法即可: [code="java"]@Override public void performRequest(Request req) { if (req.getType().equals(REQ_OPEN)) { MessageDialog.openConfirm(null, n...2011-01-14 00:16:23 · 98 阅读 · 0 评论 -
GEF实现用鼠标滑轮控制画布的放大与缩小
很简单哇,GEF已经实现了,一行代码我就不多说了,在configureGraphicalViewer中加入[code="java"]viewer.setProperty(MouseWheelHandler.KeyGenerator.getKey(0), MouseWheelZoomHandler.SINGLETON);[/code] getKey取的是键盘上的Key,0则表示没有,CTRL +鼠...2010-10-28 13:22:23 · 200 阅读 · 1 评论 -
缺省将Palette展开
[code="java"] /** 弹出调色板使用状态的首选项标识 */ private static final String PALETTE_STATE = "AbstractGraphicalEditorPaletteFactory.State" private FlyoutPaletteComposite.FlyoutPreferences createPalettePrefe...2011-07-29 17:37:00 · 156 阅读 · 1 评论 -
去掉子节点句柄
虽然可以通过给子节点添加SelectionPolicy来完成对句柄的控制,但是,如果子节点是多种类型的呢,就得给每个editpart都添加了,所以可以尝试使用如下方法来实现: 在父节点的XYLayoutPolicy中对createChildPolicy做空实现即可[code="java"]/* (non-Javadoc) * @see org.eclipse.gef.editpolic...2011-04-09 19:40:37 · 110 阅读 · 0 评论 -
给Figure添加滚动条
Draw2d中有ScrollPane这样一个IFigure,它可以设置从不、一直、自动三种方式来现实滚动条,默认是自动。 实现步骤: 1、添加容器 panel = new Panel(); 2、给容器添加布局(参照Draw2D布局,以便使用适合自己的布局) 3、在EditPart中将panel设置为ContentPanel 下面给出我的实现: listboxFigure: [c...2011-04-10 00:53:31 · 491 阅读 · 0 评论 -
选择或取消选择当前的EditPart,改变连线视图的连线样式
在LineConnectionEditPart类中实现AbstractConnectionEditPart中的setSelected方法,代码如下: [code="java"]@Override public void setSelected(int value) { // TODO Auto-generated method stub super.setSelected(val...2009-12-21 14:45:48 · 107 阅读 · 0 评论 -
自定义Decoration
大家都知道new PolygonDecoration就表示带箭头,但有的时候不想是箭头,想搞个圆圈,或者方块,那怎么做呢?那就只能自定义PolygonDecoration咯,我昨天自定义了一个圆圈,给大家看看吧[code="java"]package com.netunit.workbench.parts; import org.eclipse.draw2d.Ellipse; impor...2009-12-21 14:36:40 · 100 阅读 · 0 评论 -
IFigure双击事件
[code="java"]@Override public void performRequest(Request req) { // System.out.println(req.getType()); if("open".equals(req.getType())){ try { //打开视图 IWork...2009-05-19 14:20:30 · 130 阅读 · 0 评论 -
控制拖拽范围
GEF默认只有向下和向右拖动,如果你向左拖且超出视角范围,那你就看不到了,我是直接让它越界时禁止拖拽,拖拽是由ChangeConstaintCommand来完成的,因此在里面实现一个canExecute就OK了canExecute内容如下: [code="java"]@Override public boolean canExecute() { if (constraint.x < 0...2009-11-17 12:28:47 · 159 阅读 · 0 评论 -
GEF中通过键盘来移动图元和改变图元大小
GEF内部本身是支持键盘操作图元的,只是比较的麻烦,不直观——选中图元后,按.(英文句号)键,光标变为十字箭头型,再按上下左右方向键即可移动图元了;如果连按两下.(英文句号)键,光标变为水平、垂直箭头型,按方向键即可改变图元的大小。 如果想要修改GEF的行为,改为选中图元后,直接按方向键移动图元,则要用自己实现的MyGraphicalViewerKeyHandler类替换掉GEF中的Grap...2009-11-20 20:48:22 · 122 阅读 · 0 评论 -
设置GEF connection样式为虚线
修改LineConnectionEditPart中的createFigure方法内容如下: [code="java"]PolylineConnection connection=new PolylineConnection(); connection.setForegroundColor(FlashGot.getColor_Magenta()); //设置线的颜色 connecti...2009-11-20 20:50:44 · 152 阅读 · 0 评论 -
给editor加右键菜单
我这里介绍两种方法 1: 在initializeGraphicalViewer方法中添加如下代码: MenuManager menuManager = new MenuManager(); menuManager.add(new Action("创建") { @Override public void run() { CreateNetun...2009-05-27 14:59:15 · 343 阅读 · 0 评论 -
给图元去掉句柄,且选中时改变图元的边框颜色
用GEF实现过拖拽例子的朋友都应该知道拖拽用的是CustomXYLyoutEditPolicy实现的,改变图元大小也是它实现的,那么我们就在这里做文章了 首先重写CustomXYLayoutEditPolicy中的createChildEditPolicy方法,代码如下[code="java"]@Override protected EditPolicy createChildEditPol...2009-11-26 09:35:35 · 209 阅读 · 0 评论 -
给editor加背景图片
与八进制博客里的不同之处就在于我不是new的ScalableFreeformRootEditPart而是ScalableRootEditPart [code="java"]viewer.setRootEditPart( new ScalableRootEditPart() { // 覆盖ScalableRootEditPart的createlayers方法以便增加自己的...2009-06-01 10:19:09 · 153 阅读 · 0 评论 -
在鹰眼中显示Editor的背景图片
众所皆知,鹰眼主要是由如下代码来完成的: [code="java"]thumbnail = new ScrollableThumbnail((Viewport)((ScalableRootEditPart)getGraphicalViewer().getRootEditPart()).getFigure()); thumbnail.setSource(((ScalableRootEd...2009-11-28 19:28:04 · 91 阅读 · 0 评论 -
星形排列算法
List children = parent.getChildren(); // 1、设置圆心 Point center = new Point(310, 250); // 2、设置半径 int radius = 160 + children.size() * 3; // 3、得到平分角 double deltaAngle = 2 * Math.PI...2010-03-15 20:15:58 · 271 阅读 · 0 评论 -
横向排列算法
List children = parent.getChildren(); int initX = 0; int inity = 0; int goup = 140; int count = 7; for (int i=0;i2010-03-15 20:17:06 · 165 阅读 · 0 评论 -
public忽悠了不少人啊
当有人想继承org.eclipse.draw2d.graph中的GraphVisitor类时,却惊奇的发现import不进来,而且jar包里确实有这个包,这个时候不妨看看它的源代码吧, [code="java"]/******************************************************************************* * Copyrigh...2009-12-09 16:29:15 · 93 阅读 · 0 评论 -
gef中连接线设置抗锯齿
方法:更改策略 绘制完成线后,在其所在editpart中的refreshVisuals()中获取连接线线层后,设置setAntialias(SWT.ON)即可 今天有人问我该加在哪,我也不拐弯抹角了, 在最底层画布的model上对应的part复写refreshVisuals(),在里面编写Animation.markBegin(); [code="java"]ConnectionLayer...2009-06-10 16:36:33 · 143 阅读 · 0 评论 -
给图形模型添加菜单
有多种方法,一种是八进制 BLOG里写的给editor添加上下文菜单,然后通过判断去给模型添加不同的菜单,第二种则是自己给ifigure构造一个Control然后去构造菜单,第三种是最简单的了,添加鼠标事件,判断是否是鼠标右键事件,如果是,则创建菜单,由于时间的关系我这里介绍最简单的吧 [code="java"]image.addMouseListener(new MouseListener()...2009-06-10 17:03:39 · 73 阅读 · 0 评论 -
设置连线样式
[code="java"] private void setConnectionShiape(String str){ if (0 == "直线".compareTo(str)) { connection.setConnectionRouter(new BendpointConnectionRouter()); connection.setLineStyle(SWT.LINE...2009-12-16 12:26:07 · 240 阅读 · 0 评论 -
让连线上的Label动起来吧
大家都知道GEF中连线上的label默认是在线的中间,一旦要连很多线的时候显示label就是棘手的问题了,所以啊就要求可以移动label避免重叠啊 三个步骤 第一步:写个类继承MidpointLocator [code="java"] public class MidpointOffsetLocator extends MidpointLocator { pr...2009-12-19 12:24:35 · 80 阅读 · 0 评论 -
图元间多条连线处理方式
DiagramEditPart implements LayerConstants即可,也不需要对连线做抗锯齿处理 如图: [img]http://dl.iteye.com/upload/attachment/457298/df886cc7-6140-3a92-a2bf-96965c163c06.gif[/img]2011-04-10 01:10:54 · 270 阅读 · 0 评论