| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <!-- | 2 <!-- |
| 3 Copyright (c) 2014 The Chromium Authors. All rights reserved. | 3 Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| 4 Use of this source code is governed by a BSD-style license that can be | 4 Use of this source code is governed by a BSD-style license that can be |
| 5 found in the LICENSE file. | 5 found in the LICENSE file. |
| 6 --> | 6 --> |
| 7 | 7 |
| 8 <link rel="stylesheet" href="/tracing/ui/base/list_view.css"> | 8 <link rel="stylesheet" href="/tracing/ui/base/list_view.css"> |
| 9 | 9 |
| 10 <link rel="import" href="/tracing/base/event.html"> | 10 <link rel="import" href="/tracing/base/event.html"> |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 Polymer.dom(item).classList.add('list-item'); | 44 Polymer.dom(item).classList.add('list-item'); |
| 45 item.addEventListener('click', this.onItemClicked_, true); | 45 item.addEventListener('click', this.onItemClicked_, true); |
| 46 | 46 |
| 47 var listView = this; | 47 var listView = this; |
| 48 Object.defineProperty( | 48 Object.defineProperty( |
| 49 item, | 49 item, |
| 50 'selected', { | 50 'selected', { |
| 51 configurable: true, | 51 configurable: true, |
| 52 set: function(value) { | 52 set: function(value) { |
| 53 var oldSelection = listView.selectedElement; | 53 var oldSelection = listView.selectedElement; |
| 54 if (oldSelection && oldSelection != this && value) | 54 if (oldSelection && oldSelection !== this && value) |
| 55 Polymer.dom(listView.selectedElement).removeAttribute( | 55 Polymer.dom(listView.selectedElement).removeAttribute( |
| 56 'selected'); | 56 'selected'); |
| 57 if (value) | 57 if (value) |
| 58 Polymer.dom(this).setAttribute('selected', 'selected'); | 58 Polymer.dom(this).setAttribute('selected', 'selected'); |
| 59 else | 59 else |
| 60 Polymer.dom(this).removeAttribute('selected'); | 60 Polymer.dom(this).removeAttribute('selected'); |
| 61 var newSelection = listView.selectedElement; | 61 var newSelection = listView.selectedElement; |
| 62 if (newSelection != oldSelection) | 62 if (newSelection !== oldSelection) |
| 63 tr.b.dispatchSimpleEvent(listView, 'selection-changed', false); | 63 tr.b.dispatchSimpleEvent(listView, 'selection-changed', false); |
| 64 }, | 64 }, |
| 65 get: function() { | 65 get: function() { |
| 66 return this.hasAttribute('selected'); | 66 return this.hasAttribute('selected'); |
| 67 } | 67 } |
| 68 }); | 68 }); |
| 69 }, | 69 }, |
| 70 | 70 |
| 71 undecorateChild_: function(item) { | 71 undecorateChild_: function(item) { |
| 72 this.selectionChanged_ |= item.selected; | 72 this.selectionChanged_ |= item.selected; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 92 return el; | 92 return el; |
| 93 }, | 93 }, |
| 94 | 94 |
| 95 set selectedElement(el) { | 95 set selectedElement(el) { |
| 96 if (!el) { | 96 if (!el) { |
| 97 if (this.selectedElement) | 97 if (this.selectedElement) |
| 98 this.selectedElement.selected = false; | 98 this.selectedElement.selected = false; |
| 99 return; | 99 return; |
| 100 } | 100 } |
| 101 | 101 |
| 102 if (el.parentElement != this) | 102 if (el.parentElement !== this) |
| 103 throw new Error( | 103 throw new Error( |
| 104 'Can only select elements that are children of this list view'); | 104 'Can only select elements that are children of this list view'); |
| 105 el.selected = true; | 105 el.selected = true; |
| 106 }, | 106 }, |
| 107 | 107 |
| 108 getElementByIndex: function(index) { | 108 getElementByIndex: function(index) { |
| 109 return Polymer.dom(this) | 109 return Polymer.dom(this) |
| 110 .querySelector('.list-item:nth-child(' + index + ')'); | 110 .querySelector('.list-item:nth-child(' + index + ')'); |
| 111 }, | 111 }, |
| 112 | 112 |
| 113 clear: function() { | 113 clear: function() { |
| 114 var changed = this.selectedElement !== undefined; | 114 var changed = this.selectedElement !== undefined; |
| 115 tr.ui.b.ContainerThatDecoratesItsChildren.prototype.clear.call(this); | 115 tr.ui.b.ContainerThatDecoratesItsChildren.prototype.clear.call(this); |
| 116 if (changed) | 116 if (changed) |
| 117 tr.b.dispatchSimpleEvent(this, 'selection-changed', false); | 117 tr.b.dispatchSimpleEvent(this, 'selection-changed', false); |
| 118 }, | 118 }, |
| 119 | 119 |
| 120 onItemClicked_: function(e) { | 120 onItemClicked_: function(e) { |
| 121 var currentSelectedElement = this.selectedElement; | 121 var currentSelectedElement = this.selectedElement; |
| 122 if (currentSelectedElement) | 122 if (currentSelectedElement) |
| 123 Polymer.dom(currentSelectedElement).removeAttribute('selected'); | 123 Polymer.dom(currentSelectedElement).removeAttribute('selected'); |
| 124 var element = e.target; | 124 var element = e.target; |
| 125 while (element.parentElement != this) | 125 while (element.parentElement !== this) |
| 126 element = element.parentElement; | 126 element = element.parentElement; |
| 127 if (element !== currentSelectedElement) | 127 if (element !== currentSelectedElement) |
| 128 Polymer.dom(element).setAttribute('selected', 'selected'); | 128 Polymer.dom(element).setAttribute('selected', 'selected'); |
| 129 tr.b.dispatchSimpleEvent(this, 'selection-changed', false); | 129 tr.b.dispatchSimpleEvent(this, 'selection-changed', false); |
| 130 }, | 130 }, |
| 131 | 131 |
| 132 onKeyDown_: function(e) { | 132 onKeyDown_: function(e) { |
| 133 if (this.selectedElement === undefined) | 133 if (this.selectedElement === undefined) |
| 134 return; | 134 return; |
| 135 | 135 |
| 136 if (e.keyCode == 38) { // Up arrow. | 136 if (e.keyCode === 38) { // Up arrow. |
| 137 var prev = Polymer.dom(this.selectedElement).previousSibling; | 137 var prev = Polymer.dom(this.selectedElement).previousSibling; |
| 138 if (prev) { | 138 if (prev) { |
| 139 prev.selected = true; | 139 prev.selected = true; |
| 140 tr.ui.b.scrollIntoViewIfNeeded(prev); | 140 tr.ui.b.scrollIntoViewIfNeeded(prev); |
| 141 e.preventDefault(); | 141 e.preventDefault(); |
| 142 return true; | 142 return true; |
| 143 } | 143 } |
| 144 } else if (e.keyCode == 40) { // Down arrow. | 144 } else if (e.keyCode === 40) { // Down arrow. |
| 145 var next = Polymer.dom(this.selectedElement).nextSibling; | 145 var next = Polymer.dom(this.selectedElement).nextSibling; |
| 146 if (next) { | 146 if (next) { |
| 147 next.selected = true; | 147 next.selected = true; |
| 148 tr.ui.b.scrollIntoViewIfNeeded(next); | 148 tr.ui.b.scrollIntoViewIfNeeded(next); |
| 149 e.preventDefault(); | 149 e.preventDefault(); |
| 150 return true; | 150 return true; |
| 151 } | 151 } |
| 152 } | 152 } |
| 153 }, | 153 }, |
| 154 | 154 |
| 155 addItem: function(textContent) { | 155 addItem: function(textContent) { |
| 156 var item = document.createElement('div'); | 156 var item = document.createElement('div'); |
| 157 Polymer.dom(item).textContent = textContent; | 157 Polymer.dom(item).textContent = textContent; |
| 158 Polymer.dom(this).appendChild(item); | 158 Polymer.dom(this).appendChild(item); |
| 159 return item; | 159 return item; |
| 160 } | 160 } |
| 161 | 161 |
| 162 }; | 162 }; |
| 163 | 163 |
| 164 return { | 164 return { |
| 165 ListView: ListView | 165 ListView: ListView |
| 166 }; | 166 }; |
| 167 | 167 |
| 168 }); | 168 }); |
| 169 </script> | 169 </script> |
| OLD | NEW |