八进制

少年壮志无烟抽

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  259 随笔 :: 0 文章 :: 3282 评论 :: 14 引用

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), 
"Command Name", Collections.EMPTY_LIST) {
    @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

BTW, 以上所有问题只针对GMF1.0,GMF2.0的gmfmap模型和gmfgen模型与前一版本有所不同,一些问题可能也在GMF2.0里不存在了。

26、使用Label作为一个editpart的figure

在.gmfgraph里不用创建Node,只用Diagram Label即可;在.gmfmap里,Node Mapping的Diagram Node属性指定为这个Diagram Label,下面的Feature Label Mapping的Diagram Label属性也是这个Diagram Label。在parent使用ListLayout的时候这个方法比较有用。GMF的mindmap例子里的ThreadItem就是这样一个例子。

27、若类A包含B和C,且C继承B,则试图让A的图形同时包含B和C会造成运行时异常,异常信息是无法创建C的View,可能是GMF目前版本的bug。解决办法是建立抽象类D,让B和C都继承D,并且让A包含D。(update 2007/7/23: 有一点像这个bug,异常信息差不多)

update 2008/10/09: 今天再次遇到了这个问题,复制异常信息如下以便查找:

org.eclipse.core.commands.ExecutionException: While executing the operation, an exception occurred
    at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:
519)
...
Caused by: org.eclipse.core.runtime.AssertionFailedException: 
null argument:failed to create a view
    at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:
86)

    at org.eclipse.gmf.runtime.diagram.ui.commands.CreateCommand.doExecuteWithResult(CreateCommand.java:99)

 

...

28、用渐变色填充非矩形图形

覆盖图形的fillShape()方法,利用swt的Path,但draw2d的graphics对它的支持似乎不好。http://dev.eclipse.org/newslists/news.eclipse.tools.gef/msg13928.html

29、(这条实际是关于EMF的,anyway)为TableViewer增加Drag and Drop支持

非常简单,见下面的代码(tv是TreeViewer的一个实例)

int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
Transfer[] transfers 
= new Transfer[] { LocalTransfer.getInstance() };
tv.addDragSupport(dndOperations, transfers, 
new ViewerDragAdapter(tv));
tv.addDropSupport(dndOperations, transfers, 
new EditingDomainViewerDropAdapter(editingDomain, tv));

30、从EObject得到TransactionalEditingDomain

TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(eobject);

31、让Label换行

.gmfgraph里无法指定Label是否换行,要修改生成的代码:

fFigureXXXFigure = new WrapLabel();
fFigureXXXFigure.setTextWrap(
true);//add this line
fFigureXXXFigure.setText("<>");

另外可以在.gmfgraph里指定需要的布局以便让换行Label更好的显示。给Label设置Margin Border会有问题(Label被推向右侧),可以给Parent图形设置Margin Border,或建一个RectangleFigure来实现设置文字边距的需求。

32、定制Project Exploerer里显示的内容

修改.gmfgen里Gen Navigator节点下面的元素,见http://wiki.eclipse.org/index.php/GMF_Tutorial_Part_4#Project_Navigator

33、可缩放的多边形

在.gmfgraph里定义为Scalable Polygon,和普通Polygon一样要定义template points,每个点的坐标绝对值不是关键,但它们之间的位置关系要保证。我发现绝对值定义得大一些时,得到的结果会更精确。下面是一个可缩放菱形的定义:

<descriptors name="ConditionFigure">
  
  
<actualFigure xsi:type="gmfgraph:ScalablePolygon" name="MyDiamondFigure">
    
<template x="200" y="0"/>
    
<template x="0" y="200"/>
    
<template x="200" y="400"/>
    
<template x="400" y="200"/>
    
<template x="200" y="0"/>
  
</actualFigure>
</descriptors>

34、生成的RCP应用里,保存操作后经常提示“the file has been modifying on the file system...”信息。

GMF太“聪明”了,每次save后都要记录文件修改的timestamp,一旦发现不符则认为有其他程序修改了这个文件。要让RCP应用不检查当前编辑的文件是否被其他程序修改,可覆盖XXXDocumentProvider的isSynchronized()方法,让它直接“return super.isSynchronized(element);”。(但要小心,这有可能造成用户的修改无法被保存的情况。)

35、生成的GMF应用程序里,打印功能是禁用状态。

打开.gmfgen文件,修改Gen Plugin的"Printing Enabled"属性为true,再重新生成代码。这样除了 Print变为可用外,GMF还会生成一个XXXContributionItemProvider类在主菜单上添加Print Preview选项。 http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg02207.html

36、(实际是Eclipse OCL问题)脱离Eclipse环境使用OCL时,报异常java.lang.NoClassDefFoundError: lpg/lpgjavaruntime/RuleAction

Eclipse OCL依赖lpg库(LALR parser generator,使用EPL协议),在RCP里使用OCL需要把net.sourceforge.lpg.lpgjavaruntime这个插件加在dependencies列表里。参考链接

37、(还是OCL问题)Eclipse OCL实现里,OCL语句里各集合类型与ecore里集合类型的映射:

Collection Type isUnique isOrdered
Bag N N
Sequence N Y
Set Y N
OrderedSet Y Y

所以,如果一个EList在ecore里定义为Unique且Ordered(即缺省定义)时,在OCL里应该用OrderedSet类型,例如:XXX->allInstances()->asOrderedSet()或OrderedSet{object1, object2},等等。

38、在画布上创建一个元素(包括连接)后根据当前模型状态自动设置某属性值:

(GMF允许通过多种语言如ocl、regexp和java来实现初始值的设置,这里以java为例)在xxx.gmfmap文件里,找到这个元素对应的Mapping节点(如Node Mapping或Link Mapping),点右键新建一个Feature Seq Initializer元素,在这个元素上点右键再新建一个Feature Value Spec元素,设置后者的Feature为想要设置的类型,语言选java,在Body属性里输入一个方法名,例如“initialMyFeature”。重新生成.gmfgen和代码,GMF会在名为ElementInitializers.java的文件里生成initialMyFeature()这个空壳方法,实现它即可。

39、新建向导结束后,生成一个非空的模型文件。(Customize新创建的模型文件)

修改XXXDiagramEditorUtil#createInitialModel()方法。

40、在partition diagram里,从shortcut到一个正常节点间的连线在关闭editor后再次打开时丢失(2008.1.4)

原因不明,暂时的解决方法是注释掉XXXCanonicalEditPolicy#refreshConnections()方法里的deleteViews(existingLinks.iterator()),其中XXX代表link元素的父元素,例如Diagram。(这个解决方法有严重问题,会造成Initialize Diagram时丢失全部连接)。新探索出来的解决方法如下,覆盖XXXCanonicalEditPolicy#sholdDeleteView()方法:

/**
* @generated NOT
*/

protected boolean shouldDeleteView(View view) {
    
if(view instanceof Edge){
        Edge edge 
= (Edge)view;
        View sourceView 
= edge.getSource();
        View targetView 
= edge.getTarget();
        
if(sourceView.getEAnnotation("Shortcut")!=null 
                
|| targetView.getEAnnotation("Shortcut")!=null){
            
return false;
        }

    }

    
return true;
}

41、删除右键菜单里不需要的菜单项

在plugin.xml里声明contributionItemProviders扩展点,在popupContribution下指定如下元素:

<popupPredefinedItem id="autoSizeAction"remove="true"/>

一些GMF Runtime定义的ID:deleteFromModelAction, navigateGroup, fileMenu, toolbarArrangeAllAction, addGeoShapesGroup, addGeoShapes2Group

详见org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds

42、在单独的编辑窗口里编辑子图(Diagram Partitioning)

http://wiki.eclipse.org/Diagram_Partitioning

43、在单独的项目(非GMF生成的xxx.diagram项目)里扩展DiagramEditor能识别的adapter类型:

在单独项目的Activator的start()方法里用类似下面的代码,这样就不需要直接修改生成的XXXDiagramEditor#getAdapter()方法了(因为我们希望把定制的内容尽量放在生成的项目以外):

//Register adapters for ERM reports and charts
Platform.getAdapterManager().registerAdapters(new IAdapterFactory() {

    
/**
     * 
@see org.eclipse.core.runtime.IAdapterFactory
     
*/

    
public Object getAdapter(Object adaptableObject, Class adapterType) {
        ErmDiagramEditor editor 
= (ErmDiagramEditor) adaptableObject;
        Process process 
= (Process) editor.getDiagram().getElement();
        
if (adapterType == IRiskImportancePage.class{
            
return new RiskImportancePage(process);
        }
 else if (adapterType == IRiskDrillDownPage.class{
            
return new RiskDrillDownPage(process);
        }


        
return null;
    }


    
/**
     * 
@see org.eclipse.core.runtime.IAdapterFactory
     
*/

    
public Class[] getAdapterList() {
        
return new Class[] { IRiskImportancePage.class, IRiskDrillDownPage.class };
    }


}
, ErmDiagramEditor.class);

 

44. 允许创建shortcut

在.gmfgen的Gen Diagram元素的属性“Shortcuts Provided”和"Contains Shortcuts To"里设置相应的model名字,然后重新生成代码,这样画布的右键菜单里将出现“Create Shortcut...”菜单项。参考http://wiki.eclipse.org/GMF_Tutorial_Part_2#Shortcuts

45. 提示“Cannot activate read/write transaction in read-only transaction context”

在editpolicy的getXXXCommand()里不能直接对模型进行操作,否则将提示上面的异常,应该返回一个ICommandProxy(yourCommand) ,其中yourCommand一般继承自AbstractTransactionalCommand。参考http://dev.eclipse.org/mhonarc/newsLists/news.eclipse.modeling.gmf/msg04366.html

46. (实际是OCL问题)在ocl语句里增加预定义的变量,当变量是集合类型时,如何setType:

OCL<?, EClassifier, ???????, Constraint, EClass, EObject> ocl;
ocl 
= OCL.newInstance(EcoreEnvironmentFactory.INSTANCE);

//Customize this OCL environment
Variable appContextVar = ExpressionsFactory.eINSTANCE.createVariable();
appContextVar.setName(
"customers");
EClassifier type 
= TypeUtil.resolveSequenceType(ocl.getEnvironment(), EcorePackage.Literals.ORDERED_SET_TYPE);
appContextVar.setType(type);
ocl.getEnvironment().addElement(appContextVar.getName(), appContextVar, 
true);

try {
    OCLHelper
<EClassifier, ??, Constraint> helper = ocl.createOCLHelper();
    helper.setContext(SpmsPackage.Literals.SP_SERVICE_PLAN);
    OCLExpression
<EClassifier> exp = helper.createQuery(metric.getFormula());//Seems this call is time costly
    Query<EClassifier, EClass, EObject> query = ocl.createQuery(exp);
    query.getEvaluationEnvironment().add(appContextVar.getName(),
            SpmsResourceManager.getInstance().getCustomerModel().getCustomers());
    Object object 
= query.evaluate(servicePlan);
    System.out.println(object);
    
if (object instanceof Number) {
        result 
= ((Number) object).doubleValue();
    }
catch (ParserException e) {
    e.printStackTrace();
}
ocl.dispose();

 

47、创建一个新的Diagram实例

GMF生成代码时同时生成了工具类XXXDiagramEditorUtil,调用XXXDiagramEditorUtil.createDiagram()即可创建新的Diagram实例。

 

(更多内容见GMF分类

0
0
(请您对文章做出评价)
« 上一篇:让多个Viewer对应一个属性视图
» 下一篇:RCP程序的启动进度条
posted on 2006-10-26 23:46 八进制 阅读(7981) 评论(101)  编辑 收藏 网摘 所属分类: GMF, Eclipse

评论

#2楼[楼主] 2006-11-07 13:36 八进制      
因为我也是走弯路过来的,所以希望大家有新的常见问题也可以提交在这里方便刚接触GMF的朋友们。
  回复  引用  查看    

请问,哪儿有gmfgraph文件编辑的指南?或者说相关的介绍?

谢谢:)

  回复  引用    

#4楼[楼主] 2006-11-28 20:39 八进制      
GMF wiki上有一些:
http://wiki.eclipse.org/index.php/GMF_Tutorial_Part_2
安装GMF后Eclipse帮助里还有些内容。

  回复  引用  查看    

#5楼[楼主] 2006-11-28 20:54 八进制      
GMF New and Noteworthy:
http://wiki.eclipse.org/index.php/GMF_New_and_Noteworthy

  回复  引用  查看    

Thanks :)
  回复  引用    

#7楼 2006-12-04 21:50 707[未注册用户]
请问:compartment默认为分为上下部分,怎么分为左右部分呢,即用一条竖线将figure隔开
  回复  引用    

在GMF中,如何才能用代码添加一个节点呢?

例如,A、B为两类节点,我想实现在添加A节点的同时再A下方自动添加B节点

我应该从哪儿下手?

请指点:)


谢谢!

  回复  引用    

#9楼[楼主] 2006-12-05 14:15 八进制      
to 707: 见http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg00388.html
to 凝血神抓: 我想你可以在AEditHelper里覆盖getConfigurationCommand()方法,实现方法参考GMF Logic例子的CircuitEditHelper等。

  回复  引用  查看    

Thanks:)
  回复  引用    

#11楼 2006-12-10 23:18 qiulu[未注册用户]
请问在Audit中定义constraint,使用OCL语句或者Java语句能不能帮我找点例子??Please~~

  回复  引用    

#12楼[楼主] 2006-12-12 13:44 八进制      
gmf的新闻组里有一些,emft新闻组里应该也有。另外,用java不需要例子吧。
  回复  引用  查看    

#13楼 2007-01-19 12:42 keke[未注册用户]
请问,我想做双击figure后出来一个diagram,上显示其属性,但属性修改后如何能保持同步啊..
  回复  引用    

您好

能不能请您介绍一下The Eclipse Tabbed Properties View?

最近要做这个方面的,可是只能找到"http://www.eclipse.org/articles/Article-Tabbed-Properties/tabbed_properties_view.html"这一篇文档, 希望您能提供更多的介绍和帮助

谢谢!

  回复  引用    

#15楼 2007-01-31 09:54 areslp[未注册用户]
您好,关于第15点
15、GMF里从EditPart得到Semantic Model
我想在运行时动态改变图形的属性,我在launch里写的,图形对应editpart已经取到,但是再获取真正对象的时候出错,最后跑到private void runEventLoop(Window.IExceptionHandler handler, Display display) 里死循环了,能指点一下吗,谢谢!
launch代码如下:
public void launch(ISelection selection, String mode) {
// TODO 自动生成方法存根
try {
IWorkbenchPage page = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
IEditorPart ieditorpart = page.getActiveEditor();

MindmapDiagramEditor editor = (MindmapDiagramEditor) ieditorpart;
editor.setFocus();
Object o = editor.getAdapter(GraphicalViewer.class);
GraphicalViewer view = (GraphicalViewer) o;
List editparts = view.getContents().getChildren();
Iterator it = editparts.iterator();
while (it.hasNext()) {
EditPart editpart = (EditPart) it.next();
if (editpart instanceof StateNodeEditPart) {
StateNodeEditPart realeditpart = (StateNodeEditPart) editpart;
Object temp = realeditpart.getModel();
EObject r = ViewUtil.resolveSemanticElement((View) temp);
}
if (editpart instanceof TopicEditPart) {
TopicEditPart realeditpart = (TopicEditPart) editpart;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

  回复  引用    

#16楼[楼主] 2007-01-31 22:04 八进制      
sorry,不清楚是什么原因,lunch()方法是在哪里用的?从GraphicalViewer里取editpart试试用GraphicalViewer#getEditPartRegistry()呢?
  回复  引用  查看    

#17楼 2007-02-06 23:15 lulu[未注册用户]
看了你的文章后收获很大。
试着做了几个例子,现在我想显示一个Table,其他的图形还可以拖入单元格,遇到了很大的困难,
能给点建议,感激不尽。

  回复  引用    

#18楼[楼主] 2007-02-08 14:17 八进制      
你可以参考这篇http://www.cnblogs.com/bjzhanghao/archive/2005/05/20/159423.html
  回复  引用  查看    

#19楼 2007-03-23 17:24 apm120[未注册用户]
.ecore 和 .ecore_diagram 两个文件中,当我编辑.ecore 文件并保存时DocumentProvider.setDocumentContent() 这个方法对保存文件起了作用..
但是当我编辑.ecore_diagram文件时,却不知道gmf在哪个类中对文件进行了保存..? 是在哪个policy类中吗? 急待你的回答.
thanks .

  回复  引用    

请问如何使用GEF开发GUI BUILDER呢?有没有这方面的相关例子呢?谢谢!
  回复  引用    

#21楼 2007-03-26 17:10 黄伟[未注册用户]
我的环境是Eclipse3.2.1,emf2.2.1.gef3.2.1,jdk1.4.2,gmf1.0.1,怎么没有新建map model的向导,只有gmftool和gmfgraph向导,而且在other下
  回复  引用    

#22楼 2007-03-27 16:27 apm120[未注册用户]
@黄伟
你的问题我也遇到过,环境配置的不对吧。
配置环境里你安装了EMFT工具了没?

  回复  引用    

#23楼 2007-04-18 17:51 顾勇[未注册用户]
急:请问eclipse中的“错误日志”视图和“问题”视图的ID是多少??
谢谢。不胜感激。

  回复  引用    

#24楼 2007-08-27 16:27 amber[未注册用户]
@apm120

我的gmftool和gmfgraph也在other下,你说要往配置环境里装emft,这是个什么工具呀

  回复  引用    

#25楼 2007-08-31 10:33 z[未注册用户]
31、让Label换行

.gmfgraph里无法指定Label是否换行,要修改生成的代码:


fFigureXXXFigure = new WrapLabel();
fFigureXXXFigure.setTextWrap(true);//add this line
fFigureXXXFigure.setText("<>");

我现在在一个node里建了两个Feature Label Mapping,想让第二个换行,使用这个吗?我加到了我的nodeEditpart.java中,但是不管用。

  回复  引用    

如何让标签出现在图形的外边能不能说的具体点 怎么试验都不行 是不是你的方法太陈旧了
  回复  引用    

楼主那个让label出现在图形外边的方法是不是您老人家做梦的时候想出来的呢 不好使 失败
  回复  引用    

期待楼主回答上边的问题 怎么让label出现在图形的外边
  回复  引用    

#29楼 2007-09-20 16:11 z[未注册用户]
hi,如何能让node里的多个label不居中,而都靠在图形的左边?Thanks
  回复  引用    

#30楼[楼主] 2007-09-20 18:10 八进制      
在代码里改nodefigure的layout
  回复  引用  查看    

#31楼 2007-09-21 11:07 z[未注册用户]
thanks,但是,有了Flow layout之后,node本身的属性和我加的Compartment的属性就在一个矩形中了,如何能像没有layout一样,使eclipse3.3中的node有一条线把本身的属性和compartment的属性分开?
  回复  引用    

#32楼 2007-09-30 16:34 z[未注册用户]
怎么能让一个node上的多个label前面的图片不同?
谢谢

  回复  引用    

#33楼[楼主] 2007-10-03 15:05 八进制      
每个label应该对应一个editpart吧,修改editpart的代码可以改变label的图标显示。
  回复  引用  查看    

#34楼 2007-10-08 13:14 z[未注册用户]
非常感谢你的建议,但是这个问题可能需要对生成的代码有很大的改动,我目前的状况不宜这么做。同时还有一个比较重要的问题想请教你,如何能让在运行这个程序的初始,就能有一个在右侧tool中的图形已经画在画布中。
  回复  引用    

#35楼 2007-12-09 18:15 willoo[未注册用户]
请问,GMF里的每一个图元是不是具有唯一编号id?在编辑器保存之后的XML文件中,对应于每一个图元,都有id编号,这个编号在程序中如何获取?
  回复  引用    

#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
"But it seems that when I add any layout(for example FlowLayout) to comp1/comp2, I couldn't add any 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

  回复  引用  查看    

当我在执行“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文件。
  回复  引用  查看    

谢谢回复,不过“create generator model...”操作不就是重新生成.gmfgen文件的吗?我在.gmfmap文件中创建了5个Top Node Reference节点,在做“create generator model...”操作finish的时候被提示有4个上面的错误,如果只保留其中一个特定的节点,“create generator model...”操作是没有问题的,所以我怀疑是我的.ecore文件内容有误。不知道是否方便帮忙给看一下。或告之在实现多个Top Node时应该在.ecore中注意什么。
  回复  引用    

上个问题请无视,是我搞错了关系,另外4个节点不应该跟第一个节点是同一级别而同为Top Node,所以报错了...另外还想问个问题:怎么定义一个link才能使它连接任意不同类型的节点?或者连接两个特定不同类型的节点?
  回复  引用    

还有一个问题是:怎么才能让Palette上的节点变灰且不可用?好像gmftool文件里没有相关的设置,希望八进制博主可以指点一下。

  回复  引用    

#52楼[楼主] 2008-04-19 16:59 八进制      
让需要连接的节点都继承自同一个类即可。
不知道toolentry是否能变灰,因为我没看到这个类里有相关方法。

  回复  引用  查看    

多谢指点!
  回复  引用    

#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而已。只有经过手动布局的图元才在那个文件里真正记录下来,其他图元的信息都使用缺省值。
  回复  引用  查看    

请问如何获取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
还没有

  回复  引用  查看    

@八进制
感谢回复,调试后得到了滚动条对象,以下是调试后的语句:
IDiagramGraphicalViewer viewer = getDiagramGraphicalViewer();
FigureCanvas fc = (FigureCanvas) viewer.getControl();
ScrollBar hsb = fc.getHorizontalBar();
碰到的另外一个问题是:我想加入自己的代码控制滚动条被拖动后的位置,请问该怎么实现?它的拖动事件是哪个?

  回复  引用    

@八进制
问题解决了,呵呵

  回复  引用    

#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属性!谢谢楼主的信息。
  回复  引用    

八进制 您好
我在父图形里面增加了一个隔间,实现了子图形可以在隔间里创建,移动,在隔间里的子图形所占的区域如果子大,隔间会自动增加滚动条,但我希望隔间和父图形能自动变大以容纳子图形,请问该如何解决?谢谢!

  回复  引用    

#66楼 2008-07-30 17:13 c.c[未注册用户]
八进制大大,请问可不可用用OCL在gmfmap控制图形不能形成环,实现起来麻烦么,OCL的资料有点少,上GMF新闻组也没找到
  回复  引用    

#67楼[楼主] 2008-08-06 20:18 八进制      
@c.c
环的检测从逻辑上要比自身连接的检测麻烦很多,但OCL的描述能力是很强的,我不确定是否能用OCL实现。我也许会选择用java实现,GMF也支持的。

  回复  引用  查看    

#68楼 2008-10-17 10:32 aleaner[未注册用户]
八进制,你好。询问一个gmf项目中的小问题.
在一个对象的属性(wsdl)中,有另一个属性(operations),即属性的属性,希望它的下拉框(operationList)中只是显示当前属性(wsdl)限定的一些内容,而目前却把所有对象中此属性中的属性(即所有的operations)全部列出来.
找了许久,不得其法
谢谢

  回复  引用    

#69楼 2008-10-22 16:27 pfzhan[未注册用户]
你好,八进制。关于删除41点删除右键菜单里不需要的菜单项,我在扩展 org.eclipse.gmf.runtime.common.ui.services.action.contributionItemProviders,在它的目录下面加了contributeItemProvidor,之后建立了popuContribution,但是设置了你所列举的那些ID之后,并没有什么作用。是不是我popuContribution的扩展点错了?
这是plugin.xml相应的代码:
<extension
point="org.eclipse.gmf.runtime.common.ui.services.action.contributionItemProviders">
<contributionItemProvider
checkPluginLoaded="true"
class="com.cellcom.studio.gmfpra.diagram.AbstractContributionItemProvider1">
<Priority
name="Lowest">
</Priority>
<popupContribution>
<popupPredefinedItem
id="com.cellcom.studio.gmfpra.diagram.deleteFromModelAction"
remove="true">
</popupPredefinedItem>
</popupContribution>
</contributionItemProvider>
</extension>


还有,你说gmf runtime 定义的ID在 org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds 查看,我试了很多方法都没找到这个东西,能不能详细地说一下使用方法,比如它所用到的Denpendencies或扩展等。
谢谢

  回复  引用    

你好,请教下如何给link旁边增加文字。
  回复  引用    

老大你好 想咨询一个问题 就是我生成的节点 ,如果我想改变的他默认的图标,应该怎么操作啊?? 是在graph文件中设置吗?
  回复  引用    

#72楼 2008-11-08 14:02 chj[未注册用户]
八哥,您好,请教您一个问题

我最近在做rcp开发时,要用到一个gmf拖拽,拖拽大概是这样的:用gmf生成3个editor,在第一个editor中拖入节点后,双击该节点可以打开第二个editor,然后可以在第二个editor中拖入节点,同样双击第二个editor中的节点可以打开第三个editor进行编辑。

在非rcp环境中我已经实现了上面的功能,但我怎么将其转换成rcp呢,因为这有三个digram工程,不知道怎么设置,盼您的回复,再次谢谢了!

  回复  引用    

#73楼[楼主] 2008-12-17 23:37 八进制      
@carolwyj
在.gmfmap文件里设置,Link Mapping下建Featured Label Mapping

  回复  引用  查看    

#74楼[楼主] 2008-12-17 23:56 八进制      
@aleaner
没能完全理解你的场景,下拉框是你自己实现的吗,是comboviewer吗,那一般用filter解决只显示一部分内容的问题。

  回复  引用  查看    

#75楼[楼主] 2008-12-18 00:01 八进制      
@benson wang
节点的默认图标可以在.edit项目的icons目录里找到,用新图标覆盖即可。另一个办法是修改相应editpart里的XXXFigure类,为它设定你想要的图标(若原来没有,可以add一个Label然后Label#setIcon())。

  回复  引用  查看    

八进制你好,最近项目需要在学习GMF。基本上是跟着你的教程学习的,感觉非常好,非常感谢。在这里有个问题想请教
问题:

39、新建向导结束后,生成一个非空的模型文件。(Customize新创建的模型文件)

修改XXXDiagramEditorUtil#createInitialModel()方法。

具体怎么做呢?不知道怎么画出图形

  回复  引用    

--引用--------------------------------------------------
gouweibacao: 八进制你好,最近项目需要在学习GMF。基本上是跟着你的教程学习的,感觉非常好,非常感谢。在这里有个问题想请教
问题:

39、新建向导结束后,生成一个非空的模型文件。(Customize新创建的模型文件)

修改XXXDiagramEditorUtil#createInitialModel()方法。

具体怎么做呢?不知道怎么画出图形
--------------------------------------------------------
也就是想问你怎么用代码创建一个节点?

  回复  引用    

#78楼[楼主] 2009-02-03 12:50 八进制      
@gouweibacao
不需要自己画图形,在XXXDiagramEditorUtil#createInitialModel()方法里创建你的模型即可,图形会自动生成出来(不过是未经布局的)。例如这样写:

MyModel model = MyFactory.eINSTANCE.createMyModel();
MyElement element1 = MyFactory.eINSTANCE.createMyElement();
MyElement element2 = MyFactory.eINSTANCE.createMyElement();
model.getElements().add(element1);
model.getElements().add(element2);
return model;

这样,在向导里新创建一个图形文件的时候就会看到画布上有两个图形了(每个对应上面的一个MyElement)。

  回复  引用  查看    

#79楼 2009-02-24 15:10 qop[未注册用户]
请问下,八进制,我用gmf做一个流程设计器,但有包级的概念,一个包对应一个文件,一个包下有多个流程,一个流程为一张画布. 在构建Graphical Definition Model和Tooling Definition Model的时候,应该指定包还是流程模型为Diagram Element.


因为感觉GMF的moedel和viewer层是一一对应的,如果要在viewer层隐藏掉最上层的包级,有什么好办法么?

  回复  引用    

#80楼[楼主] 2009-02-24 16:36 八进制      
流程模型为diagram,见图形分区http://wiki.eclipse.org/Diagram_Partitioning
  回复  引用  查看    

#81楼 2009-02-24 18:58 qop[未注册用户]
关于图形分区http://wiki.eclipse.org/Diagram_Partitioning
我按照了
Usecase 2 "different type"
做了一遍,但最后super.gmfgen和sub.gmfgen为什么生成的代码都到一个plugin里去了
---------------------------------------------
6. Now comes a "hacky" part. During creation of the generator model for the sub-mapping I selected my one and only .genmodel. The "Model Name" property therein is used to generate the default names of almost every class specified in the generator model. E.g. the "Edit Part Provider Class Name" property is pre-filled with <ModelName>EditPartProvider. So if you want the class names correspond to your sub-diagram root element name (as it should be) you'll have to rename every darn class name in the .gmfgen! That's not very convenient, but maybe there is a workaround for that?
I already tried to temporarily change the model name in my .genmodel. If you create the .gmfgen now, the class names look alright. But, here's the catch: they don't get written out to the XML. So if you change the model name in the .genmodel all class names in .gmfgen change but the file doesn't even get dirty! You'd have to activate every property that holds a class name, change it (e.g. by appending a letter) and press enter (now the editor shows the file as dirty with the "*"). Now you edit the property again by reverting your change (but not using Undo!) and then the change is permanent. Rinse and repeat for the dozens of other class names all over the .gmfgen and finally wake from your editing trance.
I just worked around that problem by creating a second .genmodel file as a copy of the original .genmodel. The only change I made was to set the "Model Name" property to the value I needed as prefix for all the class names in the sub-mappings .gmfgen. Of course I also needed to .genmodel references. I did it with find/replace but I guess one could also just load the new resource and drop the old one...
-----------------------------------------
这一步没有看太明白,没有做,是不是这儿的问题,我感觉这一步好像只是改package名,如果最后super和sub生成2个plugin,不做这一步也没问题吧?

  回复  引用    

#82楼 2009-02-25 12:51 qop[未注册用户]
再请问下,我想得到下面这种结构
<package>
<processes>
<process1/>
<process2/>
</processes>
<package>

但用图形分区,只能得到如下的结构
<package>
<process1/>
<process2/>
<package>

如果要得到想要的3层结构,是不是得用图形分区2次?但<package>和<processes>是一对一的,super Diagram层是指定的<package>,sub Diagram层是指定的<process1/>,但中间那层<processes>应该怎么做才能在最后XML文件中保存出来?

  回复  引用    

#83楼 2009-02-25 16:37 qop[未注册用户]
我想得到下面这种结构
<package>
<processes>
<process1/>
<nodes>
<node1/>
<node2/>
</nodes>
<connections>
<connection1/>
<connection2/>
</connections>
<process2/>
</processes>
<package>

但我用GMF生成的框架,貌似只能得到如下的结构,而且每2层必须有一张画布(一个Editor)

<package>
<process1/>
<node1/>
<node2/>
<connection1/>
<connection2/>
<process2/>
<package>

用图形分区,但图形分区只有3层,而我需要的可能是4-N层,而且我只需要一个DIagram,只是最后存储时怎么才能得到最上面的结构

  回复  引用    

#84楼 2009-02-26 01:15 yomi[未注册用户]
去新闻组问了下,英语实在不好,可能没表达清楚:(
http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg16854.html
有人回答了,但也没太明白啊

  回复  引用    

#85楼 2009-03-04 08:38 HI[未注册用户]
八进制先生:
我照着你讲的做下去,可是在我的EMF环境中,(.gmfgraph)编辑器的canvas>new Child下没有Child类型的项。(.gmfmap)编辑器的Mapping>也没有Node Mapping项.
清问下这是什么原因,是安装插件有什么问题吗?(我安装的GMF是1.0.0正式版,ocl,validation.query,transaction四个依赖插件我都装上了呀)

  回复  引用    

85,楼的问题解决了没有?我用的是2.0 也有同样的问题!!@HI
@HI

  回复  引用    

#87楼 2009-03-11 13:57 HI[未注册用户]
没有呀
八进制博主,很久都没有关注他的博客了!
@发射点法
@发射点法

  回复  引用    

#88楼[楼主] 2009-03-15 16:25 八进制      
@yomi
你的问题我暂时没有什么好主意,抱歉。

  回复  引用  查看    

#89楼[楼主] 2009-03-15 16:26 八进制      
@HI
“Node Mapping”是在“Top Node Reference”或“Child Reference”下面的。

  回复  引用  查看    

#90楼 2009-03-16 16:16 tsangpo[未注册用户]
非常感谢八进制!!!
我想做一个类似排版的可视化编辑器,模型中需要保存各个元素的位置和大小,但gmf是把这些信息另存在diagram文件的,有什么好的方法将这些信息和model的属性关联起来吗?谢谢!

  回复  引用    

八进制先生:
我照着你讲的做下去,可是在我的EMF环境中,(.gmfgraph)编辑器的canvas>new Child下没有Child类型的项。(.gmfmap)编辑器的Mapping>也没有Node Mapping项.
清问下这是什么原因,是安装插件有什么问题吗?(我安装的GMF是1.0.0正式版,ocl,validation.query,transaction四个依赖插件我都装上了呀)

---------------------
在线等,把方案发到279034219@qq.com 小弟万分感激!!!!!

  回复  引用    

#92楼[楼主] 2009-03-16 19:53 八进制      
@tsangpo
diagram文件本身就是关联到model文件的(如果丢失了model文件,diagram打开后全是叉叉)。如果你的意思是把两个文件合并,在.gmfgen的"Gen EditorGenerator"节点上有个属性“Same File For Diagram And Model”应该是作这个用的。

  回复  引用  查看    

#93楼[楼主] 2009-03-16 19:57 八进制      
@发射点法
建议你用较新版本的GMF,例如2.0或2.1。我手里只有2.1版本的,在.gmfgraph的canvas下是没有Child的,所有的Figure都是定义在Figure Gallary里的;同样,在.gmfmap里Node Mapping是在“Top Node Reference”或“Child Reference”下面的,这个在前面已有回答。

  回复  引用  查看    

#94楼 2009-03-23 15:18 yomi[未注册用户]
关于 Sharing EditingDomain,GMF share domain之后,当前workspace里所有同一文件后缀都同时share一个editining domain了,是我没有弄对还是本来就是如此的呢
  回复  引用    

#95楼 2009-04-28 23:10 小白猪
1、EMF生成的.EDIT和.EDITOR和模型有什么关系?这两个包还有包里的文件都是干什么的?2、GMF在生成.DIAGRAM时需要这.EDIT和.EDITOR两个包的文件吗?生成后的.DIAGRAM还依赖.EDIT和.EDITOR吗?3、如果自己修改、完善GMF EXAMPLE里的LOGIC例子直接修改代码就可以了吗?4、能不能以GMF LOGIC为例子说一个里面的各个包都是什么文件啊?我看.DIAGRAM里有好多包:actions\commands\edithelpers\editparts\editpolicies\figures\perferences\providers\sheet等等。这里面的PROVIDERS和.EDIT里面的PROVIDERS有什么区别吗?求教了!在线等。。。。。。。。

  回复  引用    

#96楼 2009-05-14 11:25 goer[未注册用户]
八进制,您好,问您个gmf的问题
箭头:在gmfgraph里为Polyline Connection指定一个Polyline Decorator作为source/target decoration,要为这个Decorator创建一些Template Point来决定箭头的形状,例如指定(-1,-1), (0,0), (-1,1)。

能让箭头的形状做成空心圆么?




  回复  引用    

#97楼 2009-05-26 19:31 Coolaid[未注册用户]
八进制,您好,我想问2个问题:

1. 我做了一个GMF的工具, 现在想增加一个功能, 支持把Java文件拖到编辑器里面, 然后在相应的位置上生成一个Node(这个node可以通过工具创建出来的), node的name属性为java类名, 现在不知道如何下手, 请问您否指教一下?

2. 我去dev.eclipse.org的cvs上下载的example没有一个能运行, 我本地的是eclipse3.4的modeling版本, 可能是因为版本太新了, 请问有什么方法可以解决吗?

最后想说, 外面GMF的资料很少, 请问八进制是如何学习gmf的? 
我的qq是121689620, 希望研究GMF的朋友共同进步

  回复  引用    

#98楼 2009-08-30 11:56 kemaoo[未注册用户]
八进制,您好,我想问个问题:

在图形元素中我定义了一个Label用于输入描述信息,要进入编辑状态有两中方式:1.选中这个Label再单击鼠标左键;2.还是选中这个Label然后键入F2。我现在想在双击这个图形元素的时候就直接进入这个Lable,使它成为编辑状态。我想着是请求在RequestConstatns.REQ_OPEN状态下做,不知道这个思路是否正确

  回复  引用    

#99楼[楼主] 2009-09-09 18:33 八进制      
@kemaoo
可以的。

  回复  引用  查看    

将label置于Node外面,在这里有详细的过程解释http://dirksmetric.wordpress.com/2008/06/21/gmf-knowledge-positioning-of-external-labels/
搞了好久好久,不过自己认为最重要的是GMFgraph中DiagramLabel的External属性为true导致的,但是貌似这个不能自己改的啊,我曾经试过没有设置新的FigureDescriptor来放置label而成功将label放到Node外面的(External属性为true),这是为什么呢。。。

  回复  引用    

examples中的logic示例,似乎只提供了ecore,没有提供gmfgraph、gmftool和gmfmap。请问是他们开发时没有用到这些东西,完全生写的代码,还是他们把示例提供出来时缺了这些东西?

  回复  引用    

评论共2页: 上一页 1 2