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.
> >
>



Reply via email to