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

Side by Side Diff: chrome/browser/resources/bookmark_manager/js/cr/ui/tree.js

Issue 1539023: Bookmark manager: Fix tree indentation... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 8 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
« no previous file with comments | « chrome/browser/resources/bookmark_manager/css/tree.css.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 cr.define('cr.ui', function() { 5 cr.define('cr.ui', function() {
6 // require cr.ui.define 6 // require cr.ui.define
7 // require cr.ui.limitInputWidth 7 // require cr.ui.limitInputWidth
8 8
9 /** 9 /**
10 * The number of pixels to indent per level.
11 * @type {number}
12 */
13 const INDENT = 20;
14
15 /**
16 * Returns the computed style for an element.
17 * @param {!Element} el The element to get the computed style for.
18 * @return {!CSSStyleDeclaration} The computed style.
19 */
20 function getComputedStyle(el) {
21 return el.ownerDocument.defaultView.getComputedStyle(el);
22 }
23
24 /**
10 * Helper function that finds the first ancestor tree item. 25 * Helper function that finds the first ancestor tree item.
11 * @param {!Element} el The element to start searching from. 26 * @param {!Element} el The element to start searching from.
12 * @return {cr.ui.TreeItem} The found tree item or null if not found. 27 * @return {cr.ui.TreeItem} The found tree item or null if not found.
13 */ 28 */
14 function findTreeItem(el) { 29 function findTreeItem(el) {
15 while (el && !(el instanceof TreeItem)) { 30 while (el && !(el instanceof TreeItem)) {
16 el = el.parentNode; 31 el = el.parentNode;
17 } 32 }
18 return el; 33 return el;
19 } 34 }
(...skipping 28 matching lines...) Expand all
48 */ 63 */
49 get items() { 64 get items() {
50 return this.children; 65 return this.children;
51 }, 66 },
52 67
53 /** 68 /**
54 * Adds a tree item to the tree. 69 * Adds a tree item to the tree.
55 * @param {!cr.ui.TreeItem} treeItem The item to add. 70 * @param {!cr.ui.TreeItem} treeItem The item to add.
56 */ 71 */
57 add: function(treeItem) { 72 add: function(treeItem) {
58 this.appendChild(treeItem); 73 this.addAt(treeItem, 0xffffffff);
59 }, 74 },
60 75
61 /** 76 /**
62 * Adds a tree item at the given index. 77 * Adds a tree item at the given index.
63 * @param {!cr.ui.TreeItem} treeItem The item to add. 78 * @param {!cr.ui.TreeItem} treeItem The item to add.
64 * @param {number} index The index where we want to add the item. 79 * @param {number} index The index where we want to add the item.
65 */ 80 */
66 addAt: function(treeItem, index) { 81 addAt: function(treeItem, index) {
67 this.insertBefore(treeItem, this.children[index]); 82 this.insertBefore(treeItem, this.children[index]);
83 treeItem.setDepth_(this.depth + 1);
68 }, 84 },
69 85
70 /** 86 /**
71 * Removes a tree item child. 87 * Removes a tree item child.
72 * @param {!cr.ui.TreeItem} treeItem The tree item to remove. 88 * @param {!cr.ui.TreeItem} treeItem The tree item to remove.
73 */ 89 */
74 remove: function(treeItem) { 90 remove: function(treeItem) {
75 this.removeChild(treeItem); 91 this.removeChild(treeItem);
76 }, 92 },
77 93
78 /** 94 /**
95 * The depth of the node. This is 0 for the tree itself.
96 * @type {number}
97 */
98 get depth() {
99 return 0
feldstein 2010/04/06 00:56:57 semicolon
100 },
101
102 /**
79 * Handles click events on the tree and forwards the event to the relevant 103 * Handles click events on the tree and forwards the event to the relevant
80 * tree items as necesary. 104 * tree items as necesary.
81 * @param {Event} e The click event object. 105 * @param {Event} e The click event object.
82 */ 106 */
83 handleClick: function(e) { 107 handleClick: function(e) {
84 var treeItem = findTreeItem(e.target); 108 var treeItem = findTreeItem(e.target);
85 if (treeItem) 109 if (treeItem)
86 treeItem.handleClick(e); 110 treeItem.handleClick(e);
87 }, 111 },
88 112
(...skipping 17 matching lines...) Expand all
106 * of tree items. 130 * of tree items.
107 * @param {Event} e The click event object. 131 * @param {Event} e The click event object.
108 */ 132 */
109 handleKeyDown: function(e) { 133 handleKeyDown: function(e) {
110 var itemToSelect; 134 var itemToSelect;
111 if (e.ctrlKey) 135 if (e.ctrlKey)
112 return; 136 return;
113 137
114 var item = this.selectedItem; 138 var item = this.selectedItem;
115 139
116 var rtl = window.getComputedStyle(item).direction == 'rtl'; 140 var rtl = getComputedStyle(item).direction == 'rtl';
117 141
118 switch (e.keyIdentifier) { 142 switch (e.keyIdentifier) {
119 case 'Up': 143 case 'Up':
120 itemToSelect = item ? getPrevious(item) : 144 itemToSelect = item ? getPrevious(item) :
121 this.items[this.items.length - 1]; 145 this.items[this.items.length - 1];
122 break; 146 break;
123 case 'Down': 147 case 'Down':
124 itemToSelect = item ? getNext(item) : 148 itemToSelect = item ? getNext(item) :
125 this.items[0]; 149 this.items[0];
126 break; 150 break;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 }, 242 },
219 243
220 /** 244 /**
221 * The tree items children. 245 * The tree items children.
222 */ 246 */
223 get items() { 247 get items() {
224 return this.lastElementChild.children; 248 return this.lastElementChild.children;
225 }, 249 },
226 250
227 /** 251 /**
252 * The depth of the tree item.
253 * @type {number}
254 */
255 depth_: 0,
256 get depth() {
257 return this.depth_;
258 },
259
260 /**
261 * Sets the depth.
262 * @param {number} depth The new depth.
263 * @private
264 */
265 setDepth_: function(depth) {
266 if (depth != this.depth_) {
267 this.rowElement.style.WebkitPaddingStart = depth * INDENT + 'px';
268 this.depth_ = depth;
269 var items = this.items;
270 for (var i = 0, item; item = items[i]; i++) {
271 item.setDepth_(depth + 1);
272 }
273 }
274 },
275
276 /**
228 * Adds a tree item as a child. 277 * Adds a tree item as a child.
229 * @param {!cr.ui.TreeItem} child The child to add. 278 * @param {!cr.ui.TreeItem} child The child to add.
230 */ 279 */
231 add: function(child) { 280 add: function(child) {
232 this.addAt(child, 0xffffffff); 281 this.addAt(child, 0xffffffff);
233 }, 282 },
234 283
235 /** 284 /**
236 * Adds a tree item as a child at a given index. 285 * Adds a tree item as a child at a given index.
237 * @param {!cr.ui.TreeItem} child The child to add. 286 * @param {!cr.ui.TreeItem} child The child to add.
238 * @param {number} index The index where to add the child. 287 * @param {number} index The index where to add the child.
239 */ 288 */
240 addAt: function(child, index) { 289 addAt: function(child, index) {
241 this.lastElementChild.insertBefore(child, this.items[index]); 290 this.lastElementChild.insertBefore(child, this.items[index]);
242 if (this.items.length == 1) 291 if (this.items.length == 1)
243 this.hasChildren_ = true; 292 this.hasChildren_ = true;
293 child.setDepth_(this.depth + 1);
244 }, 294 },
245 295
246 /** 296 /**
247 * Removes a child. 297 * Removes a child.
248 * @param {!cr.ui.TreeItem} child The tree item child to remove. 298 * @param {!cr.ui.TreeItem} child The tree item child to remove.
249 */ 299 */
250 remove: function(child) { 300 remove: function(child) {
251 // If we removed the selected item we should become selected. 301 // If we removed the selected item we should become selected.
252 var tree = this.tree; 302 var tree = this.tree;
253 var selectedItem = tree.selectedItem; 303 var selectedItem = tree.selectedItem;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 }, 402 },
353 set label(s) { 403 set label(s) {
354 this.labelElement.textContent = s; 404 this.labelElement.textContent = s;
355 }, 405 },
356 406
357 /** 407 /**
358 * The URL for the icon. 408 * The URL for the icon.
359 * @type {string} 409 * @type {string}
360 */ 410 */
361 get icon() { 411 get icon() {
362 return window.getComputedStyle(this.labelElement). 412 return getComputedStyle(this.labelElement).backgroundImage.slice(4, -1);
363 backgroundImage.slice(4, -1);
364 }, 413 },
365 set icon(icon) { 414 set icon(icon) {
366 return this.labelElement.style.backgroundImage = url(icon); 415 return this.labelElement.style.backgroundImage = url(icon);
367 }, 416 },
368 417
369 /** 418 /**
370 * Whether the tree item is selected or not. 419 * Whether the tree item is selected or not.
371 * @type {boolean} 420 * @type {boolean}
372 */ 421 */
373 get selected() { 422 get selected() {
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 } 643 }
595 return item; 644 return item;
596 } 645 }
597 646
598 // Export 647 // Export
599 return { 648 return {
600 Tree: Tree, 649 Tree: Tree,
601 TreeItem: TreeItem 650 TreeItem: TreeItem
602 }; 651 };
603 }); 652 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/bookmark_manager/css/tree.css.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698