Skip to main content



      Home
Home » Eclipse Projects » Eclipse Platform » [Databinding] ObservableListTreeContentProvider
[Databinding] ObservableListTreeContentProvider [message #329484] Wed, 25 June 2008 16:31 Go to next message
Eclipse UserFriend
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 Go to previous messageGo to next message
Eclipse UserFriend
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 Go to previous messageGo to next message
Eclipse UserFriend
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 Go to previous message
Eclipse UserFriend
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)
>>>
>>>
>>
>>
>
>
Previous Topic:Applying conditions to code templates (code generation)
Next Topic:Software updates: installing to specific locations
Goto Forum:
  


Current Time: Wed Apr 16 10:09:05 EDT 2025

Powered by FUDForum. Page generated in 0.08564 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top