回复 引用
#36楼[楼主] 2007-12-09 23:22 八进制
如果.ecore文件里指定了使用id(让EClass包含的id属性为true的EAttribute),则xml文件里使用id标识引用,否则使用顺序标识例如“//@schools.3 //@teachers.4”
回复 引用 查看
#37楼 2007-12-10 23:31 willoo[未注册用户]
thanks. 现在我想在GMF之上扩展一些我自己的功能,我如何能够通过图元editpart获取它的id号码呢?(在建模的时候,model包中的类没有提供getID,setID等方法)
回复 引用
#38楼[楼主] 2007-12-12 17:10 八进制
建模的时候要自己建立id属性,并且设置为ID=true(id属性的ID属性),这样就有getId()和setId()了。
回复 引用 查看
#39楼 2007-12-27 03:13 veles[未注册用户]
请问一下楼主,刚刚我用 在gmfgen里把作为容器的那个图形的Gen Compartment里把Listlayout属性改为false。 这个方法修改为什么不管用呢?还是只能在开始的位置。
还有一个问题想请教,如何在一个node中添加两个compartment呢?在添加一个的时候我用的是FlowLayout.
回复 引用
#40楼 2007-12-27 03:16 veles[未注册用户]
还有个问题,我在compartment中添加图形后图形的大小都是固定的,怎么可以让用户修改大小呢?恳请楼主解答。
回复 引用
#41楼[楼主] 2007-12-27 09:39 八进制
Listlayout修改为false后重新生成代码了吗?另外也可能是设置layout的问题。
回复 引用 查看
#42楼 2007-12-27 17:59 veles[未注册用户] 楼主当时怎么设置的layout啊?用的是那种layout?
另外如果我想在一个矩形node里面有两个compartment应该用哪种layout呢?我看了你推荐的
http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg00388.html 但是用这里的方法生成diagram之后连compatment都加不上去了。恳请解答一下。
回复 引用
#43楼[楼主] 2007-12-28 12:56 八进制
我觉得应该用flowlayout,看一下gmf的graphical ecore editor例子会有帮助,那里的EClass都是有多个compartment的。
回复 引用 查看
#44楼 2008-01-29 09:50 zhanglei.pku
请问一个Compartment Layout的问题: 我希望给compartment设定一个特定的layout. 但是我试了很多的改法都没成功。
具体地,
在gmfgen中选择了Listlayout修改为false后, 得到了
public class xxxCompartmentEditPart extends DefaultCompartmentEditPart{ ...
public IFigure createFigure() {
ResizableCompartmentFigure result = (ResizableCompartmentFigure) super.createFigure(); result.setTitleVisibility(false);
result.setLayoutManager(new FlowLayout()); // 指定Flowlayout return result; }
在这里创建了一个可变大小的compartmentfigure,
我指定其Layout为flowlayout或者toolbarlayout,但是都没有效果 compartment内的元素仍可任意移动。
之后,我觉得可能改错地方了。尝试如下
ToolbarLayout myTL = new ToolbarLayout(); ( (FreeformViewport) ( (AnimatableScrollPane)
result.getChildren().get(1) ).getChildren().get(0)).setLayoutManager(myTL); //result.getChildren().get(1) ==> AnimatableScrollPane
还是不行。
btw: 在 newslist上面我看到你的thread
\child into it in generated application. \ 这个问题我也遇到了,想问问怎么解决的。
希望八进制博主可以指点一下。
Thansk in advance.
zhanglei
回复 引用 查看
#45楼 2008-03-19 11:35 HB[未注册用户] 博主,问一个问题: 你在40上写的那个问题.
View sourceView = edge.getSource();
View targetView = edge.getSource(); 第二个错了吧,getTarget()? 我现在碰到的问题应该跟这个有点像.
子图创建完毕后,再次打开时有时候会出现(是有时候,不是一直)子图里面的结点上的连接消失,结点位置变化. 用你这个方法好像还是不能解决问题. 请赐教
回复 引用
#46楼[楼主] 2008-03-30 17:14 八进制 to zhanglei.pku: 抱歉我对compartment也很没办法。 to HB: 对,确实写错了,谢谢你帮我发现了一个潜在bug :-) 你的问题要能够重现才好找到解决办法。
我报告的问题链接但一直没有解决:https://bugs.eclipse.org/bugs/show_bug.cgi?id=214569
回复 引用 查看
#47楼 2008-04-16 19:45 forquestion[未注册用户]
当我在执行“create generator model...”操作时,提示这个错误:“Top level node 'Containment Feature' must be available in the diagram
'Domain Element' or its super-class”,请问该如何解决?.gmfmap文件的Validate检查是没有错误的。
回复 引用
#48楼[楼主] 2008-04-16 22:00 八进制 可能需要重新生成一遍.gmfgen文件。
回复 引用 查看
#49楼 2008-04-17 08:51 forquestion[未注册用户]
谢谢回复,不过“create generator model...”操作不就是重新生成.gmfgen文件的吗?我在.gmfmap文件中创建了5个Top Node Reference节点,在做“create generator model...”操作finish的时候被提示有4个上面的错误,如果只保留其中一个特定的节点,“create generator model...”操作是没有问题的,所以我怀疑是我的.ecore文件内容有误。不知道是否方便帮忙给看一下。或告之在实现多个Top Node时应该在.ecore中注意什么。
回复 引用
#50楼 2008-04-17 17:06 forquestion[未注册用户]
上个问题请无视,是我搞错了关系,另外4个节点不应该跟第一个节点是同一级别而同为Top Node,所以报错了...另外还想问个问题:怎么定义一个link才能使它连接任意不同类型的节点?或者连接两个特定不同类型的节点?
回复 引用
#51楼 2008-04-17 20:06 forquestion[未注册用户]
还有一个问题是:怎么才能让Palette上的节点变灰且不可用?好像gmftool文件里没有相关的设置,希望八进制博主可以指点一下。
回复 引用
#52楼[楼主] 2008-04-19 16:59 八进制
让需要连接的节点都继承自同一个类即可。
不知道toolentry是否能变灰,因为我没看到这个类里有相关方法。
回复 引用 查看
#53楼 2008-04-21 12:50 forquestion[未注册用户] 多谢指点!
回复 引用
#54楼 2008-04-24 19:23 hbb[未注册用户]
我想实现类似于GMF框架中那个右键点击一个ecore文件,其中有一项initialize ecore_diagram diagram file,然后GMF通过分析那个ecore文件生成一张图的功能. 感觉无从下手,不知道博主对这个功能有没有什么建议.
回复 引用
#55楼 2008-04-24 19:38 hbb[未注册用户]
我把问题再细化下,假设我已经建完了ecore_diagram 这一个编辑器,同时已经拥有了需要分析的那个ecore,并已经得到了分析结果.
那么我接下来需要做的事情就是通过一段程序将那个分析结果转化为ecore_diagram上的图形,换句话说,就是用程序来替代原来手工点击的建模方式. 先谢谢了
回复 引用
#56楼[楼主] 2008-04-24 20:53 八进制
GMF那个initialize功能生成的.ecore_diagram文件内容很简单的(可以用文本编辑器打开看看),就是定义一个diagram而已。只有经过手动布局的图元才在那个文件里真正记录下来,其他图元的信息都使用缺省值。
回复 引用 查看
#57楼 2008-04-29 19:26 forquestion[未注册用户] 请问如何获取GMF Editor中的滚动条对象?
回复 引用
#58楼 2008-04-30 11:56 veles[未注册用户]
请问一下搂主现在有什么好的办法能让一个图形内部的compartment能够竖着显示了么?
回复 引用
#59楼[楼主] 2008-05-04 09:51 八进制 @forquestion
没实际试验过,试试用editor.getDiagramGraphicalViewer().getRootEditPart().getFigure(),这样得到的应该是一个ScrollPane对象,然后可以scrollPane.getHorizontalScrollBar()得到横向滚动条对象,纵向滚动条类似。
回复 引用 查看
#60楼[楼主] 2008-05-04 09:51 八进制 @veles 还没有
回复 引用 查看
#61楼 2008-05-06 11:00 forquestion[未注册用户] @八进制
感谢回复,调试后得到了滚动条对象,以下是调试后的语句:
IDiagramGraphicalViewer viewer = getDiagramGraphicalViewer(); FigureCanvas fc = (FigureCanvas) viewer.getControl(); ScrollBar hsb = fc.getHorizontalBar();
碰到的另外一个问题是:我想加入自己的代码控制滚动条被拖动后的位置,请问该怎么实现?它的拖动事件是哪个?
回复 引用
#62楼 2008-05-06 16:52 forquestion[未注册用户] @八进制 问题解决了,呵呵
回复 引用
#63楼 2008-05-07 22:10 veles[未注册用户] 6、让Label出现在图元外面
在gmfgraph里定义这个Figure时把Label定义在外面,而非定义为Figure的子元素。
请问关于这个问题,我怎么实现不了呢?如果把lable定义在外面那么还要在GMFGraph 里面定义child access么?在mapping里面的相关node是定义lable 海是定义feature lable呢? 恳请楼主回答解惑。
回复 引用
#64楼 2008-05-08 02:26 veles[未注册用户]
我知道怎么显示了,新建descriptor之后还要设置以下diagram label的figure属性!谢谢楼主的信息。
回复 引用
#65楼 2008-05-29 10:28 万里雄风[未注册用户] 八进制 您好
我在父图形里面增加了一个隔间,实现了子图形可以在隔间里创建,移动,在隔间里的子图形所占的区域如果子大,隔间会自动增加滚动条,但我希望隔间和父图形能自动变大以容纳子图形,请问该如何解决?谢谢!
回复 引用
#66楼 2008-07-30 17:13 c.c[未注册用户]
八进制大大,请问可不可用用OCL在gmfmap控制图形不能形成环,实现起来麻烦么,OCL的资料有点少,上GMF新闻组也没找到
回复 引用
#67楼[楼主] 2008-08-06 20:18 八进制