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

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

Issue 5685003: DOMUI Prefs: Add a deletable item list type, and use it for startup pages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nits fixed Created 10 years 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
« no previous file with comments | « chrome/browser/resources/options/startup_page_manager.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 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 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 // require: listselectionmodel.js 5 // require: listselectionmodel.js
6 6
7 /** 7 /**
8 * @fileoverview This implements a list control. 8 * @fileoverview This implements a list control.
9 */ 9 */
10 10
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 if (this.disabled) 296 if (this.disabled)
297 return; 297 return;
298 298
299 var target = e.target; 299 var target = e.target;
300 300
301 // If the target was this element we need to make sure that the user did 301 // If the target was this element we need to make sure that the user did
302 // not click on a border or a scrollbar. 302 // not click on a border or a scrollbar.
303 if (target == this && !inViewport(target, e)) 303 if (target == this && !inViewport(target, e))
304 return; 304 return;
305 305
306 while (target && target.parentNode != this) { 306 target = this.getListItemAncestor(target);
307 target = target.parentNode;
308 }
309 307
310 if (!target) { 308 var index = target ? this.getIndexOfListItem(target) : -1;
311 this.selectionController_.handleMouseDownUp(e, -1); 309 this.selectionController_.handleMouseDownUp(e, index);
312 } else {
313 var cs = getComputedStyle(target);
314 var top = target.offsetTop -
315 parseFloat(cs.marginTop);
316 var index = Math.floor(top / this.getItemHeight_());
317 this.selectionController_.handleMouseDownUp(e, index);
318 }
319 }, 310 },
320 311
321 /** 312 /**
313 * Returns the list item element containing the given element, or null if
314 * it doesn't belong to any list item element.
315 * @param {HTMLElement} element The element.
316 * @return {ListItem} The list item containing |element|, or null.
317 */
318 getListItemAncestor: function(element) {
319 var container = element;
320 while (container && container.parentNode != this) {
321 container = container.parentNode;
322 }
323 return container;
324 },
325
326 /**
322 * Handle a keydown event. 327 * Handle a keydown event.
323 * @param {Event} e The keydown event. 328 * @param {Event} e The keydown event.
324 * @return {boolean} Whether the key event was handled. 329 * @return {boolean} Whether the key event was handled.
325 */ 330 */
326 handleKeyDown: function(e) { 331 handleKeyDown: function(e) {
327 if (this.disabled) 332 if (this.disabled)
328 return; 333 return;
329 334
330 return this.selectionController_.handleKeyDown(e); 335 return this.selectionController_.handleKeyDown(e);
331 }, 336 },
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 * @return {ListItem} The found list item or null if not found. 453 * @return {ListItem} The found list item or null if not found.
449 */ 454 */
450 getListItemByIndex: function(index) { 455 getListItemByIndex: function(index) {
451 if (index < this.firstIndex_ || index >= this.lastIndex_) 456 if (index < this.firstIndex_ || index >= this.lastIndex_)
452 return null; 457 return null;
453 458
454 return this.children[index - this.firstIndex_ + 1]; 459 return this.children[index - this.firstIndex_ + 1];
455 }, 460 },
456 461
457 /** 462 /**
463 * Find the index of the given list item element.
464 * @param {ListItem} item The list item to get the index of.
465 * @return {number} The index of the list item, or -1 if not found.
466 */
467 getIndexOfListItem: function(item) {
468 var cs = getComputedStyle(item);
469 var top = item.offsetTop - parseFloat(cs.marginTop);
470 var index = Math.floor(top / this.getItemHeight_());
471 var childIndex = index - this.firstIndex_ + 1;
472 if (childIndex >= 0 && childIndex < this.children.length &&
473 this.children[childIndex] == item)
474 return index;
475 return -1;
476 },
477
478 /**
458 * Creates a new list item. 479 * Creates a new list item.
459 * @param {*} value The value to use for the item. 480 * @param {*} value The value to use for the item.
460 * @return {!ListItem} The newly created list item. 481 * @return {!ListItem} The newly created list item.
461 */ 482 */
462 createItem: function(value) { 483 createItem: function(value) {
463 return new cr.ui.ListItem({label: value}); 484 return new cr.ui.ListItem({label: value});
464 }, 485 },
465 486
466 /** 487 /**
467 * Creates the selection controller to use internally. 488 * Creates the selection controller to use internally.
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 } 591 }
571 } 592 }
572 }; 593 };
573 594
574 cr.defineProperty(List, 'disabled', cr.PropertyKind.BOOL_ATTR); 595 cr.defineProperty(List, 'disabled', cr.PropertyKind.BOOL_ATTR);
575 596
576 return { 597 return {
577 List: List 598 List: List
578 } 599 }
579 }); 600 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/options/startup_page_manager.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698