八进制
少年壮志无烟抽 博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅
:: 管理 ::
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