文章列表
在EMF应用中,有一些时候,我们希望一个对象的某一个属性在属性视图中的编辑状态时条件可控的,如果符合某一个条件,这个属性就不能被修改,否则就允许修改。
一种标准办法是在对应对象的xxxItemProviderAdapter中的进行如下处理:
protected void addxxxPropertyDescriptor(Object object) {
itemPropertyDescriptors.add(new ItemPropertyDescriptor(
((ComposeableAdapterFactory) adapterFactory)
...
在EMF生成的插件应用中,对于以containment属性为true的feature,都是通过在new child菜单上动态添加对应的创建子类的菜单项来实现添加到当前元素中的。这个菜单是在什么地方进行控制的呢?
在创建的edit插件中,xxxItemProvider类中有一个collectNewChildDescriptors方法,每一个childDescriptor就对应一个菜单,对new child子菜单的控制就是在这个地方。
花了几个小时调试EMF的模型数据加载的一个DEMO,简单来说就是我定义了一个model.Ecore对应的元模型,然后由EMF生成了维护这些模型的插件,运行这些插件,定义了一些自己的模型实例,保存到文件test.model中,然后写了一个小程序来测试加载这个文件,已开始总是出现URI方面的一些问题,为了避免弯路,可以利用:URI fileURI = URI.createFileURI(new File("library.xml").getAbsolutePath);
接着就是加载了,但是总是碰到org.eclipse.emf.ecore.xmi.PackageNotFound ...
如果要创建一个自己定义Eclipse project,就需要实现自己的工程向导,在Eclipse下,有很多中向导,“新建向导”就是其中的一类,都要实现INewWizard接口,现在先不管这个接口,回到主题,就是这个向导的分类(Category),要想让自己的工程向导出现在Eclipse中,需要扩展org.eclipse.ui.newWizards这个扩展点,这个扩展点下有三个元素
1、 category
2、wizard(略)
3、primaryWizard(略)
第1个对象就是决定自己扩展的工程向导的位置,注意category中有一个parentCategory,通过定义category的pa ...
对于EMF中的采用MAP方式的Reference总是感觉很迷惑,经过一段时间的学习,现在终于感觉清晰了,记下来,免得忘了。
EMF没有直接的MAP只有间接的定义,换句话说,就是按照其要求的方式定义好后,就会出现Map的效果。
按照如下的几个步骤:
1、先定义一个EClass,其instacne type name设置为java.util.Map.Entry。然后增加两个属性
或者引用(如果简单类型或者与定义类型,可以定义为属性,如果是自己定义的类型,就需要定义为EReference)。第一个属性其name设置为key,第二个属性其name设置为value;
2、在需要定义Map的ECalss ...
如果我们把draw2d和GEF比作一个构件的话,那么GMF就是一座大厦了。最近在记录学习GMF心得时,输入GMF时总是显示中文的"更麻烦",感觉“更麻烦”来形容GMF真是最贴切不过了。