Chromium Code Reviews| 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 cr.define('cr.ui', function() { | 5 cr.define('cr.ui', function() { |
| 6 /** @const */ var EventTarget = cr.EventTarget; | 6 /** @const */ var EventTarget = cr.EventTarget; |
| 7 | 7 |
| 8 /** | 8 /** |
| 9 * Creates a new selection model that is to be used with lists. | 9 * Creates a new selection model that is to be used with lists. |
| 10 * | 10 * |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 23 this.independentLeadItem_ = !cr.isMac && !cr.isChromeOS; | 23 this.independentLeadItem_ = !cr.isMac && !cr.isChromeOS; |
| 24 } | 24 } |
| 25 | 25 |
| 26 ListSelectionModel.prototype = { | 26 ListSelectionModel.prototype = { |
| 27 __proto__: EventTarget.prototype, | 27 __proto__: EventTarget.prototype, |
| 28 | 28 |
| 29 /** | 29 /** |
| 30 * The number of items in the model. | 30 * The number of items in the model. |
| 31 * @type {number} | 31 * @type {number} |
| 32 */ | 32 */ |
| 33 get length() { return this.length_; }, | 33 get length() { |
| 34 return this.length_; | |
| 35 }, | |
| 34 | 36 |
| 35 /** | 37 /** |
| 36 * The selected indexes. | 38 * The selected indexes. |
| 37 * Setter also changes lead and anchor indexes if value list is nonempty. | 39 * Setter also changes lead and anchor indexes if value list is nonempty. |
| 38 * @type {!Array} | 40 * @type {!Array} |
| 39 */ | 41 */ |
| 40 get selectedIndexes() { | 42 get selectedIndexes() { |
| 41 return Object.keys(this.selectedIndexes_).map(Number); | 43 return Object.keys(this.selectedIndexes_).map(Number); |
| 42 }, | 44 }, |
| 43 set selectedIndexes(selectedIndexes) { | 45 set selectedIndexes(selectedIndexes) { |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 255 }, | 257 }, |
| 256 | 258 |
| 257 leadIndex_: -1, | 259 leadIndex_: -1, |
| 258 oldLeadIndex_: null, | 260 oldLeadIndex_: null, |
| 259 | 261 |
| 260 /** | 262 /** |
| 261 * The leadIndex is used with multiple selection and it is the index that | 263 * The leadIndex is used with multiple selection and it is the index that |
| 262 * the user is moving using the arrow keys. | 264 * the user is moving using the arrow keys. |
| 263 * @type {number} | 265 * @type {number} |
| 264 */ | 266 */ |
| 265 get leadIndex() { return this.leadIndex_; }, | 267 get leadIndex() { |
| 268 return this.leadIndex_; | |
| 269 }, | |
| 266 set leadIndex(leadIndex) { | 270 set leadIndex(leadIndex) { |
| 267 var oldValue = this.leadIndex_; | 271 var oldValue = this.leadIndex_; |
| 268 var newValue = this.adjustIndex_(leadIndex); | 272 var newValue = this.adjustIndex_(leadIndex); |
| 269 this.leadIndex_ = newValue; | 273 this.leadIndex_ = newValue; |
| 270 // Delays the call of dispatchPropertyChange if batch is running. | 274 // Delays the call of dispatchPropertyChange if batch is running. |
| 271 if (!this.changeCount_ && newValue != oldValue) | 275 if (!this.changeCount_ && newValue != oldValue) |
| 272 cr.dispatchPropertyChange(this, 'leadIndex', newValue, oldValue); | 276 cr.dispatchPropertyChange(this, 'leadIndex', newValue, oldValue); |
| 273 }, | 277 }, |
| 274 | 278 |
| 275 anchorIndex_: -1, | 279 anchorIndex_: -1, |
| 276 oldAnchorIndex_: null, | 280 oldAnchorIndex_: null, |
| 277 | 281 |
| 278 /** | 282 /** |
| 279 * The anchorIndex is used with multiple selection. | 283 * The anchorIndex is used with multiple selection. |
| 280 * @type {number} | 284 * @type {number} |
| 281 */ | 285 */ |
| 282 get anchorIndex() { return this.anchorIndex_; }, | 286 get anchorIndex() { |
| 287 return this.anchorIndex_; | |
| 288 }, | |
| 283 set anchorIndex(anchorIndex) { | 289 set anchorIndex(anchorIndex) { |
| 284 var oldValue = this.anchorIndex_; | 290 var oldValue = this.anchorIndex_; |
| 285 var newValue = this.adjustIndex_(anchorIndex); | 291 var newValue = this.adjustIndex_(anchorIndex); |
| 286 this.anchorIndex_ = newValue; | 292 this.anchorIndex_ = newValue; |
| 287 // Delays the call of dispatchPropertyChange if batch is running. | 293 // Delays the call of dispatchPropertyChange if batch is running. |
| 288 if (!this.changeCount_ && newValue != oldValue) | 294 if (!this.changeCount_ && newValue != oldValue) |
| 289 cr.dispatchPropertyChange(this, 'anchorIndex', newValue, oldValue); | 295 cr.dispatchPropertyChange(this, 'anchorIndex', newValue, oldValue); |
| 290 }, | 296 }, |
| 291 | 297 |
| 292 /** | 298 /** |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 304 var index2 = this.getNearestSelectedIndex_(index); | 310 var index2 = this.getNearestSelectedIndex_(index); |
| 305 index = index2; | 311 index = index2; |
| 306 } | 312 } |
| 307 return index; | 313 return index; |
| 308 }, | 314 }, |
| 309 | 315 |
| 310 /** | 316 /** |
| 311 * Whether the selection model supports multiple selected items. | 317 * Whether the selection model supports multiple selected items. |
| 312 * @type {boolean} | 318 * @type {boolean} |
| 313 */ | 319 */ |
| 314 get multiple() { return true; }, | 320 get multiple() { |
| 321 return true; | |
| 322 }, | |
| 315 | 323 |
| 316 /** | 324 /** |
| 317 * Adjusts the selection after reordering of items in the table. | 325 * Adjusts the selection after reordering of items in the table. |
| 318 * @param {!Array<number>} permutation The reordering permutation. | 326 * @param {!Array<number>} permutation The reordering permutation. |
| 319 */ | 327 */ |
| 320 adjustToReordering: function(permutation) { | 328 adjustToReordering: function(permutation) { |
| 321 this.beginChange(); | 329 this.beginChange(); |
| 322 var oldLeadIndex = this.leadIndex; | 330 var oldLeadIndex = this.leadIndex; |
| 323 var oldAnchorIndex = this.anchorIndex; | 331 var oldAnchorIndex = this.anchorIndex; |
| 324 var oldSelectedItemsCount = this.selectedIndexes.length; | 332 var oldSelectedItemsCount = this.selectedIndexes.length; |
| 325 | 333 |
| 326 this.selectedIndexes = | 334 this.selectedIndexes = this.selectedIndexes |
| 327 this.selectedIndexes | 335 .map(function(oldIndex) { |
| 328 .map(function(oldIndex) { return permutation[oldIndex]; }) | 336 return permutation[oldIndex]; |
| 329 .filter(function(index) { return index != -1; }); | 337 }) |
| 338 .filter(function(index) { | |
| 339 return index != -1; | |
| 340 }); | |
|
dschuyler
2016/12/22 22:34:27
Could this have a cr after the assignment?
i.e.
| |
| 330 | 341 |
| 331 // Will be adjusted in endChange. | 342 // Will be adjusted in endChange. |
| 332 if (oldLeadIndex != -1) | 343 if (oldLeadIndex != -1) |
| 333 this.leadIndex = permutation[oldLeadIndex]; | 344 this.leadIndex = permutation[oldLeadIndex]; |
| 334 if (oldAnchorIndex != -1) | 345 if (oldAnchorIndex != -1) |
| 335 this.anchorIndex = permutation[oldAnchorIndex]; | 346 this.anchorIndex = permutation[oldAnchorIndex]; |
| 336 | 347 |
| 337 if (oldSelectedItemsCount && !this.selectedIndexes.length && | 348 if (oldSelectedItemsCount && !this.selectedIndexes.length && |
| 338 this.length_ && oldLeadIndex != -1) { | 349 this.length_ && oldLeadIndex != -1) { |
| 339 // All selected items are deleted. We move selection to next item of | 350 // All selected items are deleted. We move selection to next item of |
| 340 // last selected item. | 351 // last selected item. |
| 341 this.selectedIndexes = [Math.min(oldLeadIndex, this.length_ - 1)]; | 352 this.selectedIndexes = [Math.min(oldLeadIndex, this.length_ - 1)]; |
| 342 } | 353 } |
| 343 | 354 |
| 344 this.endChange(); | 355 this.endChange(); |
| 345 }, | 356 }, |
| 346 | 357 |
| 347 /** | 358 /** |
| 348 * Adjusts selection model length. | 359 * Adjusts selection model length. |
| 349 * @param {number} length New selection model length. | 360 * @param {number} length New selection model length. |
| 350 */ | 361 */ |
| 351 adjustLength: function(length) { this.length_ = length; } | 362 adjustLength: function(length) { |
| 363 this.length_ = length; | |
| 364 } | |
| 352 }; | 365 }; |
| 353 | 366 |
| 354 return {ListSelectionModel: ListSelectionModel}; | 367 return {ListSelectionModel: ListSelectionModel}; |
| 355 }); | 368 }); |
| OLD | NEW |