[Users] Question about turning on entire group of layers in layercontainer/treenode

Andrew Stewart Andrew.Stewart at reddeer.ca
Mon Sep 20 16:09:55 CEST 2010


Thanks for your suggestions, I was able to add checked:false and then setup a listener as per your suggetion to turn off all child nodes when I found an example here - http://www.mail-archive.com/users@geoext.org/msg00319.html  and it works great 




-----Original Message-----
From: Andreas Hocevar [mailto:ahocevar at opengeo.org] 
Sent: September 19, 2010 1:17 PM
To: Andrew Stewart
Cc: 'Pol'; 'users at geoext.org'
Subject: Re: [Users] Question about turning on entire group of layers in layercontainer/treenode

Hi,

two things to do here:

 * configure the LayerContainer with checked: true
 * add a checkchange handler to the LayerContainer that walks through all its children and gives them the same checked state that the parent has.

Regards,
Andreas.

On Sep 17, 2010, at 17:37 , Andrew Stewart wrote:

> Sorry didn't realize it was pasted all messed up, here is the code a little more readable thanks
>  
>  
>  
>         //Labels LayerList 
>         var layerList_Labels = new GeoExt.tree.LayerContainer({
>         text: 'Labels',
>         layerStore: mapPanel.layers,
>         leaf: false,
>         cls: 'rootnode',
>         enableDD: true,
>         expanded: false,
>         loader: 
>         {
>             filter: function(record) 
>             {
>                 var myarr = new Array();
>                 myarr[0] = record.get("layer").name.indexOf("Overview Streets");
>                 myarr[1] = record.get("layer").name.indexOf("Quadrant Streets");
>                 myarr[2] = record.get("layer").name.indexOf("Neighbourhood Streets");
>                 myarr[3] = record.get("layer").name.indexOf("Block Streets");
>                 myarr[4] = record.get("layer").name.indexOf("Proposed Streets");
>                 myarr[5] = record.get("layer").name.indexOf("Address Label (Overview)");
>                 myarr[6] = record.get("layer").name.indexOf("Address Label (Detail)");
>                 if(myarr[0]==-1 && myarr[1]==-1 && myarr[2]==-1 && myarr[3]==-1 && myarr[4]==-1 && myarr[5]==-1 && myarr[6]==-1)
>                 {
>                 return false;
>                 }
>                 else
>                 {
>                 return true;
>                 }
>             }
>             }
>         });
>  
> 
>         //declare root tree node
>         var layerRoot = new Ext.tree.TreeNode({
>             enableDD: true,
>             text: "All Legend Items",
>             expanded: true
>             });
>             
>        //add children to root node
>        layerRoot.appendChild(layerList_Labels)
>        layerRoot.appendChild(layerlist_AOI)
>        layerRoot.appendChild(layerlist_Trails)
>        layerRoot.appendChild(layerlist_Footprints)
>        layerRoot.appendChild(layerlist_LegalFabric)
>        layerRoot.appendChild(layerlist_ParcelFabric)
>        layerRoot.appendChild(layerlist_Base)
>        layerRoot.appendChild(layerlist_Orthos)
>               
>             
>         var layerTree = new Ext.tree.TreePanel({
>         title: '',
>         renderTo: 'legend',
>         root: layerRoot,
>         enableDD: true,
>         applyLoader: true,
>         rootVisible: false
>  
>  
> 
> From: Pol [mailto:d.paolino at gmail.com] 
> Sent: September 17, 2010 9:33 AM
> To: Andrew Stewart
> Subject: Re: [Users] Question about turning on entire group of layers in layercontainer/treenode
> 
> Dude,
> 
> Is it possible for you to indent your code ? It's really easier to read and to understand it...
> 
> Thanks !
> 
> -Pol D.-
> http://www.google.com/profiles/110003197662276240659
> 
> 
> On Fri, Sep 17, 2010 at 17:23, Andrew Stewart <Andrew.Stewart at reddeer.ca> wrote:
>  I have a layerlist that is working fine and being entered into a layercontainer/treepanel to show all my layers. Everything works fine but I am wondering if there is a way to turn on all layers by adding a checkbox to the group much like checkboxes are next to all individual layers I have. Appreciate any advice on how to modify my existing code to accomplish this so I can turn all my layers on by clicking the group (root layer) or if there is another way to do this, thanks.
> 
>  //Labels LayerList
> 
> 
> var layerList_Labels = new GeoExt.tree.LayerContainer({
> text:
> 
> 'Labels',
> layerStore: mapPanel.layers,
> 
> leaf:
> 
> false,
> cls:
> 
> 'rootnode',
> enableDD:
> 
> true,
> expanded:
> 
> false,
> loader:
> 
> {
> 
> filter:
> 
> function(record)
> {
> 
> 
> var myarr = new Array();
> myarr[0] = record.
> 
> get("layer").name.indexOf("Overview Streets");
> myarr[1] = record.
> 
> get("layer").name.indexOf("Quadrant Streets");
> myarr[2] = record.
> 
> get("layer").name.indexOf("Neighbourhood Streets");
> myarr[3] = record.
> 
> get("layer").name.indexOf("Block Streets");
> myarr[4] = record.
> 
> get("layer").name.indexOf("Proposed Streets");
> myarr[5] = record.
> 
> get("layer").name.indexOf("Address Label (Overview)");
> myarr[6] = record.
> 
> get("layer").name.indexOf("Address Label (Detail)");
> 
> if(myarr[0]==-1 && myarr[1]==-1 && myarr[2]==-1 && myarr[3]==-1 && myarr[4]==-1 && myarr[5]==-1 && myarr[6]==-1)
> {
> 
> 
> return false;
> }
> 
> 
> else
> {
> 
> 
> return true;
> }
> 
> }
> 
> }
> 
> });
> 
> 
> 
> //declare root tree node
> 
> var layerRoot = new Ext.tree.TreeNode({
> enableDD:
> 
> true,
> text:
> 
> "All Legend Items",
> expanded:
> 
> true
> });
> 
> 
> 
> //add children to root node
> layerRoot.appendChild(layerList_Labels)
> 
> 
> 
> 
> var layerTree = new Ext.tree.TreePanel({
> title:
> 
> '',
> renderTo:
> 
> 'legend',
> root: layerRoot,
> 
> enableDD:
> 
> true,
> applyLoader:
> 
> true,
> rootVisible:
> 
> false
> });
> 
> 
> This e-mail is intended for the original recipient(s) only. If you have received it in error, please advise the sender and delete this message.
> 
> 
> _______________________________________________
> Users mailing list
> Users at geoext.org
> http://www.geoext.org/cgi-bin/mailman/listinfo/users
> 
> 
> 
> [This message has been scanned for security content threats and viruses.]
> 
> [The City of Red Deer I.T. Services asks that you please consider the environment before printing this e-mail.]
> 
> 
> This e-mail is intended for the original recipient(s) only. If you have received it in error, please advise the sender and delete this message.
> 
> _______________________________________________
> Users mailing list
> Users at geoext.org
> http://www.geoext.org/cgi-bin/mailman/listinfo/users



-- 
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.



[This message has been scanned for security content threats and viruses.]

[The City of Red Deer I.T. Services asks that you please consider the environment before printing this e-mail.]






More information about the Users mailing list