I really thought i got it - but i was wrong... i isolated my problem and 
perhaps someone 
could elaborate what i need to change and why.

Here are the srcs: [FONT="Century Gothic"]Ich konnte den Fehler rekonstruieren 
auch bei 
einem anderen Modell feststellen. Ich glaube ich hab eine Blockade gerade. 
Vielleicht mag 
sich das nochmal jemand anschauen?

http://www.box.net/shared/gmbrc5yc2k

--- In [email protected], "Alex Harui" <[EMAIL PROTECTED]> 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: [email protected] [mailto:[EMAIL PROTECTED] On
> Behalf Of florian.salihovic
> Sent: Thursday, November 29, 2007 4:27 PM
> To: [email protected]
> 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