Hi Eric, Thanks, that's the solution I was looking for.
BTW the current release (v0.7) of GeoExt.data.LayerStore does not have the getByLayer() method I used this code instead: this.store.getById(attr.layer.id) which worked fine. Cheers Adam On 12/06/2010, at 7:03 AM, Eric Lemoine wrote: > On Fri, Jun 11, 2010 at 4:57 AM, Adam Ratcliffe <[email protected]> wrote: >> Hi, >> >> I have a TreePanel with a GeoExt.tree.LayerContainer like the one in >> this example: http://dev.geoext.org/trunk/geoext/examples/layercontainer.html >> >> For each layer displayed in the Layer Tree I would like to use an icon >> based upon a property of the underlying LayerRecord. I imagine this >> is a fairly common use case but I'm struggling to understand how to do >> it. The best I've managed so far is to change the icon for all layers >> to the same icon e.g. >> >> root: new GeoExt.tree.LayerContainer({ >> text: 'Map Layers', >> loader: { >> baseAttrs: { >> iconCls: 'icon_layer', >> store: layerStore >> } >> }, >> layerStore: layerStore, >> leaf: false, >> expanded: true >> }), expanded: true >> } > > Hi. > > You can create a layer loader instance that overrides createNode: > > var loader = GeoExt.tree.LayerLoader({ > createNode: function(attr) { > attr.iconCls = this.store.getByLayer(attr.layer).get("icon"); > GeoExt.tree.LayerLoader.prototype.createNode.call(this, attr); > } > }); > > and give this loader to the layer container: > > root: new GeoExt.tree.LayerContainer({ > loader: loader, > ... > }) > > Hope it'll work for you. > -- > Eric Lemoine > > Camptocamp France SAS > Savoie Technolac, BP 352 > 73377 Le Bourget du Lac, Cedex > > Tel : 00 33 4 79 44 44 96 > Mail : [email protected] > http://www.camptocamp.com _______________________________________________ Users mailing list [email protected] http://www.geoext.org/cgi-bin/mailman/listinfo/users
