Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Side by Side Diff: chrome/browser/resources/shared/js/cr/ui/table/table_selection_model.js

Issue 7038024: Move sorting logic from table to list. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /**
6 * @fileoverview This is a multiple selection model for table
7 */
8 cr.define('cr.ui.table', function() {
9 const ListSelectionModel = cr.ui.ListSelectionModel;
10
11 /**
12 * Creates a new selection model that is to be used with tables.
13 * This implementation supports multiple selection.
14 * Selected items are stored, not indexes, so selections are preserved
15 * after items reordering (e.g. because of sort).
16 * @param {number=} opt_length The number of items in the selection.
17 * @constructor
18 * @extends {!cr.EventTarget}
19 */
20 function TableSelectionModel(opt_length) {
21 ListSelectionModel.apply(this, arguments);
22 }
23
24 TableSelectionModel.prototype = {
25 __proto__: ListSelectionModel.prototype,
26
27
28 /**
29 * Adjusts the selection after reordering of items in the table.
30 * @param {!Array.<number>} permutation The reordering permutation.
31 */
32 adjustToReordering: function(permutation) {
33 var oldLeadIndex = this.leadIndex;
34
35 var oldSelectedIndexes = this.selectedIndexes;
36 this.selectedIndexes = oldSelectedIndexes.map(function(oldIndex) {
37 return permutation[oldIndex];
38 }).filter(function(index) {
39 return index != -1;
40 });
41
42 if (oldLeadIndex != -1)
43 this.leadIndex = permutation[oldLeadIndex];
44 },
45
46 /**
47 * Adjust the selection by adding or removing a certain numbers of items.
48 * This should be called by the owner of the selection model as items are
49 * added and removed from the underlying data model.
50 * This implementation updates selection model length only. The actual
51 * selected indexes changes are processed in adjustToReordering.
52 * @param {number} index The index of the first change.
53 * @param {number} itemsRemoved Number of items removed.
54 * @param {number} itemsAdded Number of items added.
55 */
56 adjust: function(index, itemsRemoved, itemsAdded) {
57 ListSelectionModel.prototype.adjust.call(
58 this, this.length, itemsRemoved, itemsAdded);
59 }
60 };
61
62 return {
63 TableSelectionModel: TableSelectionModel
64 };
65 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698