Hi Jim,

I think that'll be enough to get me going, thanks! :).

And if not, you'll hear from me soon enough :).

Greets,
Dauntless
On Wed, Dec 30, 2009 at 3:36 PM, Jim Hayes <[email protected]> wrote:

>
>
> I've used something like this (which is possibly a bit flaky, I admit. I
> wrote this a long time ago and haven't revisited it since).
>
> private function displayTreeNode(node:XML):void
> {
> expandTreeParents(node);
> movieTree.selectedItem = node;
> movieTree.expandItem(node,true,false);
> var idx:int = movieTree.getItemIndex(node);
> movieTree.scrollToIndex(idx);
> movieTree.firstVisibleItem = node;
> }
>
> private function expandTreeParents(node:XML):void {
> if (node && !movieTree.isItemOpen(node)) {
> movieTree.expandItem(node, true);
> expandTreeParents(node.parent());
> }
> }
>
> where movieTree is my tree instance.
> You need to traverse up the tree from the node you want to display and open
> each item ( expandTreeParents() above ),
> then select the node you want to display. This may not be visible even
> then, hence the scroll to index stuff.
>
> Hope that's enough to get you going, in any case.
>
>
> -----Original Message-----
> From: [email protected] <flexcoders%40yahoogroups.com> on behalf
> of thedauntless_ff
> Sent: Wed 12/30/2009 1:31 PM
> To: [email protected] <flexcoders%40yahoogroups.com>
> Subject: [flexcoders] Selecting xml nodes in a tree
>
> Hi,
>
> My situation:
> - 1 Tree component (id=tree)
> - 1 XMLListCollection as a dataprovider for the tree (id=treeData)
> - 1 String, a url, that has to be found & selected.
>
> My XMLListCollection looks like this:
> <page title="page1" href="url1">
> <page title="subpage1" href="url2"/>
> <page title="subpage2" href="url3">
> <page title="subsubpage1" href="url4">
> </page>
> </page>
> <page title="page2" href="url5">
> <page .../>
> <page .../>
> </page>
>
> Etc. All nodes are named 'page' and have a href property.
>
> What I need now, is a way to select the node in the tree for the given url.
> For example, all nodes are collapsed and I want to select the node with
> href=url4. How can I do this?
>
> This is what I tried:
>
> var t:XMLListCollection = this.treeData;
> var url:String = "myURL";
> for(var i:Number = 0; i<t.length; i++)
> {
> //this works, nodes now contains a list of xml items with the correct url.
> var nodes:XMLList = t[i]..page.(@href==url);
> if(nodes.length() > 0)
> {
> //I only want to select the first occurence
> tree.selectedItem = nodes[0];
> break;
> }
> }
>
> This, however, gives me a weird error (probably not that helpfull):
>
> TypeError: Error #1010: A term is undefined and has no properties.
> at
> mx.controls.listClasses::ListBase/setSelectionDataLoop()[E:\dev\beta1\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:7360]
> at
> mx.controls.listClasses::ListBase/commitSelectedItems()[E:\dev\beta1\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:7251]
> at
> mx.controls.listClasses::ListBase/commitSelectedItem()[E:\dev\beta1\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:7216]
> at mx.controls.listClasses::ListBase/set
> selectedItem()[E:\dev\beta1\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:3474]
> at classes::Logic/onBrowserLocationChange()[C:\Users\ser\Documents\Flex
> Builder 3\application\src\classes\Logic.as:346]
> at flash.events::EventDispatcher/dispatchEventFunction()
> at flash.events::EventDispatcher/dispatchEvent()
> at
> mx.core::UIComponent/dispatchEvent()[E:\dev\beta1\frameworks\projects\framework\src\mx\core\UIComponent.as:11260]
> at Classes::Logic/onBrowserLocationChange()[C:\Users\user\Documents\Flex
> Builder 3\application\src\classes\Logic.as:73]
> at flash.events::EventDispatcher/dispatchEventFunction()
> at flash.events::EventDispatcher/dispatchEvent()
> at
> mx.core::UIComponent/dispatchEvent()[E:\dev\beta1\frameworks\projects\framework\src\mx\core\UIComponent.as:11260]
> at
> mx.controls::HTML/htmlLoader_locationChangeHandler()[E:\dev\beta1\frameworks\projects\airframework\src\mx\controls\HTML.as:1438]
> at flash.events::EventDispatcher/dispatchEventFunction()
> at flash.events::EventDispatcher/dispatchEvent()
> at flash.html::HTMLLoader/onLocationChangeTimer()
> at flash.utils::Timer/_timerDispatch()
> at flash.utils::Timer/tick()
>
> Greets,
> Dauntless
>
> __________________________________________________________
> This communication is from Primal Pictures Ltd., a company registered in
> England and Wales with registration No. 02622298 and registered office: 4th
> Floor, Tennyson House, 159-165 Great Portland Street, London, W1W 5PA, UK.
> VAT registration No. 648874577.
>
> This e-mail is confidential and may be privileged. It may be read, copied
> and used only by the intended recipient. If you have received it in error,
> please contact the sender immediately by return e-mail or by telephoning
> +44(0)20 7637 1010. Please then delete the e-mail and do not disclose its
> contents to any person.
> This email has been scanned for Primal Pictures by the MessageLabs Email
> Security System.
> __________________________________________________________
> 
>

Reply via email to