OLD | NEW |
| (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 Tree = cr.ui.Tree; | |
7 const TreeItem = cr.ui.TreeItem; | |
8 | |
9 /** | |
10 * Creates a new tree item for certificate data. | |
11 * @param {Object=} data Data used to create a certificate tree item. | |
12 * @constructor | |
13 * @extends {TreeItem} | |
14 */ | |
15 function CertificateTreeItem(data) { | |
16 // TODO(mattm): other columns | |
17 var treeItem = new TreeItem({ | |
18 label: data.name, | |
19 data: data | |
20 }); | |
21 treeItem.__proto__ = CertificateTreeItem.prototype; | |
22 | |
23 if (data.icon) { | |
24 treeItem.icon = data.icon; | |
25 } | |
26 | |
27 return treeItem; | |
28 } | |
29 | |
30 CertificateTreeItem.prototype = { | |
31 __proto__: TreeItem.prototype, | |
32 | |
33 /** | |
34 * The tree path id/. | |
35 * @type {string} | |
36 */ | |
37 get pathId() { | |
38 var parent = this.parentItem; | |
39 if (parent && parent instanceof CertificateTreeItem) { | |
40 return parent.pathId + ',' + this.data.id; | |
41 } else { | |
42 return this.data.id; | |
43 } | |
44 } | |
45 }; | |
46 | |
47 /** | |
48 * Creates a new cookies tree. | |
49 * @param {Object=} opt_propertyBag Optional properties. | |
50 * @constructor | |
51 * @extends {Tree} | |
52 */ | |
53 var CertificatesTree = cr.ui.define('tree'); | |
54 | |
55 CertificatesTree.prototype = { | |
56 __proto__: Tree.prototype, | |
57 | |
58 /** @inheritDoc */ | |
59 decorate: function() { | |
60 Tree.prototype.decorate.call(this); | |
61 this.treeLookup_ = {}; | |
62 }, | |
63 | |
64 /** @inheritDoc */ | |
65 addAt: function(child, index) { | |
66 Tree.prototype.addAt.call(this, child, index); | |
67 if (child.data && child.data.id) | |
68 this.treeLookup_[child.data.id] = child; | |
69 }, | |
70 | |
71 /** @inheritDoc */ | |
72 remove: function(child) { | |
73 Tree.prototype.remove.call(this, child); | |
74 if (child.data && child.data.id) | |
75 delete this.treeLookup_[child.data.id]; | |
76 }, | |
77 | |
78 /** | |
79 * Clears the tree. | |
80 */ | |
81 clear: function() { | |
82 // Remove all fields without recreating the object since other code | |
83 // references it. | |
84 for (var id in this.treeLookup_){ | |
85 delete this.treeLookup_[id]; | |
86 } | |
87 this.textContent = ''; | |
88 }, | |
89 | |
90 /** | |
91 * Populate the tree. | |
92 * @param {Array} nodesData Nodes data array. | |
93 */ | |
94 populate: function(nodesData) { | |
95 this.clear(); | |
96 | |
97 for (var i = 0; i < nodesData.length; ++i) { | |
98 var subnodes = nodesData[i]['subnodes']; | |
99 delete nodesData[i]['subnodes']; | |
100 | |
101 var item = new CertificateTreeItem(nodesData[i]); | |
102 this.addAt(item, i); | |
103 | |
104 for (var j = 0; j < subnodes.length; ++j) { | |
105 var subitem = new CertificateTreeItem(subnodes[j]); | |
106 item.addAt(subitem, j); | |
107 } | |
108 // Make tree expanded by default. | |
109 item.expanded = true; | |
110 } | |
111 | |
112 cr.dispatchSimpleEvent(this, 'change'); | |
113 }, | |
114 }; | |
115 | |
116 return { | |
117 CertificatesTree: CertificatesTree | |
118 }; | |
119 }); | |
120 | |
OLD | NEW |