<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hi there,<br><br>I have some doubts about gx_wmslegend and WMSCapabilitiesStore, I would really appreciate some support to understand the source of the error and solve the error I get when they are combined. When I use this code (code in bold means for comparison between codes):<br><br>&nbsp; &nbsp; // create a new WMS capabilities store<br>&nbsp; &nbsp; &nbsp; &nbsp;store = new GeoExt.data.WMSCapabilitiesStore({<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;url: "/mmss?REQUEST=GetCapabilities&amp;SERVICE=WMS&amp;VERSION=1.1.1"<br>&nbsp; &nbsp; &nbsp; &nbsp;});<br>&nbsp; &nbsp; &nbsp; &nbsp;store.load();<br><br>&nbsp; &nbsp; &nbsp; &nbsp;// create a grid to display records from the store<br>&nbsp; &nbsp; &nbsp; &nbsp;addLayerGrid = new Ext.grid.GridPanel({<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;autoHeight: true,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hideBorders: true,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;border: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;frame: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;columnLines: true,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;viewConfig: {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;scrollOffset: 0<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;store: store,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cm: new Ext.grid.ColumnModel([<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{id: "idTitle", header: "Layer", dataIndex: "title", width: 155},<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{id: "idAbstract", header: "Brief description", dataIndex: "abstract", width: 255}<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;autoExpandColumn: "idAbstract",<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bbar: ["-&gt;", {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;handler: function() {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;addLayerGrid.getSelectionModel().each(function(record) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var copy = record.copy();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mapPanel.layers.add(copy);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mapPanel.map.setCenter(<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OpenLayers.Bounds.fromArray(copy.get("llbbox"))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}]<br>&nbsp; &nbsp; &nbsp; &nbsp; });<br><br>&nbsp; &nbsp; &nbsp; &nbsp; <b>root = new GeoExt.tree.LayerContainer({<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; layerStore: mapPanel.layers,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; leaf: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; expanded: true<br>&nbsp; &nbsp; &nbsp; &nbsp; });</b><div><b><br>&nbsp; &nbsp; &nbsp; &nbsp; removeLayerTreeLegend = new Ext.tree.TreePanel({<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; autoHeight: true,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; border: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lines: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enableDD: true,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rootVisible: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root: root,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bbar: ["-&gt;", {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; handler: function() {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var node = removeLayerTreeLegend.getSelectionModel().getSelectedNode();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (node &amp;&amp; node.layer instanceof OpenLayers.Layer.WMS) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mapPanel.map.removeLayer(node.layer);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }]<br>&nbsp; &nbsp; &nbsp; &nbsp; });</b><br><br>Things work great as in the GeoExt 1.1 examples. But if I use instead this combination I get an error (see below code):<br><br>&nbsp; &nbsp; // custom layer node UI class<br>&nbsp; &nbsp; var LayerNodeUI = Ext.extend(<br>&nbsp; &nbsp; &nbsp; &nbsp; GeoExt.tree.LayerNodeUI,<br>&nbsp; &nbsp; &nbsp; &nbsp; new GeoExt.tree.TreeNodeUIEventMixin()<br>&nbsp; &nbsp; );<br><br>&nbsp; &nbsp; // create a new WMS capabilities store<br>&nbsp; &nbsp; store = new GeoExt.data.WMSCapabilitiesStore({<br>&nbsp; &nbsp; &nbsp; &nbsp; url: "/mmss?REQUEST=GetCapabilities&amp;SERVICE=WMS&amp;VERSION=1.1.1"<br>&nbsp; &nbsp; });<br>&nbsp; &nbsp; store.load();<br><br>&nbsp; &nbsp; // create a grid to display records from the store<br>&nbsp; &nbsp; addLayerGrid = new Ext.grid.GridPanel({<br>&nbsp; &nbsp; &nbsp; &nbsp; autoHeight: true,<br>&nbsp; &nbsp; &nbsp; &nbsp; hideBorders: true,<br>&nbsp; &nbsp; &nbsp; &nbsp; border: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; frame: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; columnLines: true,<br>&nbsp; &nbsp; &nbsp; &nbsp; viewConfig: {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scrollOffset: 0<br>&nbsp; &nbsp; &nbsp; &nbsp; },<br>&nbsp; &nbsp; &nbsp; &nbsp; store: store,<br>&nbsp; &nbsp; &nbsp; &nbsp; cm: new Ext.grid.ColumnModel([<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {id: "idTitle", header: "Layer", dataIndex: "title", width: 155},<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {id: "idAbstract", header: "Brief description", dataIndex: "abstract", width: 255}<br>&nbsp; &nbsp; &nbsp; &nbsp; ]),<br>&nbsp; &nbsp; &nbsp; &nbsp; autoExpandColumn: "idAbstract",<br>&nbsp; &nbsp; &nbsp; &nbsp; bbar: ["-&gt;", {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; handler: function() {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addLayerGrid.getSelectionModel().each(function(record) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var copy = record.copy();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mapPanel.layers.add(copy);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mapPanel.map.setCenter(<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OpenLayers.Bounds.fromArray(copy.get("llbbox"))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; }]<br>&nbsp; &nbsp; });<br><br>&nbsp; &nbsp; <b>removeLayerTreeLegend = new Ext.tree.TreePanel({<br>&nbsp; &nbsp; &nbsp; &nbsp; autoHeight: true,<br>&nbsp; &nbsp; &nbsp; &nbsp; border: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; lines: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; enableDD: true,<br>&nbsp; &nbsp; &nbsp; &nbsp; rootVisible: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; plugins: [{<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ptype: "gx_treenodecomponent"<br>&nbsp; &nbsp; &nbsp; &nbsp; }],<br>&nbsp; &nbsp; &nbsp; &nbsp; loader: {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; applyLoader: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uiProviders: {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "custom_ui": LayerNodeUI<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; },<br>&nbsp; &nbsp; &nbsp; &nbsp; root: {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nodeType: "gx_layercontainer",<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loader: {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; baseAttrs: {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uiProvider: "custom_ui"<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; createNode: function(attr) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; attr.component = {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xtype: "gx_wmslegend",<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; baseParams: {format: "image/png"},<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; layerRecord: mapPanel.layers.getByLayer(attr.layer),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; showTitle: false,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cls: "legend"<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return GeoExt.tree.LayerLoader.prototype.createNode.call(this, attr);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; },<br>&nbsp; &nbsp; &nbsp; &nbsp; bbar: ["-&gt;", {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text: OpenLayers.i18n('Layering.removeButton'),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; handler: function() {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var node = removeLayerTreeLegend.getSelectionModel().getSelectedNode();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (node &amp;&amp; node.layer instanceof OpenLayers.Layer.WMS) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mapPanel.map.removeLayer(node.layer);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; }]<br>&nbsp; &nbsp; });</b><br><br>This error message appears related to 'LAYERS' is undefined in WMSlegend.js:<br><br>&nbsp; &nbsp; Uncaught TypeError: Cannot read property 'LAYERS' of undefined<br><br>pointing to:<br><br>&nbsp; &nbsp; layerNames = [layer.params.LAYERS].join(",").split(",");<br><br>in WMSlegend.js line 184.<div><br></div><div><a href="http://i.stack.imgur.com/CHa4v.png" target="_blank">http://i.stack.imgur.com/CHa4v.png</a><br><div><br></div><div>I understand that LAYERS is provided by `store.load` above, is this correct? if so, what is missing?<br><br>I'd appreciate your support on this, thanks in advance,<br></div></div></div><div><br></div><div>Gery</div>                                               </div></body>
</html>