[Databinding] ObservableListTreeContentProvider [message #329484] |
Wed, 25 June 2008 16:31  |
Eclipse User |
|
|
|
Hi,
Following Matt Hall's posting
( http://dev.eclipse.org/newslists/news.eclipse.platform/msg74 494.html), I
have been trying to set my view (which displays EMF objects) to use an
ObservableListTreeContentProvider as shown below:
ObservableListTreeContentProvider provider = new
ObservableListTreeContentProvider(EMFObservables.listFactory (Realm.getDefault(),
MSLADLPackage.Literals.ACTIVITY_DEFS__ACTIVITY_DEF), null);
treeViewer.setContentProvider(provider);
IObservableSet knownElements = provider.getKnownElements();
IObservableMap[] observeMaps = EMFObservables.observeMaps(
knownElements,
new EStructuralFeature[] {
MSLADLPackage.Literals.ACTIVITY_DEFS__ACTIVITY_DEF });
ObservableMapLabelProvider labelProvider = new ObservableMapLabelProvider(
observeMaps);
treeViewer.setLabelProvider(labelProvider);
treeViewer.setInput(((MSLADLType) inputAD).getActivityDefs());
Everything looks like is working when the EObjectObservableList()
constructor is first called, however, AbstractTreeViewer then calls
hasChildren(element) causing ObservableListTreeContentProvider to create
an observable for the contained children. The problem is that those
children are single valued features, so it won't return the list that
EObjectObservableList is expecting; as a result, it throws a
java.lang.ClassCastException as show below.
Any help/clarification will be greatly appreciated. Thanks in advance!
ActivityDefs
|
|-->ActivityDef1
| |
| |->name
|
|-->ActivityDef2
| |
| |->name
java.lang.ClassCastException: java.lang.String
at
org.eclipse.emf.databinding.EObjectObservableList.<init>(EObjectObservableList.java:52)
at
org.eclipse.emf.databinding.EMFObservables.observeList(EMFOb servables.java:81)
at
org.eclipse.emf.databinding.EMFObservables$2.createObservabl e(EMFObservables.java:172)
at
org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider$TreeNode.initChildren(ObservableC ollectionTreeContentProvider.java:339)
at
org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider$TreeNode.hasChildren(ObservableCo llectionTreeContentProvider.java:354)
at
org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider.hasChildren(ObservableCollectionT reeContentProvider.java:175)
at
org.eclipse.jface.databinding.viewers.ObservableListTreeCont entProvider.hasChildren(ObservableListTreeContentProvider.ja va:159)
at
org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(Ab stractTreeViewer.java:2076)
|
|
|
Re: [Databinding] ObservableListTreeContentProvider [message #329486 is a reply to message #329484] |
Wed, 25 June 2008 16:42   |
Eclipse User |
|
|
|
AJ,
Please see my reply on the EMF-List. I think your problem is how that
you'll need a mediator for the beginning :-)
Tom
AJ schrieb:
> Hi,
>
> Following Matt Hall's posting
> ( http://dev.eclipse.org/newslists/news.eclipse.platform/msg74 494.html),
> I have been trying to set my view (which displays EMF objects) to use an
> ObservableListTreeContentProvider as shown below:
>
> ObservableListTreeContentProvider provider = new
> ObservableListTreeContentProvider(EMFObservables.listFactory (Realm.getDefault(),
>
>
> MSLADLPackage.Literals.ACTIVITY_DEFS__ACTIVITY_DEF), null);
> treeViewer.setContentProvider(provider);
>
> IObservableSet knownElements = provider.getKnownElements();
> IObservableMap[] observeMaps = EMFObservables.observeMaps(
> knownElements,
> new EStructuralFeature[] {
> MSLADLPackage.Literals.ACTIVITY_DEFS__ACTIVITY_DEF });
>
> ObservableMapLabelProvider labelProvider = new ObservableMapLabelProvider(
> observeMaps);
> treeViewer.setLabelProvider(labelProvider);
>
> treeViewer.setInput(((MSLADLType) inputAD).getActivityDefs());
>
>
> Everything looks like is working when the EObjectObservableList()
> constructor is first called, however, AbstractTreeViewer then calls
> hasChildren(element) causing ObservableListTreeContentProvider to create
> an observable for the contained children. The problem is that those
> children are single valued features, so it won't return the list that
> EObjectObservableList is expecting; as a result, it throws a
> java.lang.ClassCastException as show below.
> Any help/clarification will be greatly appreciated. Thanks in advance!
>
>
> ActivityDefs
> |
> |-->ActivityDef1
> | |
> | |->name
> |
> |-->ActivityDef2
> | |
> | |->name
>
>
>
> java.lang.ClassCastException: java.lang.String
> at
> org.eclipse.emf.databinding.EObjectObservableList.<init>(EObjectObservableList.java:52)
>
> at
> org.eclipse.emf.databinding.EMFObservables.observeList(EMFOb servables.java:81)
>
> at
> org.eclipse.emf.databinding.EMFObservables$2.createObservabl e(EMFObservables.java:172)
>
> at
> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider$TreeNode.initChildren(ObservableC ollectionTreeContentProvider.java:339)
>
> at
> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider$TreeNode.hasChildren(ObservableCo llectionTreeContentProvider.java:354)
>
> at
> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider.hasChildren(ObservableCollectionT reeContentProvider.java:175)
>
> at
> org.eclipse.jface.databinding.viewers.ObservableListTreeCont entProvider.hasChildren(ObservableListTreeContentProvider.ja va:159)
>
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(Ab stractTreeViewer.java:2076)
>
>
--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
|
|
|
Re: [Databinding] ObservableListTreeContentProvider [message #329561 is a reply to message #329486] |
Fri, 27 June 2008 18:52   |
Eclipse User |
|
|
|
Matt can you take a look at the thread in the EMF-Newsgroup "EMF
databinding Recipe" and give feedback on it?
Questions which arise:
----------------------
How do you think this all could be used in Master-Detail?
Why is the input getting part of the knownElements list which doesn't
make any sense to me, why observe an attribute which is not shown?
How can we support different Object-Types (I think we should work out a
solution in 3.5?)?
Tom
Tom Schindl schrieb:
> AJ,
>
> Please see my reply on the EMF-List. I think your problem is how that
> you'll need a mediator for the beginning :-)
>
> Tom
>
> AJ schrieb:
>> Hi,
>>
>> Following Matt Hall's posting
>> ( http://dev.eclipse.org/newslists/news.eclipse.platform/msg74 494.html),
>> I have been trying to set my view (which displays EMF objects) to use
>> an ObservableListTreeContentProvider as shown below:
>>
>> ObservableListTreeContentProvider provider = new
>> ObservableListTreeContentProvider(EMFObservables.listFactory (Realm.getDefault(),
>>
>>
>> MSLADLPackage.Literals.ACTIVITY_DEFS__ACTIVITY_DEF), null);
>> treeViewer.setContentProvider(provider);
>>
>> IObservableSet knownElements = provider.getKnownElements();
>> IObservableMap[] observeMaps = EMFObservables.observeMaps(
>> knownElements,
>> new EStructuralFeature[] {
>> MSLADLPackage.Literals.ACTIVITY_DEFS__ACTIVITY_DEF });
>>
>> ObservableMapLabelProvider labelProvider = new
>> ObservableMapLabelProvider(
>> observeMaps);
>> treeViewer.setLabelProvider(labelProvider);
>>
>> treeViewer.setInput(((MSLADLType) inputAD).getActivityDefs());
>>
>>
>> Everything looks like is working when the EObjectObservableList()
>> constructor is first called, however, AbstractTreeViewer then calls
>> hasChildren(element) causing ObservableListTreeContentProvider to
>> create an observable for the contained children. The problem is that
>> those children are single valued features, so it won't return the list
>> that EObjectObservableList is expecting; as a result, it throws a
>> java.lang.ClassCastException as show below.
>> Any help/clarification will be greatly appreciated. Thanks in advance!
>>
>>
>> ActivityDefs
>> |
>> |-->ActivityDef1
>> | |
>> | |->name
>> |
>> |-->ActivityDef2
>> | |
>> | |->name
>>
>>
>>
>> java.lang.ClassCastException: java.lang.String
>> at
>> org.eclipse.emf.databinding.EObjectObservableList.<init>(EObjectObservableList.java:52)
>>
>> at
>> org.eclipse.emf.databinding.EMFObservables.observeList(EMFOb servables.java:81)
>>
>> at
>> org.eclipse.emf.databinding.EMFObservables$2.createObservabl e(EMFObservables.java:172)
>>
>> at
>> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider$TreeNode.initChildren(ObservableC ollectionTreeContentProvider.java:339)
>>
>> at
>> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider$TreeNode.hasChildren(ObservableCo llectionTreeContentProvider.java:354)
>>
>> at
>> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider.hasChildren(ObservableCollectionT reeContentProvider.java:175)
>>
>> at
>> org.eclipse.jface.databinding.viewers.ObservableListTreeCont entProvider.hasChildren(ObservableListTreeContentProvider.ja va:159)
>>
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(Ab stractTreeViewer.java:2076)
>>
>>
>
>
--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
|
|
|
Re: [Databinding] ObservableListTreeContentProvider [message #329626 is a reply to message #329561] |
Mon, 30 June 2008 12:14  |
Eclipse User |
|
|
|
Will do.
Tom Schindl wrote:
> Matt can you take a look at the thread in the EMF-Newsgroup "EMF
> databinding Recipe" and give feedback on it?
>
> Questions which arise:
> ----------------------
> How do you think this all could be used in Master-Detail?
>
> Why is the input getting part of the knownElements list which doesn't
> make any sense to me, why observe an attribute which is not shown?
>
> How can we support different Object-Types (I think we should work out a
> solution in 3.5?)?
>
> Tom
>
> Tom Schindl schrieb:
>> AJ,
>>
>> Please see my reply on the EMF-List. I think your problem is how that
>> you'll need a mediator for the beginning :-)
>>
>> Tom
>>
>> AJ schrieb:
>>> Hi,
>>>
>>> Following Matt Hall's posting
>>> ( http://dev.eclipse.org/newslists/news.eclipse.platform/msg74 494.html),
>>> I have been trying to set my view (which displays EMF objects) to use
>>> an ObservableListTreeContentProvider as shown below:
>>>
>>> ObservableListTreeContentProvider provider = new
>>> ObservableListTreeContentProvider(EMFObservables.listFactory (Realm.getDefault(),
>>>
>>>
>>> MSLADLPackage.Literals.ACTIVITY_DEFS__ACTIVITY_DEF), null);
>>> treeViewer.setContentProvider(provider);
>>>
>>> IObservableSet knownElements = provider.getKnownElements();
>>> IObservableMap[] observeMaps = EMFObservables.observeMaps(
>>> knownElements,
>>> new EStructuralFeature[] {
>>> MSLADLPackage.Literals.ACTIVITY_DEFS__ACTIVITY_DEF });
>>>
>>> ObservableMapLabelProvider labelProvider = new
>>> ObservableMapLabelProvider(
>>> observeMaps);
>>> treeViewer.setLabelProvider(labelProvider);
>>>
>>> treeViewer.setInput(((MSLADLType) inputAD).getActivityDefs());
>>>
>>>
>>> Everything looks like is working when the EObjectObservableList()
>>> constructor is first called, however, AbstractTreeViewer then calls
>>> hasChildren(element) causing ObservableListTreeContentProvider to
>>> create an observable for the contained children. The problem is that
>>> those children are single valued features, so it won't return the
>>> list that EObjectObservableList is expecting; as a result, it throws
>>> a java.lang.ClassCastException as show below.
>>> Any help/clarification will be greatly appreciated. Thanks in advance!
>>>
>>>
>>> ActivityDefs
>>> |
>>> |-->ActivityDef1
>>> | |
>>> | |->name
>>> |
>>> |-->ActivityDef2
>>> | |
>>> | |->name
>>>
>>>
>>>
>>> java.lang.ClassCastException: java.lang.String
>>> at
>>> org.eclipse.emf.databinding.EObjectObservableList.<init>(EObjectObservableList.java:52)
>>>
>>> at
>>> org.eclipse.emf.databinding.EMFObservables.observeList(EMFOb servables.java:81)
>>>
>>> at
>>> org.eclipse.emf.databinding.EMFObservables$2.createObservabl e(EMFObservables.java:172)
>>>
>>> at
>>> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider$TreeNode.initChildren(ObservableC ollectionTreeContentProvider.java:339)
>>>
>>> at
>>> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider$TreeNode.hasChildren(ObservableCo llectionTreeContentProvider.java:354)
>>>
>>> at
>>> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionTreeContentProvider.hasChildren(ObservableCollectionT reeContentProvider.java:175)
>>>
>>> at
>>> org.eclipse.jface.databinding.viewers.ObservableListTreeCont entProvider.hasChildren(ObservableListTreeContentProvider.ja va:159)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(Ab stractTreeViewer.java:2076)
>>>
>>>
>>
>>
>
>
|
|
|
Powered by
FUDForum. Page generated in 0.08564 seconds