| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @fileoverview This implements a table header. | 6 * @fileoverview This implements a table header. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 cr.define('cr.ui.table', function() { | 9 cr.define('cr.ui.table', function() { |
| 10 /** @const */ var TableSplitter = cr.ui.TableSplitter; | 10 /** @const */ var TableSplitter = cr.ui.TableSplitter; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 | 57 |
| 58 var cm = this.table_.columnModel; | 58 var cm = this.table_.columnModel; |
| 59 for (var i = 0; i < cm.size; i++) { | 59 for (var i = 0; i < cm.size; i++) { |
| 60 headerCells[i].style.width = cm.getWidth(i) + 'px'; | 60 headerCells[i].style.width = cm.getWidth(i) + 'px'; |
| 61 } | 61 } |
| 62 this.placeSplitters_(this.querySelectorAll('.table-header-splitter')); | 62 this.placeSplitters_(this.querySelectorAll('.table-header-splitter')); |
| 63 }, | 63 }, |
| 64 | 64 |
| 65 batchCount_: 0, | 65 batchCount_: 0, |
| 66 | 66 |
| 67 startBatchUpdates: function() { this.batchCount_++; }, | 67 startBatchUpdates: function() { |
| 68 this.batchCount_++; |
| 69 }, |
| 68 | 70 |
| 69 endBatchUpdates: function() { | 71 endBatchUpdates: function() { |
| 70 this.batchCount_--; | 72 this.batchCount_--; |
| 71 if (this.batchCount_ == 0) | 73 if (this.batchCount_ == 0) |
| 72 this.redraw(); | 74 this.redraw(); |
| 73 }, | 75 }, |
| 74 | 76 |
| 75 /** | 77 /** |
| 76 * Redraws table header. | 78 * Redraws table header. |
| 77 */ | 79 */ |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 } | 175 } |
| 174 labelDiv.appendChild(span); | 176 labelDiv.appendChild(span); |
| 175 return labelDiv; | 177 return labelDiv; |
| 176 }, | 178 }, |
| 177 | 179 |
| 178 /** | 180 /** |
| 179 * Creates sort function for given column. | 181 * Creates sort function for given column. |
| 180 * @param {number} index The index of the column to sort by. | 182 * @param {number} index The index of the column to sort by. |
| 181 */ | 183 */ |
| 182 createSortFunction_: function(index) { | 184 createSortFunction_: function(index) { |
| 183 return function() { this.table_.sort(index); }.bind(this); | 185 return function() { |
| 186 this.table_.sort(index); |
| 187 }.bind(this); |
| 184 }, | 188 }, |
| 185 | 189 |
| 186 /** | 190 /** |
| 187 * Handles the touchstart event. If the touch happened close enough | 191 * Handles the touchstart event. If the touch happened close enough |
| 188 * to a splitter starts dragging. | 192 * to a splitter starts dragging. |
| 189 * @param {Event} e The touch event. | 193 * @param {Event} e The touch event. |
| 190 */ | 194 */ |
| 191 handleTouchStart_: function(e) { | 195 handleTouchStart_: function(e) { |
| 192 e = /** @type {TouchEvent} */ (e); | 196 e = /** @type {TouchEvent} */ (e); |
| 193 if (e.touches.length != 1) | 197 if (e.touches.length != 1) |
| (...skipping 20 matching lines...) Expand all Loading... |
| 214 // Splitter itself shouldn't handle this event. | 218 // Splitter itself shouldn't handle this event. |
| 215 e.stopPropagation(); | 219 e.stopPropagation(); |
| 216 }, | 220 }, |
| 217 | 221 |
| 218 /** | 222 /** |
| 219 * Handles the double click on a column separator event. | 223 * Handles the double click on a column separator event. |
| 220 * Adjusts column width. | 224 * Adjusts column width. |
| 221 * @param {number} index Column index. | 225 * @param {number} index Column index. |
| 222 * @param {Event} e The double click event. | 226 * @param {Event} e The double click event. |
| 223 */ | 227 */ |
| 224 handleDblClick_: function(index, e) { this.table_.fitColumn(index); }, | 228 handleDblClick_: function(index, e) { |
| 229 this.table_.fitColumn(index); |
| 230 }, |
| 225 | 231 |
| 226 /** | 232 /** |
| 227 * Determines whether a full redraw is required. | 233 * Determines whether a full redraw is required. |
| 228 * @param {!NodeList} headerCells | 234 * @param {!NodeList} headerCells |
| 229 * @return {boolean} | 235 * @return {boolean} |
| 230 */ | 236 */ |
| 231 needsFullRedraw_: function(headerCells) { | 237 needsFullRedraw_: function(headerCells) { |
| 232 var cm = this.table_.columnModel; | 238 var cm = this.table_.columnModel; |
| 233 // If the number of columns in the model has changed, a full redraw is | 239 // If the number of columns in the model has changed, a full redraw is |
| 234 // needed. | 240 // needed. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 250 cr.defineProperty(TableHeader, 'table'); | 256 cr.defineProperty(TableHeader, 'table'); |
| 251 | 257 |
| 252 /** | 258 /** |
| 253 * Rectangular area around the splitters sensitive to touch events | 259 * Rectangular area around the splitters sensitive to touch events |
| 254 * (in pixels). | 260 * (in pixels). |
| 255 */ | 261 */ |
| 256 TableHeader.TOUCH_DRAG_AREA_WIDTH = 30; | 262 TableHeader.TOUCH_DRAG_AREA_WIDTH = 30; |
| 257 | 263 |
| 258 return {TableHeader: TableHeader}; | 264 return {TableHeader: TableHeader}; |
| 259 }); | 265 }); |
| OLD | NEW |