I managed my Problem by adding a wrapper which manages the access of the tree.
Thanx for the helpful infos. --- In flexcoders@yahoogroups.com, "Alex Harui" <[EMAIL PROTECTED]> wrote: > > Yes. Basically we need unique child collections > > ________________________________ > > From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On > Behalf Of florian.salihovic > Sent: Friday, November 30, 2007 12:34 AM > To: flexcoders@yahoogroups.com > Subject: [flexcoders] Re: ListCollectionView#removeAll wants to dispatch > undefined > > > > > Thanx for the reply! > > So would it be alright from the perspective of modelling the > application, that i create a > field children in each class, that hold references to all of its childs > that i want to display? > > I thought that the treedatadesciptor would be responsible melting the > children to display > together. But the classes themselves are responsible for providing an > access to the childs > to be displayed? > > Sorry if my english ain't that good. I'm from Germany and i may need to > refresh grammar > and vocab ;) > > Best regards! > > --- In flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > , "Alex Harui" <aharui@> wrote: > > > > Actually, you don't want to do either option. You want to implement > > getChildren to return a separate array collection for each collection > of > > children. This is because the individual sets of children are tracked > > an managed by the tree so you can't reuse one collection instance, and > > you should not return different instances for the same set of > children, > > otherwise one part of the tree code will make changes that some other > > part will not notice. Look at the default descriptor and see that it > > caches the AC instances per node/children set > > > > ________________________________ > > > > From: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > [mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > ] On > > Behalf Of florian.salihovic > > Sent: Thursday, November 29, 2007 4:27 PM > > To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > > Subject: [flexcoders] ListCollectionView#removeAll wants to dispatch > > undefined > > > > > > > > Currently i write a lil' component to display class hierachies. I > wrote > > my own > > TreeDataDescriptor. SInce i work with my own class-, packages- and > > interface-descriptor > > classes to describe the structure, i encapsule some ArrayCollection. > In > > order to display the > > structures in a tree, i need to melt them together in one > > ArrayCollection. So far so good... > > > > Since i want not to create a new ArrayCollection everytime the > > ITreeDataDescriptor#getChildren is called, i thought to create one > > ArrayCollection and > > remove all items when the function is called. I thought it would be ok > > to create a new field > > (typed: ArrayCollection) for the class. But actually the forces my > > component to crash. > > Here's the code: > > <pre><code> > > public function getChildren(node:Object, > > model:Object=null):ICollectionView { > > trace(this._className+"#getChildren"); > > try { > > if(node is PackageDescriptor) { > > this._children.sort = null; > > /*try { > > this._children.removeAll(); > > this._children.refresh(); > > } catch (e:Error) { > > trace("Error: "+e.message) > > } catch (e1:StackOverflowError) { > > trace("StackOverflowError: "+e1.message); > > } catch (e2:CollectionViewError) { > > trace("CollectionViewError: "+e2.message); > > } catch (e3:ArgumentError) { > > trace("ArgumentError: "+e2.message); > > }*/ > > trace("\tnode.className: "+PackageDescriptor(node).className); > > this._children = new ArrayCollection(); > > var packageDescriptor:PackageDescriptor = PackageDescriptor(node); > > for (var i:uint = 0; i<packageDescriptor.packages.length; i++) { > > > this._children.addItem(PackageDescriptor(packageDescriptor.packages.getI > > temAt(i))); > > } > > for (var j:uint = 0; j<packageDescriptor.classes.length; j++) { > > > this._children.addItem(ClassDescriptor(packageDescriptor.classes.getItem > > At(j))); > > } > > for (var k:uint = 0; k<packageDescriptor.interfaces.length; k++) { > > > this._children.addItem(InterfaceDescriptor(packageDescriptor.interfaces. > > getItemAt(k))); > > } > > /*for (var l:uint = 0; l<this._children.length; l++) { > > trace("\t\t"+l+": "+this._children.getItemAt(l).name); > > }*/ > > return this._children; > > } > > } catch (e:Error) { > > trace("Error: "+e.message) > > } catch (e1:StackOverflowError) { > > trace("StackOverflowError: "+e1.message); > > } catch (e2:CollectionViewError) { > > trace("CollectionViewError: "+e2.message); > > } finally { > > return _children; > > } > > }</code></pre> > > So why is it at this point wrong to call removeAll to remove all > > references from the > > ArrayCollection instead of creating a new ArrayCollection all the > time? > > The code above > > compiles. If i uncomment the first try/ctach statement, the > application > > crashes. > > >