当使用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);
安徽新华电脑学校专业职业规划师为你提供更多帮助【在线咨询】