EMF ItemProvider to PropertySource in GEF [message #499130] |
Thu, 19 November 2009 20:08  |
Eclipse User |
|
|
|
Hi all,
i would like to provide PropertySource for my GEF editor, so that
i can use Properties view to edit my model in GEF.
I only find some threads from this forum, but it didn't fix my problem.
I tried to use adapter factory (see code below) from EMF.Edit.
My Properties view display and update (changes made in GEF)
every features correctly, but i can only edit boolean features.
String, List, custom datatype throw ClassCastException (Unhandled event loop exception).
The code below is in my EditPart for the super class of all my model elements.
I have tried various methods (see comment in the code), but it has the same effect.
Do i missed something? Please help.
Thanks
Polson
@SuppressWarnings("unchecked")
@Override
public Object getAdapter(Class key) {
if (IPropertySource.class == key) {
return getPropertySource();
}
return super.getAdapter(key);
}
protected AdapterFactoryContentProvider getAdapterFactory() {
if (adapterFactory == null) {
// adapterFactory = new ProtocolItemProviderAdapterFactory();
//
// adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
// adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
// adapterFactory.addAdapterFactory(new ProtocolItemProviderAdapterFactory());
// adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
adapterFactory = new AdapterFactoryContentProvider(new ProtocolItemProviderAdapterFactory());
}
return adapterFactory;
}
protected IPropertySource getPropertySource() {
// if (propertySource == null) {
// Adapter adapter = getAdapterFactory().adapt(getModel(), IItemPropertySource.class);
// IItemPropertySource ips = (IItemPropertySource)adapter;
// propertySource = new PropertySource(getModel(), ips);
// }
// return propertySource;
return getAdapterFactory().getPropertySource(getModel());
}
java.lang.ClassCastException: org.eclipse.emf.edit.provider.ItemPropertyDescriptor$PropertyValueWrapper cannot be cast to org.eclipse.draw2d.geometry.Point
at profab.gcf.model.impl.ProtocolFactoryImpl.convertPointToString(ProtocolFactoryImpl.java:220)
at profab.gcf.model.impl.ProtocolFactoryImpl.convertToString(ProtocolFactoryImpl.java:109)
at org.eclipse.emf.ecore.util.EcoreUtil.convertToString(EcoreUtil.java:3269)
at org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeValueHandler.toString(PropertyDescriptor.java:199)
at org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.isCorrect(PropertyDescriptor.java:251)
at org.eclipse.jface.viewers.CellEditor.setValue(CellEditor.java:853)
at org.eclipse.ui.views.properties.PropertySheetEntry.getEditor(PropertySheetEntry.java:384)
at org.eclipse.ui.views.properties.PropertySheetViewer.activateCellEditor(PropertySheetViewer.java:163)
at org.eclipse.ui.views.properties.PropertySheetViewer.handleSelect(PropertySheetViewer.java:727)
at org.eclipse.ui.views.properties.PropertySheetViewer.access$8(PropertySheetViewer.java:707)
at org.eclipse.ui.views.properties.PropertySheetViewer$6.mouseDown(PropertySheetViewer.java:816)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179)
more... java.lang.ClassCastException: org.eclipse.emf.edit.provider.ItemPropertyDescriptor$PropertyValueWrapper cannot be cast to java.util.List
at org.eclipse.emf.edit.ui.provider.PropertyDescriptor$4.openDialogBox(PropertyDescriptor.java:495)
at org.eclipse.jface.viewers.DialogCellEditor$2.widgetSelected(DialogCellEditor.java:244)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
more... java.lang.ClassCastException: org.eclipse.emf.edit.provider.ItemPropertyDescriptor$PropertyValueWrapper cannot be cast to java.lang.String
at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.convertEStringToString(EcoreFactoryImpl.java:651)
at org.eclipse.emf.ecore.impl.EcoreFactoryImpl.convertToString(EcoreFactoryImpl.java:224)
at org.eclipse.emf.ecore.util.EcoreUtil.convertToString(EcoreUtil.java:3269)
at org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeValueHandler.toString(PropertyDescriptor.java:199)
at org.eclipse.emf.edit.ui.provider.PropertyDescriptor$EDataTypeCellEditor.isCorrect(PropertyDescriptor.java:251)
at org.eclipse.jface.viewers.CellEditor.setValue(CellEditor.java:853)
at org.eclipse.ui.views.properties.PropertySheetEntry.getEditor(PropertySheetEntry.java:384)
at org.eclipse.ui.views.properties.PropertySheetViewer.activateCellEditor(PropertySheetViewer.java:163)
at org.eclipse.ui.views.properties.PropertySheetViewer.handleSelect(PropertySheetViewer.java:727)
at org.eclipse.ui.views.properties.PropertySheetViewer.access$8(PropertySheetViewer.java:707)
at org.eclipse.ui.views.properties.PropertySheetViewer$6.mouseDown(PropertySheetViewer.java:816)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179)
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03795 seconds