GMF常见问题

2018-11-19 20:28

八进制

少年壮志无烟抽 博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅

:: 管理 ::

259 随笔 :: 0 文章 :: 3316 评论 :: 14 引用

公告

? 所有文章若无特别说明均为原创,内容仅代表个人立场。转贴请注明出处;欢迎评论和提问,不要灌水哦。 ? 关注:统计分析 ? 随笔预告:(暂无)

常见问题索引:

GMF JSF Dojo Hadoop RapidMiner DB2 Cognos8 Palm开发 Diagrammer

邀请大家参与一个小调查:

电信资费套餐接受度市场调查

粉丝 - 9 关注 - 0

我的主页 个人资料 我的闪存 发短消息

搜索 随笔分类 ? ? ? ? ? ? ? ? ? ?

相册 Eclipse(108) (rss) EMF(22) (rss) GEF(25) (rss) GMF(10) (rss) Java(45) (rss) Linux(9) (rss) Palm开发(4) (rss) RCP(5) (rss)

Web服务/语义Web(17) (rss) 其他(51) (rss)

? ? ? ?

最新评论 苗苗的相册 其他图片 我的相册 仔仔的相册

? ? ? ? ? ? ? ? ? ? ? ?

1. Re:GEF常见问题1:为图形编辑器设置背景图片 搞定了,在command里 来操作

?

2. Re:GEF常见问题1:为图形编辑器设置背景图片 图像 是以前编辑好的,在另一个editor中打开

--wujihuio

?

3. Re:GEF常见问题1:为图形编辑器设置背景图片 不过我怎么设置 画布上的图形不能拖拽???

--wujihuio

?

4. Re:GEF常见问题1:为图形编辑器设置背景图片 谢谢了

--wujihuio

?

5. Re:GEF常见问题1:为图形编辑器设置背景图片

@wujihuio 应该是图层顺序反了,注意super.createLayers(layeredPane);这句要在最后调用。

--wujihuio

?

6. Re:GEF常见问题1:为图形编辑器设置背景图片

--八进制

我按这个方法 设置了北京图,但是北京把图形层覆盖了,能不能把你这份例子给我一份,谢谢,这几天都在看你的博客,我

的邮箱是wujihuio@163.com,你留的下载地址现在不能下了

?

? ? ? ?

7. Re:由模型生成GEF应用程序:Merlin

@houyong_soft Merlin早就停止开发了吧,为什么不用GMF?

--wujihuio

?

8. Re:由模型生成GEF应用程序:Merlin

--八进制

你好,我按照你介绍的方法把Library的例子做了,虽然生成了Library.gef工程,但是src文件夹中只有空的Library.gef

包,没有任何源代码,这是什么原因啊?

?

? ?

9. Re:GEF常见问题5:自动布局

--houyong_soft

请问我有一个RectangleEditPart和一个EllipseEditPart,他们有各自的figure。如何实现RectangleEditPart嵌套到

EllipseEditPart里面去,作为...

?

? ?

10. Re:[Eclipse]GEF入门系列(六、添加菜单和工具条)

--jicx

八进制你好: 请教一下,如果具有实际功能的Action需要使用Diagram模型对象,而编辑器会在不同的Diagram对象之

间进行切换。当流程图视图切换后,希望工具栏中的Action也相应的改变,应...

?

阅读排行榜 --GEF

? ? ? ? ? ? ? ? ? ?

1. 解决高分辨率看网页字体太小问题的一个方法(62567) 2. Struts常见异常信息和解决方法(45221)

3. [Eclipse]GEF入门系列(三、应用实例) (40712) 4. [Eclipse]GEF入门系列(序)(36803) 5. [WS]使用Axis发布简单的Web服务(29828) 6. [测试]使用Mantis跟踪bug(25869)

7. 让IE浏览器提示下载或直接打开word文档(22970) 8. [Eclipse]GEF入门系列(一、Draw2D)(19899) 9. [Hibernate]使用XDoclet生成hbm.xml(19887) 10. [Eclipse]GEF入门系列(二、GEF概述)(15671)

GMF常见问题

1、问题:连接线旁边没有文字标签和箭头

文字标签:在gmfmap里的Connection Mappping下增加Label Mapping元素;箭头:在gmfgraph里为Polyline Connection指定一个Polyline Decorator作为source/target decoration,要为这个Decorator创建一些Template Point来决定箭头的形状,例如指定(-1,-1), (0,0), (-1,1)。 2、让一个图形可以在另一个图形里随意改变位置

在gmfgen里把作为容器的那个图形的Gen Compartment里把Listlayout属性改为false。 3、隐藏图形标签文字前的小图标

在gmfgen里把相应的Gen Node Label元素的Element Icon属性改为false(但重新生成gmfgen时这个属性会被覆盖)

4、让标签里同时显示和编辑多个属性

在gmfmap里把相应的Label Mapping元素的View Pattern属性改为类似“属性1:{0},属性2:{1}”的形式。 5、问题:跨Compartment进行连线操作时会创建两条连线

GMF的bug,见https://bugs.eclipse.org/bugs/show_bug.cgi?id=148021,在你的XXXDiagramCanonicalEditPolicy里覆盖方法:

protected boolean shouldHandleNotificationEvent(Notification event) { return false; }

6、让Label出现在图元外面

在gmfgraph里定义这个Figure时把Label定义在外面,而非定义为Figure的子元素。 7、在gmfgraph里设置一个Figure使用GridLayout后生成的代码无法正确编译 GMF的bug,见https://bugs.eclipse.org/bugs/show_bug.cgi?id=133279 8、改变Figure的缺省大小

在gmfgraph里为Figure增加Preferred Size子元素;若想让图形尺寸小于40x40象素,要覆盖XXXEditPart里的createNodePlate()方法。在GMF2.0里,使用DefaultSizeFacet,见

http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg01546.html 9、禁止用户修改图元的尺寸

在gmfgraph里将此Node的Resize Constraint属性值改为“NONE”(但size-on-drop功能仍存在,也就是用户仍然可以在创建时指定尺寸)。

10、让Compartment在容纳不下子图形时自动显示滚动箭头

在genmodel的GenDiagram元素里改Units属性为“himetric”(经测试对GMF1.0不起作用),见https://bugs.eclipse.org/bugs/show_bug.cgi?id=140789 11、为画布Canvas指定Layout

GMF1.0不支持,需要手工改代码,见https://bugs.eclipse.org/bugs/show_bug.cgi?id=139951 12、Border Item

Border Item是指只能紧贴其他图元运动的图形,GMF1.0可通过打patch实现这个功能,见https://bugs.eclipse.org/bugs/show_bug.cgi?id=124826;GMF2.0开始支持。 13、规定连接线的约束,例如规定source和target不能是同一对象

在gmfmap里定义,在Link Mapping元素下定义Link Constraint元素,缺省使用OCL,见教程

http://wiki.eclipse.org/index.php/GMF_Tutorial_Part_2#Link_Constraints;不论使用OCL或是Java,在XXXBaseItemSemanticEditPolicy里会生成LinkConstraint类,在生成command前检查是否满足这些constraint。 14、Audit

定义的constraint出现在com.your.diagram项目的plugin.xml里,作为constraintProvider扩展;为了让这些constraint生效,要在gmfgen的Gen Diagram元素里设定Validate Enabled/Decorator属性值为true,并将优先级(Validation Provider Priority, Validation Decorator Provider Priority)设定为medium(非lowest)才会在Diagram菜单里出现Validate命令。

若是在gmfmap里选择使用Java验证,则在gmfmap里指定的是一个Java方法名,生成代码后,应在XXXValidationProvider类里应实现这个方法。 15、GMF里从EditPart得到Semantic Model

因为GMF里EditPart#getModel()方法得到的是Notation Model里的对象,如Node或Edge,所以可以使用这样的方法得到真正的业务对象:((org.eclipse.gmf.runtime.notation.View) EditPart.getModel()).getElement()或ViewUtil.resolveSemanticElement(view)

16、问题:从gmfgen生成代码时产生java.lang.ClassCastException: org.eclipse.jdt.internal.core.jdom.DOMMethod 删除原先生成的代码中无法编译的类,重新生成。 17、在gmfgraph里定义Polyline的图形 在Rectangle上画Polyline,注意是固定大小的

18、问题:每次重新生成代码后,在plugin.xml里的修改会丢失

GMF1.0里生成代码时不能保留plugin.xml里的任何修改,从GMF2.0开始用户可以在plugin.xml里标记不要覆盖的区域

19、问题:Outline树视图里的节点没有图标

在plugin.xml里找到org.eclipse.gmf.runtime.emf.type.core.elementTypes扩展点,在下面相应的元素里指定icon属性,见http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg00341.html,但我在GMF1.0里测试不起作用,何况每次生成代码时这个文件都会被覆盖。

20、问题:提示java.lang.IllegalStateException: Cannot modify resource set without a write transaction异常

在GMF里修改Model要通过在TransactionalEditingDomain里执行命令完成,GMF提供的RecordingCommand是不错的选择,它为我们提供了Undo支持,我们只要实现执行部分的代码就可以了,下面是一个例子:

TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(myElement); domain.getCommandStack().execute(new RecordingCommand(domain) { @Override

protected void doExecute() { //Do anything } });

若是在EditPolicy里需要返回一个Command,用下面的代码:

AbstractTransactionalCommand command = new AbstractTransactionalCommand(TransactionUtil .getEditingDomain(myElement), \ @Override

protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { //Any modification to the model

return CommandResult.newOKCommandResult(); } };

21、问题:创建图元时提示异常“java.lang.IllegalArgumentException: Figure must be a child” Workaround:注释掉产生异常的setRatio()方法里的全部内容。

22、问题:在AbstractBorderItemEditPart子类的getPrimaryDragEditPolicy()方法里提示ClassCastException异常

在gmfgraph里检查作为BorderItem的那个Node的Resize Constraint属性是否改过,若为缺省的NSEW则对应的editpart不会生成这个方法,对BorderItem(即Affixed Node Side属性不为NONE的Node)来说这个属性虽然设置为NSEW也无法改变大小。相关链接:https://bugs.eclipse.org/bugs/show_bug.cgi?id=155698 23、如何禁用PopupBar和ConnectionHandler功能(鼠标停止在图形上时出现的连线符号) 在需要禁用该功能的EditPart的createDefaultEditPolicies()方法的最后加下面的语句: //禁用PopupBar

removeEditPolicy(EditPolicyRoles.POPUPBAR_ROLE); //禁用ConnectionHandler

removeEditPolicy(EditPolicyRoles.CONNECTION_HANDLES_ROLE); 24、使用ConnectionHandler连接到canvas上已存在的图形或创建新的图形 覆盖XXXModelingAssistantProvider里的几个get方法,要连接到已存在的图形覆盖

getRelTypesOnSourceAndTarget()方法,创建新的作为源的图形覆盖getRelTypesOnSource()和

getTypesForTarget()方法,创建新的作为目标的图形应覆盖getRelTypesOnTarget()和getTypesForSource()方法。具体代码可参考LogicModelingAssistantProvider里的实现。 25、给画布加背景图

http://www.cnblogs.com/bjzhanghao/archive/2007/03/13/673273.html


GMF常见问题.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:课堂教学秩序整顿方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: