hits per page option and context menu
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 11 Jul 2005 08:10:29 +0000 (08:10 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 11 Jul 2005 08:10:29 +0000 (08:10 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@1111 dcc99617-32d9-48b4-a31d-7c20da2025e4

Evergreen/staff_client/chrome/content/evergreen/main/paged_tree.js
Evergreen/staff_client/chrome/content/evergreen/main/paged_tree.xul
Evergreen/staff_client/chrome/content/evergreen/main/paged_tree_overlay.xul

index 27eb347..e34c9ae 100644 (file)
@@ -9,16 +9,52 @@ function paged_tree_init(p) {
 
        p.w.results_label = get_widget( p.w.document, p.nav_results );
        p.w.range_label = get_widget( p.w.document, p.nav_range );
+       p.w.hits_per_page_menu = get_widget( p.w.document, p.nav_hits_per_page );
        p.w.next_button = get_widget( p.w.document, p.nav_next );
        p.w.prev_button = get_widget( p.w.document, p.nav_prev );
 
+       /*
+       // Doesn't work for some reason
+       var cmd_set_hits_per_page = get_widget( p.w.document, 'cmd_set_hits_per_page' );
+       cmd_set_hits_per_page.addEventListener(
+               'command',
+               function (ev) {
+                       sdump('D_TRACE','In set_hits handler\n');
+                       alert('testing123');
+                       try {
+                               p.w.display_count = parseInt( p.w.hits_per_page_menu.getAttribute('value') );
+                               paged_tree_update_visibility( p );
+                               paged_tree_update_nav( p );
+                               paged_tree_flesh_records( p );
+                       } catch(E) {
+                               sdump('D_ERROR',js2JSON(E)+'\n');
+                       }
+                       sdump('D_TRACE','Leaving set_hits handler\n');
+               },
+               false
+       );
+       */
+
+       p.w.set_hits_per_page = function () {
+               try {
+                       p.w.display_count = parseInt( p.w.hits_per_page_menu.getAttribute('value') );
+                       paged_tree_update_visibility( p );
+                       paged_tree_update_nav( p );
+                       paged_tree_flesh_records( p );
+               } catch(E) {
+                       sdump('D_ERROR',js2JSON(E)+'\n');
+               }
+       }
+
        var cmd_next = get_widget( p.w.document, 'cmd_next' );
        cmd_next.addEventListener(
                'command',
                function (ev) {
-                       sdump('D_TRACE_ENTER',arg_dump(arguments));
-                       sdump('D_TRACE_EXIT',arg_dump(arguments));
-                       return paged_tree_nav_next(p);
+                       var backup_select_callback = p.w._select_callback;
+                       p.w._select_callback = function (ev) {};
+                       var result = paged_tree_nav_next(p);
+                       p.w._select_callback = backup_select_callback;
+                       return result;
                },
                false
        );
@@ -27,43 +63,48 @@ function paged_tree_init(p) {
        cmd_prev.addEventListener(
                'command',
                function (ev) {
-                       sdump('D_TRACE_ENTER',arg_dump(arguments));
-                       sdump('D_TRACE_EXIT',arg_dump(arguments));
-                       return paged_tree_nav_prev(p);
+                       var backup_select_callback = p.w._select_callback;
+                       p.w._select_callback = function (ev) {};
+                       var result = paged_tree_nav_prev(p);
+                       p.w._select_callback = backup_select_callback;
+                       return result;
                },
                false
        );
 
        p.w.tree = get_widget(p.w.document,p.paged_tree);
+       p.w.popup = get_widget(p.w.document,p.popup);
        p.w.treecols = p.w.tree.firstChild;
        p.w.tc = p.w.tree.lastChild;
 
+       p.w._context_function = function (ev) {};
+       p.w.popup.addEventListener('popupshowing',function (ev) { return p.w._context_function(ev); },false);
+
+       p.w._select_callback = function (ev) {};
+       p.w.tree.addEventListener('select',function (ev) { return p.w._select_callback(ev); },false);
+
        paged_tree_make_columns( p, p.w.treecols, p.cols )
 
        p.w.clear_tree = function () {
                empty_widget( p.w.document, p.w.tc );
                p.w.current_idx = 0;
-               paged_tree_update_nav(p);
+               return paged_tree_update_nav(p);
        }
 
        p.w.add_rows = function (ids) { 
-               sdump('D_TRACE_ENTER',arg_dump(arguments));
-               sdump('D_TRACE_EXIT',arg_dump(arguments));
                return paged_tree_add_rows(p,p.w.tc,ids); 
        }
 
        p.w.register_flesh_row_function = function (f) { 
-               sdump('D_PAGED_TREE',arg_dump(arguments));
-               sdump('D_TRACE_ENTER',arg_dump(arguments));
-               p.w._flesh_row_function = f; 
-               sdump('D_TRACE_EXIT',arg_dump(arguments));
+               return p.w._flesh_row_function = f; 
        }
 
        p.w.register_select_callback = function (f) { 
-               sdump('D_PAGED_TREE',arg_dump(arguments));
-               sdump('D_TRACE_ENTER',arg_dump(arguments));
-               p.w._select_callback = f; 
-               sdump('D_TRACE_EXIT',arg_dump(arguments));
+               return p.w._select_callback = f; 
+       }
+
+       p.w.register_context_builder = function (f) {
+               return p.w._context_function = f;
        }
 
        p.w.map_cols_to_treeitem = map_array_to_treecells_via_treeitem;
@@ -165,8 +206,12 @@ function paged_tree_update_nav(p) {
        var max = p.w.current_idx + p.w.display_count;
        if (max > p.w.tc.childNodes.length)
                max = p.w.tc.childNodes.length;
-       if (p.w.range_label)
-               p.w.range_label.setAttribute('value', min + ' - ' + max );
+       if (p.w.range_label) {
+               if (max > 0)
+                       p.w.range_label.setAttribute('value', min + ' - ' + max );
+               else
+                       p.w.range_label.setAttribute('value', '0 - 0' );
+       }
 
        if (p.w.next_button) {
                if (max < p.w.tc.childNodes.length)
index cc40574..bea9904 100644 (file)
@@ -9,8 +9,10 @@
        sizemode="maximized" persist="width height" 
        onload="
                params.paged_tree = 'PagedTree_tree'; 
+               params.popup = 'PagedTree_popup';
                params.nav_range = 'PagedTree_label_range'; 
                params.nav_results = 'PagedTree_label_results'; 
+               params.nav_hits_per_page = 'PagedTree_menulist_hits_per_page';
                params.nav_next = 'PagedTree_button_next';
                params.nav_prev = 'PagedTree_button_prev';
                params.w = window; 
@@ -35,6 +37,9 @@
        <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
        <keyset id="PagedTree_keys" />
 
+       <!-- Context menus -->
+       <popupset id="PagedTree_popupset" />
+
        <!-- Layout to be filled in by overlays and javascript -->
        <box id="PagedTree_main" />
 
index 12b21fd..e93be03 100644 (file)
 
        <command id="cmd_next" />
 
+       <!-- For some reason I can't add an event listener to this and have it fire
+               from the menulist below, so using oncommand instead -->
+       <command id="cmd_set_hits_per_page" />
+
        <command id="cmd_broken" oncommand="
                alert('Not Yet Implemented'); "/>
 
 
 <!-- main widget for paged_tree -->
 <box id="PagedTree_main" flex="1" orient="vertical">
-       <hbox id="PagedTree_nav">
-               <label value="&displaying.results;"/>
-               <label id="PagedTree_label_range" value="??? - ???" />
-               <label value="&displaying.of;"/>
-               <label id="PagedTree_label_results" value="???"/>
-               <spacer flex="1"/>
-               <button id="PagedTree_button_prev" label="&previous.range;" accesskey="&previous.range.key;" command="cmd_prev" disabled="true"/>
-               <button id="PagedTree_button_next" label="&next.range;" accesskey="&next.range.key;" command="cmd_next" disabled="true"/>
-       </hbox>
+       <hbox id="PagedTree_nav" />
        <tree id="PagedTree_tree" flex="1">
                <treecols id="PagedTree_columns"/>
-               <treechildren id="PagedTree_children"/>
+               <treechildren id="PagedTree_children" context="PagedTree_popup"/>
        </tree>
 </box>
 
+<hbox id="PagedTree_nav">
+       <label value="&displaying.results;"/>
+       <label id="PagedTree_label_range" value="??? - ???" />
+       <label value="&displaying.of;"/>
+       <label id="PagedTree_label_results" value="???"/>
+       <spacer flex="1"/>
+       <label id="ptnl1" value="&displaying.hits_per_page;"/>
+       <menulist id="PagedTree_menulist_hits_per_page" oncommand="window.set_hits_per_page()">
+               <menupopup id="ptnmp">
+                       <menuitem id="ptnm0" label="10" value="10"  />
+                       <menuitem id="ptnm1" label="20" value="20" selected="true" />
+                       <menuitem id="ptnm2" label="30" value="30" />
+                       <menuitem id="ptnm3" label="40" value="40" />
+                       <menuitem id="ptnm4" label="50" value="50" />
+                       <menuitem id="ptnm5" label="60" value="60" />
+                       <menuitem id="ptnm6" label="70" value="70" />
+                       <menuitem id="ptnm7" label="80" value="80" />
+                       <menuitem id="ptnm8" label="90" value="90" />
+                       <menuitem id="ptnm9" label="100" value="100" />
+               </menupopup>
+       </menulist>
+       <button id="PagedTree_button_prev" label="&previous.range;" accesskey="&previous.range.key;" command="cmd_prev" disabled="true"/>
+       <button id="PagedTree_button_next" label="&next.range;" accesskey="&next.range.key;" command="cmd_next" disabled="true"/>
+</hbox>
+
+<!-- Context menus -->
+<popupset id="PagedTree_popupset">
+       <popup id="PagedTree_popup" />
+</popupset>
+
 <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
 <keyset id="PagedTree_keys">
 </keyset>