当使用dynamic emf的方式来生成emf model的时候,只会使用ReflectiveItemProviderAdapterFactory和ReflectiveItemProvider来充当emf.edit部分,这个时候如果需要定制ItemProvider和AdapterFactory的话,需要从这两个类继承,重载相关的方法,例如:
java 代码
- List factories = new ArrayList();
- factories.add(new ResourceItemProviderAdapterFactory());
- // 这里创建匿名ReflectiveItemProviderAdapterFactory的最终目的是为了定制Tree的图标
- factories.add(new ReflectiveItemProviderAdapterFactory() {
- @Override
- public Adapter createAdapter(Notifier target) {
- return new ReflectiveItemProvider(this) {
- @Override
- public Object getImage(Object object) {
- EClass eClass = ((EObject) object).eClass();
- // 改从emf中取得icon为从rule中取icon的内容,因为icon不属于业务模型的内容,只是属于显示层的信息
- return overlayImage(
- object,
- ViewEditorPlugin.INSTANCE
- .getImage((String) configReader
- .getIconPath(eClass.getName())));
- }
- };
- }
- });
- adapterFactory = new ComposedAdapterFactory(factories);
本文介绍如何在使用dynamicemf生成EMF Model时,通过继承ReflectiveItemProviderAdapterFactory及ReflectiveItemProvider来定制ItemProvider和AdapterFactory。重点展示如何修改图标获取方式,以适应不同的业务需求。

2235

被折叠的 条评论
为什么被折叠?



