G
Gast2
Gast
Hallo zusammen,
ich hätte ein paar Fragen zum Notification Framework von EMF. Ich nöchte einen ContentProvider für einen TableViewer machen.
1. Gibt es auch einen Adapter der nur auf ein Attribut reagiert oder muss immer überpüft werden, ob das richtige Attribut ankommt?
2. Ich verteh nicht für was die AdapterFactory genau da ist? Und was daran besser sein soll und wie man diese verwendet.
EMF generiert mir ja eine AdapterFactoryImpl aber die einzelenen createMyObjectAdapter sind alle mit null implementiertl.
Mit dem adapt kriert die Factory den richtigen Adapter und fügt diesen meinem eObject zu.
Aber wie bekomme ich den Adapter wieder aus der Liste raus? Bin ich dafür selber verantwortlich oder gehe ich dafür auch über den Adapter?
Wie gesagt seh den Vorteil der Factory noch nicht?!?
ich hätte ein paar Fragen zum Notification Framework von EMF. Ich nöchte einen ContentProvider für einen TableViewer machen.
1. Gibt es auch einen Adapter der nur auf ein Attribut reagiert oder muss immer überpüft werden, ob das richtige Attribut ankommt?
2. Ich verteh nicht für was die AdapterFactory genau da ist? Und was daran besser sein soll und wie man diese verwendet.
EMF generiert mir ja eine AdapterFactoryImpl aber die einzelenen createMyObjectAdapter sind alle mit null implementiertl.
Mit dem adapt kriert die Factory den richtigen Adapter und fügt diesen meinem eObject zu.
Aber wie bekomme ich den Adapter wieder aus der Liste raus? Bin ich dafür selber verantwortlich oder gehe ich dafür auch über den Adapter?
Wie gesagt seh den Vorteil der Factory noch nicht?!?
Java:
public class FahrtContentProvider implements IStructuredContentProvider{
private MyEObject eObject;
private Viewer viewer;
private Adapter adapter;
public FahrtContentProvider(){
adapter = new EContentAdapter(){
@Override
public void notifyChanged(Notification notification) {
//1. geht das auch leichter?
switch (notification.getFeatureID(MyEObject.class))
{
case KindergeldPackage.MYEOBJECT__PERSONLIST:
viewer.refresh();
break;
}
}
};
eObject.eAdapters().add(adapter);
//2.
AdapterFactory someAdapterFactory = .;
Object requiredType = ...;
if(someAdapterFactory.isFactoryForType(requiredType))
{
Adapter theAdapter = someAdapterFactory.adapt(someObject, requiredType);
...
}
}
@Override
public void dispose() {
eObject.eAdapters().remove(adapter);
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
this.viewer = viewer;
}
@Override
public Object[] getElements(Object inputElement) {
return eObject.getPersonList().toArray();
}
}