Index: trunk/grails-app/controllers/InventoryStoreDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryStoreDetailedController.groovy	(revision 956)
+++ trunk/grails-app/controllers/InventoryStoreDetailedController.groovy	(revision 957)
@@ -3,5 +3,7 @@
 @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_InventoryManager'])
 class InventoryStoreDetailedController extends BaseController {
-    
+
+    def filterService
+
     @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_InventoryManager', 'ROLE_InventoryUser'])
     def index = { redirect(action:list,params:params) }
@@ -12,5 +14,22 @@
     def list = {
         params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
-        [ inventoryStoreInstanceList: InventoryStore.list( params ), inventoryStoreInstanceTotal: InventoryStore.count() ]
+        def associatedPropertyMax = 1000
+        def associatedPropertyValues = [:]
+        def siteNameQuery = 'select distinct a.name from Site a where a.isActive = ? order by a.name'
+        associatedPropertyValues.siteList = Site.executeQuery(siteNameQuery, [true], [max:associatedPropertyMax])
+
+        if(!params.filter) {
+            return [inventoryStoreInstanceList: InventoryStore.list(params),
+                    inventoryStoreInstanceTotal: InventoryStore.count(),
+                    associatedPropertyValues: associatedPropertyValues,
+                    filterParams: params]
+        }
+
+        // filterPane:
+        return[ inventoryStoreInstanceList: filterService.filter( params, InventoryStore ),
+                inventoryStoreInstanceTotal: filterService.count( params, InventoryStore ),
+                associatedPropertyValues: associatedPropertyValues,
+                filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params),
+                params:params ]
     }
 
@@ -73,5 +92,5 @@
                 def version = params.version.toLong()
                 if(inventoryStoreInstance.version > version) {
-                    
+
                     inventoryStoreInstance.errors.rejectValue("version", "default.optimistic.locking.failure")
                     render(view:'edit',model:[inventoryStoreInstance:inventoryStoreInstance])
Index: trunk/grails-app/views/inventoryStoreDetailed/list.gsp
===================================================================
--- trunk/grails-app/views/inventoryStoreDetailed/list.gsp	(revision 956)
+++ trunk/grails-app/views/inventoryStoreDetailed/list.gsp	(revision 957)
@@ -1,4 +1,2 @@
-
-
 <html>
     <head>
@@ -6,4 +4,5 @@
         <meta name="layout" content="main" />
         <title>InventoryStore List</title>
+        <filterpane:includes />
         <nav:resources override="true"/>
     </head>
@@ -13,64 +12,89 @@
         </div>
         <div class="body">
-            <g:if test="${flash.message}">
-            <div class="message">${flash.message}</div>
-            </g:if>
-            <div class="list">
-                <table>
-                    <thead>
+            <g:render template="/shared/messages" />
+
+            <filterpane:currentCriteria domainBean="InventoryStore"
+                                        action="list"
+                                        dateFormat="EEE, dd-MMM-yyyy"
+                                        removeImgDir="images"
+                                        removeImgFile="bullet_delete.png"
+                                        title="Search"/>
+
+            <div class="paginateButtons">
+                Results: ${inventoryStoreInstanceList.size()} / ${inventoryStoreInstanceTotal}
+                <span class="searchButtons">
+                    <filterpane:filterButton text="Search" appliedText="Change Search" />
+                </span>
+            </div>
+
+            <br />
+
+            <g:if test="${inventoryStoreInstanceList.size() > 0}">
+                <div class="list">
+                    <table>
+                        <thead>
                         <tr>
-                        
-                            <g:sortableColumn property="id" title="Id" />
 
-                            <g:sortableColumn property="name" title="Name" />
+                            <g:sortableColumn property="id" title="Id" params="${filterParams}" />
 
-                            <g:sortableColumn property="description" title="Description" />
+                            <g:sortableColumn property="name" title="Name" params="${filterParams}" />
 
-                            <g:sortableColumn property="isActive" title="Is Active" />
+                            <g:sortableColumn property="description" title="Description" params="${filterParams}" />
 
-                            <th>Site</th>
+                            <g:sortableColumn property="isActive" title="Is Active" params="${filterParams}" />
+
+                            <g:sortableColumn property="site" title="Site" params="${filterParams}" />
 
                             <th></th>
-                   	    
+
                         </tr>
-                    </thead>
-                    <tbody>
-                    <g:each in="${inventoryStoreInstanceList}" status="i" var="inventoryStoreInstance">
-                        <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}">
-                        
-                            <td onclick='window.location = "${request.getContextPath()}/inventoryStoreDetailed/show/${inventoryStoreInstance.id}"'>
-                                ${fieldValue(bean:inventoryStoreInstance, field:'id')}
-                            </td>
-                        
-                            <td onclick='window.location = "${request.getContextPath()}/inventoryStoreDetailed/show/${inventoryStoreInstance.id}"'>
-                                ${fieldValue(bean:inventoryStoreInstance, field:'name')}
-                            </td>
-                        
-                            <td onclick='window.location = "${request.getContextPath()}/inventoryStoreDetailed/show/${inventoryStoreInstance.id}"'>
-                                ${fieldValue(bean:inventoryStoreInstance, field:'description')}
-                            </td>
-                        
-                            <td onclick='window.location = "${request.getContextPath()}/inventoryStoreDetailed/show/${inventoryStoreInstance.id}"'>
-                                ${fieldValue(bean:inventoryStoreInstance, field:'isActive')}
-                            </td>
-                        
-                            <td onclick='window.location = "${request.getContextPath()}/inventoryStoreDetailed/show/${inventoryStoreInstance.id}"'>
-                                ${fieldValue(bean:inventoryStoreInstance, field:'site')}
-                            </td>
+                        </thead>
+                        <tbody>
+                        <g:each in="${inventoryStoreInstanceList}" status="i" var="inventoryStoreInstance">
+                            <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}">
 
-                            <td class="notClickable">
-                                <g:link action="show" id="${inventoryStoreInstance.id}">
-                                    <img  src="${resource(dir:'images/skin',file:'database_go.png')}" alt="Show" />
-                                </g:link>
-                            </td>
-                        
-                        </tr>
-                    </g:each>
-                    </tbody>
-                </table>
+                                <td onclick='window.location = "${request.getContextPath()}/inventoryStoreDetailed/show/${inventoryStoreInstance.id}"'>
+                                    ${fieldValue(bean:inventoryStoreInstance, field:'id')}
+                                </td>
+
+                                <td onclick='window.location = "${request.getContextPath()}/inventoryStoreDetailed/show/${inventoryStoreInstance.id}"'>
+                                    ${fieldValue(bean:inventoryStoreInstance, field:'name')}
+                                </td>
+
+                                <td onclick='window.location = "${request.getContextPath()}/inventoryStoreDetailed/show/${inventoryStoreInstance.id}"'>
+                                    ${fieldValue(bean:inventoryStoreInstance, field:'description')}
+                                </td>
+
+                                <td onclick='window.location = "${request.getContextPath()}/inventoryStoreDetailed/show/${inventoryStoreInstance.id}"'>
+                                    ${fieldValue(bean:inventoryStoreInstance, field:'isActive')}
+                                </td>
+
+                                <td onclick='window.location = "${request.getContextPath()}/inventoryStoreDetailed/show/${inventoryStoreInstance.id}"'>
+                                    ${fieldValue(bean:inventoryStoreInstance, field:'site')}
+                                </td>
+
+                                <td class="notClickable">
+                                    <g:link action="show" id="${inventoryStoreInstance.id}">
+                                        <img  src="${resource(dir:'images/skin',file:'database_go.png')}" alt="Show" />
+                                    </g:link>
+                                </td>
+
+                            </tr>
+                        </g:each>
+                        </tbody>
+                    </table>
+                </div>
+            </g:if>
+
+            <div class="paginateButtons">
+                <g:paginate total="${inventoryStoreInstanceTotal}" params="${filterParams}" />
             </div>
-            <div class="paginateButtons">
-                <g:paginate total="${inventoryStoreInstanceTotal}" />
-            </div>
+
+            <filterpane:filterPane domainBean="InventoryStore"
+                                   title="Search"
+                                   action="list"
+                                   class="overlayPane"
+                                   associatedProperties="site.name"
+                                   filterPropertyValues="${['site.name':[values: associatedPropertyValues.siteList]]}" />
         </div>
     </body>
