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

Side by Side Diff: chrome/browser/resources/options/list_inline_header_selection_controller.js

Issue 6248015: DOMUI Prefs: Split search engines into two lists (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 11 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) 2010 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 cr.define('options', function() {
6 const ListSelectionController = cr.ui.ListSelectionController;
7
8 /**
9 * Creates a selection controller with a delegate that controls whether or
10 * not individual items are selectable. This is used for lists containing
11 * subgroups with headings that are in the list, since the headers themselves
12 * should not be selectable.
13 *
14 * @param {cr.ui.ListSelectionModel} selectionModel The selection model to
15 * interact with.
16 * @param {*} selectabilityDelegate A delegate responding to
17 * canSelectIndex(index).
18 *
19 * @constructor
20 * @extends {!cr.ui.ListSelectionController}
21 */
22 function ListInlineHeaderSelectionController(selectionModel,
23 selectabilityDelegate) {
24 ListSelectionController.call(this, selectionModel);
25 this.selectabilityDelegate_ = selectabilityDelegate;
26 }
27
28 ListInlineHeaderSelectionController.prototype = {
29 __proto__: ListSelectionController.prototype,
30
31 /** @inheritDoc */
32 getIndexBelow: function(index) {
33 var next = ListSelectionController.prototype.getIndexBelow.call(this,
34 index);
35 if (next == -1 || this.canSelect(next))
36 return next;
37 return this.getIndexBelow(next);
38 },
39
40 /** @inheritDoc */
41 getNextIndex: function(index) {
42 return this.getIndexBelow(index);
43 },
44
45 /** @inheritDoc */
46 getIndexAbove: function(index) {
47 var previous = ListSelectionController.prototype.getIndexAbove.call(
48 this, index);
49 if (previous == -1 || this.canSelect(previous))
50 return previous;
51 return this.getIndexAbove(previous);
52 },
53
54 /** @inheritDoc */
55 getPreviousIndex: function(index) {
56 return this.getIndexAbove(index);
57 },
58
59 /** @inheritDoc */
60 getFirstIndex: function(index) {
61 var first = ListSelectionController.prototype.getFirstIndex.call(this);
62 if (this.canSelect(first))
63 return first;
64 return this.getNextIndex(first);
65 },
66
67 /** @inheritDoc */
68 getLastIndex: function(index) {
69 var last = ListSelectionController.prototype.getLastIndex.call(this);
70 if (this.canSelect(last))
71 return last;
72 return this.getPreviousIndex(last);
73 },
74
75 /** @inheritDoc */
76 handleMouseDownUp: function(e, index) {
77 if (this.canSelect(index)) {
78 ListSelectionController.prototype.handleMouseDownUp.call(
79 this, e, index);
80 }
81 },
82
83 /**
84 * Returns true if the given index is selectable.
85 * @private
86 * @param {number} index The index to check.
87 */
88 canSelect: function(index) {
89 return this.selectabilityDelegate_.canSelectIndex(index);
90 }
91 };
92
93 return {
94 ListInlineHeaderSelectionController: ListInlineHeaderSelectionController
95 };
96 });
OLDNEW
« no previous file with comments | « chrome/browser/dom_ui/options/search_engine_manager_handler.cc ('k') | chrome/browser/resources/options/options.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698