| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-selection-CheckboxModel'>/**
 
- </span> * A selection model that renders a column of checkboxes that can be toggled to
 
-  * select or deselect rows. The default mode for this selection model is MULTI.
 
-  *
 
-  * The selection model will inject a header for the checkboxes in the first view
 
-  * and according to the 'injectCheckbox' configuration.
 
-  */
 
- Ext.define('Ext.selection.CheckboxModel', {
 
-     alias: 'selection.checkboxmodel',
 
-     extend: 'Ext.selection.RowModel',
 
- <span id='Ext-selection-CheckboxModel-cfg-mode'>    /**
 
- </span>     * @cfg {String} mode
 
-      * Modes of selection.
 
-      * Valid values are SINGLE, SIMPLE, and MULTI.
 
-      */
 
-     mode: 'MULTI',
 
- <span id='Ext-selection-CheckboxModel-cfg-injectCheckbox'>    /**
 
- </span>     * @cfg {Number/String} [injectCheckbox=0]
 
-      * The index at which to insert the checkbox column.
 
-      * Supported values are a numeric index, and the strings 'first' and 'last'.
 
-      */
 
-     injectCheckbox: 0,
 
- <span id='Ext-selection-CheckboxModel-cfg-checkOnly'>    /**
 
- </span>     * @cfg {Boolean} checkOnly
 
-      * True if rows can only be selected by clicking on the checkbox column.
 
-      */
 
-     checkOnly: false,
 
-     
 
- <span id='Ext-selection-CheckboxModel-cfg-showHeaderCheckbox'>    /**
 
- </span>     * @cfg {Boolean} showHeaderCheckbox
 
-      * Configure as `false` to not display the header checkbox at the top of the column.
 
-      */
 
-     showHeaderCheckbox: true,
 
-     headerWidth: 24,
 
-     // private
 
-     checkerOnCls: Ext.baseCSSPrefix + 'grid-hd-checker-on',
 
-     // private
 
-     refreshOnRemove: true,
 
-     beforeViewRender: function(view) {
 
-         var me = this;
 
-         me.callParent(arguments);
 
-         // if we have a locked header, only hook up to the first
 
-         if (!me.hasLockedHeader() || view.headerCt.lockedCt) {
 
-             if (me.showHeaderCheckbox !== false) {
 
-                 view.headerCt.on('headerclick', me.onHeaderClick, me);
 
-             }
 
-             me.addCheckbox(view, true);
 
-             me.mon(view.ownerCt, 'reconfigure', me.onReconfigure, me);
 
-         }
 
-     },
 
-     bindComponent: function(view) {
 
-         var me = this;
 
-         me.sortable = false;
 
-         me.callParent(arguments);
 
-     },
 
-     hasLockedHeader: function(){
 
-         var views     = this.views,
 
-             vLen      = views.length,
 
-             v;
 
-         for (v = 0; v < vLen; v++) {
 
-             if (views[v].headerCt.lockedCt) {
 
-                 return true;
 
-             }
 
-         }
 
-         return false;
 
-     },
 
- <span id='Ext-selection-CheckboxModel-method-addCheckbox'>    /**
 
- </span>     * Add the header checkbox to the header row
 
-      * @private
 
-      * @param {Boolean} initial True if we're binding for the first time.
 
-      */
 
-     addCheckbox: function(view, initial){
 
-         var me = this,
 
-             checkbox = me.injectCheckbox,
 
-             headerCt = view.headerCt;
 
-         // Preserve behaviour of false, but not clear why that would ever be done.
 
-         if (checkbox !== false) {
 
-             if (checkbox == 'first') {
 
-                 checkbox = 0;
 
-             } else if (checkbox == 'last') {
 
-                 checkbox = headerCt.getColumnCount();
 
-             }
 
-             Ext.suspendLayouts();
 
-             headerCt.add(checkbox,  me.getHeaderConfig());
 
-             Ext.resumeLayouts();
 
-         }
 
-         if (initial !== true) {
 
-             view.refresh();
 
-         }
 
-     },
 
- <span id='Ext-selection-CheckboxModel-method-onReconfigure'>    /**
 
- </span>     * Handles the grid's reconfigure event.  Adds the checkbox header if the columns have been reconfigured.
 
-      * @private
 
-      * @param {Ext.panel.Table} grid
 
-      * @param {Ext.data.Store} store
 
-      * @param {Object[]} columns
 
-      */
 
-     onReconfigure: function(grid, store, columns) {
 
-         if(columns) {
 
-             this.addCheckbox(this.views[0]);
 
-         }
 
-     },
 
- <span id='Ext-selection-CheckboxModel-method-toggleUiHeader'>    /**
 
- </span>     * Toggle the ui header between checked and unchecked state.
 
-      * @param {Boolean} isChecked
 
-      * @private
 
-      */
 
-     toggleUiHeader: function(isChecked) {
 
-         var view     = this.views[0],
 
-             headerCt = view.headerCt,
 
-             checkHd  = headerCt.child('gridcolumn[isCheckerHd]');
 
-         if (checkHd) {
 
-             if (isChecked) {
 
-                 checkHd.el.addCls(this.checkerOnCls);
 
-             } else {
 
-                 checkHd.el.removeCls(this.checkerOnCls);
 
-             }
 
-         }
 
-     },
 
- <span id='Ext-selection-CheckboxModel-method-onHeaderClick'>    /**
 
- </span>     * Toggle between selecting all and deselecting all when clicking on
 
-      * a checkbox header.
 
-      */
 
-     onHeaderClick: function(headerCt, header, e) {
 
-         if (header.isCheckerHd) {
 
-             e.stopEvent();
 
-             var me = this,
 
-                 isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');
 
-                 
 
-             // Prevent focus changes on the view, since we're selecting/deselecting all records
 
-             me.preventFocus = true;
 
-             if (isChecked) {
 
-                 me.deselectAll();
 
-             } else {
 
-                 me.selectAll();
 
-             }
 
-             delete me.preventFocus;
 
-         }
 
-     },
 
- <span id='Ext-selection-CheckboxModel-method-getHeaderConfig'>    /**
 
- </span>     * Retrieve a configuration to be used in a HeaderContainer.
 
-      * This should be used when injectCheckbox is set to false.
 
-      */
 
-     getHeaderConfig: function() {
 
-         var me = this,
 
-             showCheck = me.showHeaderCheckbox !== false;
 
-         return {
 
-             isCheckerHd: showCheck,
 
-             text : '&#160;',
 
-             width: me.headerWidth,
 
-             sortable: false,
 
-             draggable: false,
 
-             resizable: false,
 
-             hideable: false,
 
-             menuDisabled: true,
 
-             dataIndex: '',
 
-             cls: showCheck ? Ext.baseCSSPrefix + 'column-header-checkbox ' : '',
 
-             renderer: Ext.Function.bind(me.renderer, me),
 
-             editRenderer: me.editRenderer || me.renderEmpty,
 
-             locked: me.hasLockedHeader()
 
-         };
 
-     },
 
-     
 
-     renderEmpty: function(){
 
-         return '&#160;';    
 
-     },
 
- <span id='Ext-selection-CheckboxModel-method-renderer'>    /**
 
- </span>     * Generates the HTML to be rendered in the injected checkbox column for each row.
 
-      * Creates the standard checkbox markup by default; can be overridden to provide custom rendering.
 
-      * See {@link Ext.grid.column.Column#renderer} for description of allowed parameters.
 
-      */
 
-     renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
 
-         var baseCSSPrefix = Ext.baseCSSPrefix;
 
-         metaData.tdCls = baseCSSPrefix + 'grid-cell-special ' + baseCSSPrefix + 'grid-cell-row-checker';
 
-         return '<div class="' + baseCSSPrefix + 'grid-row-checker">&#160;</div>';
 
-     },
 
-     // override
 
-     onRowMouseDown: function(view, record, item, index, e) {
 
-         view.el.focus();
 
-         var me = this,
 
-             checker = e.getTarget('.' + Ext.baseCSSPrefix + 'grid-row-checker'),
 
-             mode;
 
-             
 
-         if (!me.allowRightMouseSelection(e)) {
 
-             return;
 
-         }
 
-         // checkOnly set, but we didn't click on a checker.
 
-         if (me.checkOnly && !checker) {
 
-             return;
 
-         }
 
-         if (checker) {
 
-             mode = me.getSelectionMode();
 
-             // dont change the mode if its single otherwise
 
-             // we would get multiple selection
 
-             if (mode !== 'SINGLE') {
 
-                 me.setSelectionMode('SIMPLE');
 
-             }
 
-             me.selectWithEvent(record, e);
 
-             me.setSelectionMode(mode);
 
-         } else {
 
-             me.selectWithEvent(record, e);
 
-         }
 
-     },
 
- <span id='Ext-selection-CheckboxModel-method-onSelectChange'>    /**
 
- </span>     * Synchronize header checker value as selection changes.
 
-      * @private
 
-      */
 
-     onSelectChange: function() {
 
-         var me = this;
 
-         me.callParent(arguments);
 
-         me.updateHeaderState();
 
-     },
 
- <span id='Ext-selection-CheckboxModel-method-onStoreLoad'>    /**
 
- </span>     * @private
 
-      */
 
-     onStoreLoad: function() {
 
-         var me = this;
 
-         me.callParent(arguments);
 
-         me.updateHeaderState();
 
-     },
 
- <span id='Ext-selection-CheckboxModel-method-updateHeaderState'>    /**
 
- </span>     * @private
 
-      */
 
-     updateHeaderState: function() {
 
-         // check to see if all records are selected
 
-         var hdSelectStatus = this.selected.getCount() === this.store.getCount();
 
-         this.toggleUiHeader(hdSelectStatus);
 
-     }
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |