Index: src/client/widgets/resultextgrid/ResultExtGrid.xslt
===================================================================
--- src/client/widgets/resultextgrid/ResultExtGrid.xslt	(revision 1365)
+++ src/client/widgets/resultextgrid/ResultExtGrid.xslt	(working copy)
@@ -78,7 +78,7 @@
     </xsl:variable>
 
     <script type="text/javascript">
-            var aResources = [];
+            var aResources = [], resource;
 
             <xsl:for-each select="./resources/resource">
               <!-- Resource Name -->
@@ -114,6 +114,29 @@
                     'fields': "all"
                   });
                 </xsl:when>
+                <xsl:when test="/geoprisma/resources/resource[./name = $resourceName]/fields != ''">
+                  resource = {
+                    <xsl:if test="$resourceDelegateContext != ''">
+                    'delegatecontext': {
+                        'enabled': true,
+                        'label': <xsl:value-of select="$resourceDelegateContext" />
+                    },
+                    </xsl:if>
+                    'displayname': <xsl:value-of select="$resourceTitle" />,
+                    'resource': '<xsl:value-of select="$resourceName" />',
+                    'fields': []
+                  };
+                  <xsl:for-each select="/geoprisma/resources/resource[./name = $resourceName]/fields/field">
+                    resource.fields.push(Ext.applyIf({
+                        'id': "<xsl:value-of select="./name" />",
+                        'label': "<xsl:value-of select="./title" />"
+                    }, <xsl:for-each select="./options"><xsl:call-template name="getObjectFromNode"><xsl:with-param name="pNode" select="./options" /></xsl:call-template></xsl:for-each>
+                    ));
+
+                  </xsl:for-each>  
+                  aResources.push(resource);
+
+                </xsl:when>
                 <xsl:otherwise>
                   <xsl:for-each select="../../options/grids/grid[./resourcename = $resourceName]">
                   <!-- field properties -->
Index: samples/queryonclick/simple/config.xml
===================================================================
--- samples/queryonclick/simple/config.xml	(revision 1365)
+++ samples/queryonclick/simple/config.xml	(working copy)
@@ -1,373 +1,256 @@
-<?xml version="1.0"  encoding="iso-8859-1"?>
-<geoprisma version="0.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="config.xsd">
-
-  <layouts>
-    <layout>
-      <name>default</name>
-      <file>samples.xslt</file>
-      <drawmode>extjs</drawmode>
-    </layout>
-  </layouts>
-
-  <services>
-
-    <wms>
-      <name>S_WMS_DEV4G_GMAP</name>
-      <srs>*</srs>
-      <format>*</format>
-      <source>http://dev4g.mapgears.com/cgi-bin/mswms_gmap?</source>
-    </wms>
-
-    <tilecache>
-      <name>S_TC_DEV4G</name>
-      <srs>*</srs>
-      <format>*</format>
-      <source>http://dev4g.mapgears.com/tilecache/trunk/tilecache.py</source>
-    </tilecache>
-
-  </services>
-
-  <datastores>
-
-    <datastore> 
-      <name>DS_WMS_DEV4G_GMAP_BASE</name>
-      <service>S_WMS_DEV4G_GMAP</service>
-      <params>
-        <layers>base</layers>
-        <text>GMap Base</text>
-      </params>
-    </datastore>
-
-    <datastore>
-      <name>DS_WMS_DEV4G_GMAP_PARK</name>
-      <service>S_WMS_DEV4G_GMAP</service>
-      <layers>park</layers>
-      <options>
-        <text>GMap Parks</text>
-      </options>
-    </datastore>
-
-    <datastore>
-      <name>DS_WMS_DEV4G_GMAP_PROV</name>
-      <service>S_WMS_DEV4G_GMAP</service>
-      <params>
-        <layers>prov_bound_poly</layers>
-        <text>GMap Provinces (Poly)</text>
-      </params>
-    </datastore>
-
-    <datastore>
-      <name>DS_WMS_DEV4G_GMAP_POPP</name>
-      <service>S_WMS_DEV4G_GMAP</service>
-      <params>
-        <layers>popplace</layers>
-        <text>GMap Cities</text>
-      </params>
-    </datastore>
-
-    <datastore>
-      <name>DS_TC_DEV4G_GMAP_BASE</name>
-      <service>S_TC_DEV4G</service>
-      <params>
-        <layers>gmap_base</layers>
-        <text>GMap Base (TC)</text>
-      </params>
-    </datastore>
-
-    <datastore>
-      <name>DS_TC_DEV4G_GMAP_PROV</name>
-      <service>S_TC_DEV4G</service>
-      <params>
-        <layers>gmap_prov</layers>
-        <text>GMap Provinces (TC)</text>
-      </params>
-    </datastore>
-  </datastores>
-
-  <widgets>
-    
-    <map>
-      <name>DefaultMap</name>
-      <options>
-        <maxextent>-2751549.750,-935783.250,3582850.250,4674119.750</maxextent>
-        <projection>EPSG:42304</projection>
-        <units>m</units>
-        <maxresolution>156543.0339</maxresolution>
-        <scales>20000000,10000000,4000000,1000000,500000</scales>
-        <numzoomlevels>5</numzoomlevels>
-        <alloverlays>true</alloverlays>
-      </options>
-      <layers>
-
-        <layer>
-          <resourcenames>
-            <resourcename>R_GMAP_BASE</resourcename>
-          </resourcenames>
-          <servicetype>tilecache</servicetype>
-          <options>
-            <layername>GMap_Base_TC</layername>
-            <isbaselayer>true</isbaselayer>
-            <projection>EPSG:42304</projection>
-            <format>image/jpg</format>
-            <buffer>0</buffer>
-          </options>
-        </layer>
-
-        <layer>
-          <resourcenames>
-            <resourcename>R_GMAP_PROV</resourcename>
-          </resourcenames>
-          <servicetype>tilecache</servicetype>
-          <options>
-            <layername>GMap_Prov_TC</layername>
-            <isbaselayer>false</isbaselayer>
-            <projection>EPSG:42304</projection>
-            <format>image/png</format>
-          </options>
-        </layer>
-
-        <layer>
-          <resourcenames>
-            <resourcename>R_GMAP_PARK</resourcename>
-            <resourcename>R_GMAP_POPP</resourcename>
-          </resourcenames>
-          <servicetype>wms</servicetype>
-          <options>
-            <layername>GMap_Others_WMS</layername>
-            <isbaselayer>false</isbaselayer>
-            <projection>EPSG:42304</projection>
-            <format>image/png</format>
-            <transparent>true</transparent>
-            <singletile>true</singletile>
-          </options>
-        </layer>
-
-      </layers>
-    </map>
-
-    <mapfishlayertree>
-      <name>MFLayerTreeDemo</name>
-      <options>
-        <model>
-          <node>
-            <textkey>TileCache</textkey>
-            <checked>undefined</checked>
-            <children>
-              <node>
-                <layername>GMap_Prov_TC</layername>
-                <resourcename>R_GMAP_PROV</resourcename>
-                <textkey>Province Boundaries</textkey>
-                <checked>true</checked>
-              </node>
-            </children>
-          </node>
-
-          <node>
-            <textkey>WMS</textkey>
-            <checked>true</checked>
-            <children>
-              <node>
-                <layername>GMap_Others_WMS</layername>
-                <resourcename>R_GMAP_PARK</resourcename>
-                <textkey>Parks</textkey>
-                <checked>false</checked>
-              </node>
-              <node>
-                <layername>GMap_Others_WMS</layername>
-                <resourcename>R_GMAP_POPP</resourcename>
-                <textkey>Cities</textkey>
-                <checked>true</checked>
-              </node>
-            </children>
-          </node>
-
-        </model>
-      </options>
-    </mapfishlayertree>
-
-    <geoexttoolbar>
-      <name>GeoExtToolbar</name>
-      <options>
-        <widgets>
-          <widget>QueryOnClick</widget>
-        </widgets>
-      </options>
-    </geoexttoolbar>
-
-    <queryonclick>
-      <name>QueryOnClick</name>
-      <options>
-        <!-- try this option.  Can be "marker", "nothing" or "all".  -->
-        <!--resetOnDeactivation>marker</resetOnDeactivation-->
-        <dropDownList>true</dropDownList>
-        <results>
-          <result>ResultExtGrid</result>
-        </results>
-      </options>
-    </queryonclick>
-
-    <resultextgrid>
-      <name>ResultExtGrid</name>
-      <options>
-        <inwindow>false</inwindow>
-        <grids>
-          <grid>
-            <resourcename>R_GMAP_PARK</resourcename>
-            <delegatecontext>
-              <enabled>false</enabled>
-              <label>Link to v2</label>
-            </delegatecontext>
-            <displayname>GMap Parks</displayname>
-            <fields>
-              <field>
-                <id>NAME_E</id>
-                <label>Name</label>
-                <type>string</type>
-                <width>200</width>
-              </field>
-              <field>
-                <id>AREA</id>
-                <label>Area</label>
-                <type>float</type>
-                <width>150</width>
-              </field>
-              <field>
-                <id>PERIMETER</id>
-                <label>Perimeter</label>
-                <type>float</type>
-                <width>150</width>
-              </field>
-              <field>
-                <id>YEAR_EST</id>
-                <label>Year</label>
-                <type>integer</type>
-                <width>50</width>
-              </field>
-            </fields>
-          </grid>
-          
-          <grid>
-            <resourcename>R_GMAP_POPP</resourcename>
-            <delegatecontext>
-              <enabled>false</enabled>
-              <label>Link to v2</label>
-            </delegatecontext>
-            <displayname>GMap Cities</displayname>
-            <fields>
-              <field>
-                <id>name</id>
-                <label>Name</label>
-                <type>string</type>
-                <width>200</width>
-              </field>
-              <field>
-                <id>reg_code</id>
-                <label>Reg #</label>
-                <type>integer</type>
-                <width>50</width>
-              </field>
-              <field>
-                <id>pop_range</id>
-                <label>Population range (code)</label>
-                <type>string</type>
-                <width>150</width>
-              </field>
-              <field>
-                <id>capital</id>
-                <label>Capital (code)</label>
-                <type>string</type>
-                <width>100</width>
-              </field>
-
-            </fields>
-          </grid>
-
-          <grid>
-            <resourcename>R_GMAP_PROV</resourcename>
-            <delegatecontext>
-              <enabled>false</enabled>
-              <label>Link to v2</label>
-            </delegatecontext>
-            <displayname>GMap Provinces</displayname>
-            <fields>
-              <field>
-                <id>NAME</id>
-                <label>Name</label>
-                <type>string</type>
-                <width>150</width>
-              </field>
-              <field>
-                <id>NAME_E</id>
-                <label>Name (2nd)</label>
-                <type>string</type>
-                <width>150</width>
-              </field>
-              <field>
-                <id>STATUS</id>
-                <label>Status</label>
-                <type>string</type>
-                <width>100</width>
-              </field>
-              <field>
-                <id>ISLAND_E</id>
-                <label>Island Name</label>
-                <type>string</type>
-                <width>150</width>
-              </field>
-            </fields>
-          </grid>
-        </grids>
-      </options>
-    </resultextgrid>
-
-  </widgets>
-
-  <resources>
-
-    <resource>
-      <name>R_GMAP_BASE</name>
-      <datastores>
-        <datastore>DS_WMS_DEV4G_GMAP_BASE</datastore>
-        <datastore>DS_TC_DEV4G_GMAP_BASE</datastore>
-      </datastores>
-      <widgets>
-        <widget>GeoExtToolbar</widget>
-      </widgets>
-    </resource>
-    
-    <resource>
-      <name>R_GMAP_PARK</name>
-      <datastores>
-        <datastore>DS_WMS_DEV4G_GMAP_PARK</datastore>
-      </datastores>
-      <widgets>
-        <widget>QueryOnClick</widget>
-        <widget>ResultExtGrid</widget>
-      </widgets>
-    </resource>
-
-    <resource>
-      <name>R_GMAP_PROV</name>
-      <datastores>
-        <datastore>DS_WMS_DEV4G_GMAP_PROV</datastore>
-        <datastore>DS_TC_DEV4G_GMAP_PROV</datastore>
-      </datastores>
-      <widgets>
-        <widget>QueryOnClick</widget>
-        <widget>ResultExtGrid</widget>
-      </widgets>
-    </resource>
-
-    <resource>
-      <name>R_GMAP_POPP</name>
-      <datastores>
-        <datastore>DS_WMS_DEV4G_GMAP_POPP</datastore>
-      </datastores>
-      <widgets>
-        <widget>QueryOnClick</widget>
-        <widget>ResultExtGrid</widget>
-      </widgets>
-    </resource>
-    
-  </resources>
-</geoprisma>
+<?xml version="1.0"  encoding="iso-8859-1"?>
+<geoprisma version="0.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="config.xsd">
+
+  <layouts>
+    <layout>
+      <name>default</name>
+      <file>samples.xslt</file>
+      <drawmode>extjs</drawmode>
+    </layout>
+  </layouts>
+
+  <services>
+
+    <wms>
+      <name>S_WMS</name>
+      <srs>*</srs>
+      <format>*</format>
+      <source>http://dev8.mapgears.com/cgi-bin/mapserv-6.0.1?map=/opt/gmap-demo/htdocs/applyfilter.map</source>
+      <options>
+        <version>1.1.1</version>
+      </options>
+    </wms>
+
+    <tilecache>
+      <name>S_TileCache</name>
+      <srs>*</srs>
+      <format>*</format>
+      <source>http://dev4g.mapgears.com/cache/</source>
+      <options>
+        <staticCache>true</staticCache>
+      </options>
+    </tilecache>
+
+  </services>
+
+  <datastores>
+
+    <datastore>
+      <name>DS_Base_TileCache</name>
+      <service>S_TileCache</service>
+      <layers>gmap_base</layers>
+    </datastore>
+
+    <datastore>
+      <name>DS_Park_WMS</name>
+      <service>S_WMS</service>
+      <layers>park</layers>
+    </datastore>
+
+    <datastore>
+      <name>DS_Popplace_WMS</name>
+      <service>S_WMS</service>
+      <layers>popplace</layers>
+    </datastore>
+
+  </datastores>
+
+  <widgets>
+ 
+    <mappanel>
+      <name>W_MapPanel</name>
+      <options>
+        <maxExtentString>-2751549.750,-935783.250,3582850.250,4674119.750</maxExtentString>
+        <projectionString>EPSG:42304</projectionString>
+        <units>m</units>
+        <maxResolution>156543.0339</maxResolution>
+        <scalesString>20000000,10000000,4000000,1000000,500000</scalesString>
+        <numZoomLevels>5</numZoomLevels>
+        <allOverlays>false</allOverlays>
+        <centerString>1142372,888446</centerString>
+        <zoom>0</zoom>
+      </options>
+    </mappanel>
+
+    <layer>
+      <name>W_Layer_Base_TileCache</name>
+      <options>
+        <servicetype>tilecache</servicetype>
+        <isBaseLayer>true</isBaseLayer>
+        <projectionString>EPSG:42304</projectionString>
+        <format>image/jpg</format>
+        <buffer>0</buffer>
+      </options>
+    </layer>
+
+    <layer>
+      <name>W_Layer_Park_WMS</name>
+      <options>
+        <servicetype>wms</servicetype>
+        <isBaseLayer>false</isBaseLayer>
+        <projectionString>EPSG:42304</projectionString>
+        <transparent>true</transparent>
+        <group>GMap</group>
+        <singleTile>true</singleTile>
+      </options>
+    </layer>
+
+    <layer>
+      <name>W_Layer_Popplace_WMS</name>
+      <options>
+        <servicetype>wms</servicetype>
+        <isBaseLayer>false</isBaseLayer>
+        <projectionString>EPSG:42304</projectionString>
+        <transparent>true</transparent>
+        <group>GMap</group>
+        <singleTile>true</singleTile>
+      </options>
+    </layer>
+
+    <geoexttoolbar>
+      <name>W_Toolbar</name>
+      <options>
+        <widgets>
+          <widget>W_QueryOnClick</widget>
+        </widgets>
+      </options>
+    </geoexttoolbar>
+
+    <geoextux_layertreebuilder>
+      <name>W_LayerTree</name>
+      <options />
+    </geoextux_layertreebuilder>
+
+    <queryonclick>
+      <name>W_QueryOnClick</name>
+      <options>
+        <results>
+          <result>W_ResultExtGrid</result>
+        </results>
+      </options>
+    </queryonclick>
+
+    <resultextgrid>
+      <name>W_ResultExtGrid</name>
+      <options>
+        <inwindow>false</inwindow>
+        <!--useResponseFields>true</useResponseFields-->
+      </options>
+    </resultextgrid>
+
+  </widgets>
+
+  <resources>
+
+    <resource>
+      <name>R_Base</name>
+      <title>Bathymetry</title>
+      <datastores>
+        <datastore>DS_Base_TileCache</datastore>
+      </datastores>
+    </resource>
+    
+    <resource>
+      <name>R_Park</name>
+      <title>Parks</title>
+      <datastores>
+        <datastore>DS_Park_WMS</datastore>
+      </datastores>
+      <fields>
+        <field>
+          <name>PARK_</name>
+          <title>ID</title>
+          <options>
+            <width>25</width>
+            <type>integer</type>
+          </options>
+        </field>
+        <field>
+          <name>PARK_ID</name>
+          <title>40</title>
+          <options>
+            <width>25</width>
+            <type>integer</type>
+          </options>
+        </field>
+        <field>
+          <name>NAME_E</name>
+          <title>Name (en)</title>
+          <options>
+            <width>200</width>
+          </options>
+        </field>
+        <field>
+          <name>NAME_F</name>
+          <title>Name (fr)</title>
+          <options>
+            <width>200</width>
+          </options>
+        </field>
+      </fields>
+      <options />
+    </resource>
+
+    <resource>
+      <name>R_Popplace</name>
+      <title>Cities</title>
+      <datastores>
+        <datastore>DS_Popplace_WMS</datastore>
+      </datastores>
+      <fields>
+        <field>
+          <name>NAME</name>
+          <title>Name</title>
+          <options>
+            <width>200</width>
+          </options>
+        </field>
+        <field>
+          <name>REG_CODE</name>
+          <title>Regional code</title>
+          <options>
+            <width>80</width>
+          </options>
+        </field>
+      </fields>
+      <options />
+    </resource>
+    
+  </resources>
+
+  <workspaces>
+
+    <workspace>
+      <name>WS_Default</name>
+      <resources>
+
+        <resource>
+          <name>R_Base</name>
+          <widgets>
+            <widget>W_Layer_Base_TileCache</widget>
+          </widgets>
+        </resource>
+        
+        <resource>
+          <name>R_Park</name>
+          <widgets>
+            <widget>W_Layer_Park_WMS</widget>
+            <widget>W_QueryOnClick</widget>
+            <widget>W_ResultExtGrid</widget>
+          </widgets>
+        </resource>
+
+        <resource>
+          <name>R_Popplace</name>
+          <widgets>
+            <widget>W_Layer_Popplace_WMS</widget>
+            <widget>W_QueryOnClick</widget>
+            <widget>W_ResultExtGrid</widget>
+          </widgets>
+        </resource>
+      </resources>
+    </workspace>
+
+  </workspaces>
+
+</geoprisma>
Index: samples/queryonclick/simple/footer.inc.html
===================================================================
--- samples/queryonclick/simple/footer.inc.html	(revision 1365)
+++ samples/queryonclick/simple/footer.inc.html	(working copy)
@@ -1,20 +1,19 @@
 <div>
   <div id="docs">
     <p>
-      Please note that this demo uses the following <b>deprecated</b>
-      widget(s) : map, mapfishlayertree.
-    </p>
-    <p>
       This demo demonstrate the use of the QueryOnClick and ResultExtGrid 
       widgets.  The list of queryable layers can be found in the dropdown list
       next to the "i" button in the toolbar.  Only the currently visible and
       queryable layers are queried.
     </p>
     <p>
-      By default, you need to specify the list of fields you wish to display
-      in the result grid.  Also, you need to specify where to display the grid,
-      whether in a Ext.Window or (in the case of this sample) in an existing
-      Ext.Panel (bottom).
+      In GeoPrisma 1.4.0, you no longer need to define the fields per resource
+      inside the widget itself.  The widget is able to detect resource fields.
+      If present, they are simply used.  If a resource field title is set, it's
+      also used as column header.  Finally, resource field options can also be
+      detected by the widget, such as "width" to determine the column width
+      in the grid.  All of this is demonstrated here, see the
+      <a href="config.xml" target="_BLANK">config.xml</a>.
     </p>
   </div>
 </div>
\ No newline at end of file
Index: samples/queryonclick/simple/common.php
===================================================================
--- samples/queryonclick/simple/common.php	(revision 1365)
+++ samples/queryonclick/simple/common.php	(working copy)
@@ -1,29 +1,34 @@
-<?php
-
-$strCurrentDir = dirname(__FILE__);
-require "$strCurrentDir/../../config.php";
-
-// --------------------------------------
-// Set include path
-// --------------------------------------
-set_include_path(".".PATH_SEPARATOR.$g_strGeoprismaCore.
-					 PATH_SEPARATOR.$g_strBorealisFoundation);
-
-// --------------------------------------
-// Require class
-// --------------------------------------
-require_once 'com/borealis/Autoload.php';   
-
-// --------------------------------------
-// Configure library
-// --------------------------------------
-org_geoprisma_SettingImpl::setXMLConfigFile("$strCurrentDir/config.xml"); 
-org_geoprisma_SettingImpl::setTemplateDir($g_strTemplateDir);
-org_geoprisma_SettingImpl::setWidgetDir($g_strWidgetDir);
-org_geoprisma_SettingImpl::setLocaleDir($g_strLocaleDir);   
-
-org_geoprisma_SettingImpl::setLibUrl($g_strLibUrl);
-org_geoprisma_SettingImpl::setTemplateUrl($g_strTemplateUrl);
-org_geoprisma_SettingImpl::setWidgetUrl($g_strWidgetUrl );
-
-?>
+<?php
+
+$strCurrentDir = dirname(__FILE__);
+require "$strCurrentDir/../../config.php";
+
+// --------------------------------------
+// Set include path
+// --------------------------------------
+set_include_path(".".PATH_SEPARATOR.$g_strGeoprismaCore.
+                 PATH_SEPARATOR.$g_strBorealisFoundation);
+
+// --------------------------------------
+// Require class
+// --------------------------------------
+require_once 'com/borealis/Autoload.php';   
+
+// --------------------------------------
+// Configure library
+// --------------------------------------
+org_geoprisma_SettingImpl::setXMLConfigFile("$strCurrentDir/config.xml");
+org_geoprisma_SettingImpl::setTemplateDir($g_strTemplateDir);
+org_geoprisma_SettingImpl::setWidgetDir($g_strWidgetDir);
+org_geoprisma_SettingImpl::setLocaleDir($g_strLocaleDir);   
+
+org_geoprisma_SettingImpl::setLibUrl($g_strLibUrl);
+org_geoprisma_SettingImpl::setTemplateUrl($g_strTemplateUrl);
+org_geoprisma_SettingImpl::setWidgetUrl($g_strWidgetUrl );
+org_geoprisma_SettingImpl::setProxyURL('./proxy.php');
+
+// XMLWorkspaceConfig
+org_geoprisma_SettingImpl::setConfig('org_geoprisma_config_XMLWorkspaceConfig');
+org_geoprisma_config_XMLWorkspaceConfig::setCurrentWorkspace('WS_Default');
+
+?>
