OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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('options', function() { | 5 cr.define('options', function() { |
| 6 /** |
| 7 * @constructor |
| 8 * @extends {HTMLDivElement} |
| 9 */ |
6 var EditableTextField = cr.ui.define('div'); | 10 var EditableTextField = cr.ui.define('div'); |
7 | 11 |
8 /** | 12 /** |
9 * Decorates an element as an editable text field. | 13 * Decorates an element as an editable text field. |
10 * @param {!HTMLElement} el The element to decorate. | 14 * @param {!HTMLElement} el The element to decorate. |
11 */ | 15 */ |
12 EditableTextField.decorate = function(el) { | 16 EditableTextField.decorate = function(el) { |
13 el.__proto__ = EditableTextField.prototype; | 17 el.__proto__ = EditableTextField.prototype; |
14 el.decorate(); | 18 el.decorate(); |
15 }; | 19 }; |
(...skipping 27 matching lines...) Expand all Loading... |
43 * than committed, when editing ends. | 47 * than committed, when editing ends. |
44 * @type {boolean} | 48 * @type {boolean} |
45 * @private | 49 * @private |
46 */ | 50 */ |
47 editCanceled_: true, | 51 editCanceled_: true, |
48 | 52 |
49 /** @override */ | 53 /** @override */ |
50 decorate: function() { | 54 decorate: function() { |
51 this.classList.add('editable-text-field'); | 55 this.classList.add('editable-text-field'); |
52 | 56 |
53 this.createEditableTextCell(); | 57 this.createEditableTextCell(''); |
54 | 58 |
55 if (this.hasAttribute('i18n-placeholder-text')) { | 59 if (this.hasAttribute('i18n-placeholder-text')) { |
56 var identifier = this.getAttribute('i18n-placeholder-text'); | 60 var identifier = this.getAttribute('i18n-placeholder-text'); |
57 var localizedText = loadTimeData.getString(identifier); | 61 var localizedText = loadTimeData.getString(identifier); |
58 if (localizedText) | 62 if (localizedText) |
59 this.setAttribute('placeholder-text', localizedText); | 63 this.setAttribute('placeholder-text', localizedText); |
60 } | 64 } |
61 | 65 |
62 this.addEventListener('keydown', this.handleKeyDown_); | 66 this.addEventListener('keydown', this.handleKeyDown_); |
63 this.editField_.addEventListener('focus', this.handleFocus_.bind(this)); | 67 this.editField_.addEventListener('focus', this.handleFocus_.bind(this)); |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 * @param {string} text The text of the cell. | 224 * @param {string} text The text of the cell. |
221 * @private | 225 * @private |
222 */ | 226 */ |
223 createEditableTextCell: function(text) { | 227 createEditableTextCell: function(text) { |
224 // This function should only be called once. | 228 // This function should only be called once. |
225 if (this.editField_) | 229 if (this.editField_) |
226 return; | 230 return; |
227 | 231 |
228 var container = this.ownerDocument.createElement('div'); | 232 var container = this.ownerDocument.createElement('div'); |
229 | 233 |
230 var textEl = this.ownerDocument.createElement('div'); | 234 var textEl = /** @type {HTMLElement} */( |
| 235 this.ownerDocument.createElement('div')); |
231 textEl.className = 'static-text'; | 236 textEl.className = 'static-text'; |
232 textEl.textContent = text; | 237 textEl.textContent = text; |
233 textEl.setAttribute('displaymode', 'static'); | 238 textEl.setAttribute('displaymode', 'static'); |
234 this.appendChild(textEl); | 239 this.appendChild(textEl); |
235 this.staticText_ = textEl; | 240 this.staticText_ = textEl; |
236 | 241 |
237 var inputEl = this.ownerDocument.createElement('input'); | 242 var inputEl = /** @type {HTMLElement} */( |
| 243 this.ownerDocument.createElement('input')); |
238 inputEl.className = 'editable-text'; | 244 inputEl.className = 'editable-text'; |
239 inputEl.type = 'text'; | 245 inputEl.type = 'text'; |
240 inputEl.value = text; | 246 inputEl.value = text; |
241 inputEl.setAttribute('displaymode', 'edit'); | 247 inputEl.setAttribute('displaymode', 'edit'); |
242 inputEl.staticVersion = textEl; | 248 inputEl.staticVersion = textEl; |
243 this.appendChild(inputEl); | 249 this.appendChild(inputEl); |
244 this.editField_ = inputEl; | 250 this.editField_ = inputEl; |
245 }, | 251 }, |
246 | 252 |
247 /** | 253 /** |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 return node instanceof EditableTextField; | 372 return node instanceof EditableTextField; |
367 }); | 373 }); |
368 if (itemAncestor) | 374 if (itemAncestor) |
369 document.activeElement.blur(); | 375 document.activeElement.blur(); |
370 }); | 376 }); |
371 | 377 |
372 return { | 378 return { |
373 EditableTextField: EditableTextField, | 379 EditableTextField: EditableTextField, |
374 }; | 380 }; |
375 }); | 381 }); |
OLD | NEW |