Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Eclipse Platform » [Databinding] ObservableListTreeContentProvider
[Databinding] ObservableListTreeContentProvider [message #329484] Wed, 25 June 2008 20:31 Go to next message
Al B is currently offline Al BFriend
Messages: 130
Registered: July 2009
Senior Member
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 20:42 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
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 22:52 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
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 16:14 Go to previous message
Matthew Hall is currently offline Matthew HallFriend
Messages: 368
Registered: July 2009
Senior Member
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: Thu Jul 18 03:44:14 GMT 2024

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

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

Back to the top