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

Side by Side Diff: chrome/browser/resources/print_preview/common/search_box.js

Issue 399973004: Advanced printing destination settings modal dialog (non-functional yet, just the skeleton). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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
OLDNEW
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('print_preview', function() { 5 cr.define('print_preview', function() {
6 'use strict'; 6 'use strict';
7 7
8 /** 8 /**
9 * Component that renders a search box for searching through destinations. 9 * Component that renders a search box for searching through destinations.
10 * @param {string} searchBoxPlaceholderText Search box placeholder text.
10 * @constructor 11 * @constructor
11 * @extends {print_preview.Component} 12 * @extends {print_preview.Component}
12 */ 13 */
13 function SearchBox() { 14 function SearchBox(searchBoxPlaceholderText) {
14 print_preview.Component.call(this); 15 print_preview.Component.call(this);
15 16
16 /** 17 /**
18 * Search box placeholder text.
19 * @private {string}
20 */
21 this.searchBoxPlaceholderText_ = searchBoxPlaceholderText;
22
23 /**
17 * Timeout used to control incremental search. 24 * Timeout used to control incremental search.
18 * @type {?number} 25 * @private {?number}
19 * @private
20 */ 26 */
21 this.timeout_ = null; 27 this.timeout_ = null;
22 28
23 /** 29 /**
24 * Input box where the query is entered. 30 * Input box where the query is entered.
25 * @type {HTMLInputElement} 31 * @private {HTMLInputElement}
26 * @private
27 */ 32 */
28 this.input_ = null; 33 this.input_ = null;
29 }; 34 };
30 35
31 /** 36 /**
32 * Enumeration of event types dispatched from the search box. 37 * Enumeration of event types dispatched from the search box.
33 * @enum {string} 38 * @enum {string}
34 */ 39 */
35 SearchBox.EventType = { 40 SearchBox.EventType = {
36 SEARCH: 'print_preview.SearchBox.SEARCH' 41 SEARCH: 'print_preview.SearchBox.SEARCH'
37 }; 42 };
38 43
39 /** 44 /**
40 * CSS classes used by the search box.
41 * @enum {string}
42 * @private
43 */
44 SearchBox.Classes_ = {
45 INPUT: 'search-box-input'
46 };
47
48 /**
49 * Delay in milliseconds before dispatching a SEARCH event. 45 * Delay in milliseconds before dispatching a SEARCH event.
50 * @type {number} 46 * @private {number}
51 * @const 47 * @const
52 * @private
53 */ 48 */
54 SearchBox.SEARCH_DELAY_ = 150; 49 SearchBox.SEARCH_DELAY_ = 150;
55 50
56 SearchBox.prototype = { 51 SearchBox.prototype = {
57 __proto__: print_preview.Component.prototype, 52 __proto__: print_preview.Component.prototype,
58 53
59 /** @param {string} New query to set the search box's query to. */ 54 /** @param {string} New query to set the search box's query to. */
60 setQuery: function(query) { 55 setQuery: function(query) {
61 query = query || ''; 56 query = query || '';
62 this.input_.value = query.trim(); 57 this.input_.value = query.trim();
63 }, 58 },
64 59
65 /** Sets the input element of the search box in focus. */ 60 /** Sets the input element of the search box in focus. */
66 focus: function() { 61 focus: function() {
67 this.input_.focus(); 62 this.input_.focus();
68 }, 63 },
69 64
70 /** @override */ 65 /** @override */
66 createDom: function() {
67 this.setElementInternal(this.cloneTemplateInternal(
68 'search-box-template'));
69 this.input_ = this.getChildElement('.search-box-input');
70 this.input_.setAttribute('placeholder', this.searchBoxPlaceholderText_);
71 },
72
73 /** @override */
71 enterDocument: function() { 74 enterDocument: function() {
72 print_preview.Component.prototype.enterDocument.call(this); 75 print_preview.Component.prototype.enterDocument.call(this);
73 this.tracker.add(this.input_, 'input', this.onInputInput_.bind(this)); 76 this.tracker.add(this.input_, 'input', this.onInputInput_.bind(this));
74 }, 77 },
75 78
76 /** @override */ 79 /** @override */
77 exitDocument: function() { 80 exitDocument: function() {
78 print_preview.Component.prototype.exitDocument.call(this); 81 print_preview.Component.prototype.exitDocument.call(this);
79 this.input_ = null; 82 this.input_ = null;
80 }, 83 },
81 84
82 /** @override */
83 decorateInternal: function() {
84 this.input_ = this.getElement().getElementsByClassName(
85 SearchBox.Classes_.INPUT)[0];
86 },
87
88 /** 85 /**
89 * @return {string} The current query of the search box. 86 * @return {string} The current query of the search box.
90 * @private 87 * @private
91 */ 88 */
92 getQuery_: function() { 89 getQuery_: function() {
93 return this.input_.value.trim(); 90 return this.input_.value.trim();
94 }, 91 },
95 92
96 /** 93 /**
97 * Dispatches a SEARCH event. 94 * Dispatches a SEARCH event.
98 * @private 95 * @private
99 */ 96 */
100 dispatchSearchEvent_: function() { 97 dispatchSearchEvent_: function() {
101 this.timeout_ = null; 98 this.timeout_ = null;
102 var searchEvent = new Event(SearchBox.EventType.SEARCH); 99 var searchEvent = new Event(SearchBox.EventType.SEARCH);
103 searchEvent.query = this.getQuery_(); 100 searchEvent.query = this.getQuery_();
104 this.dispatchEvent(searchEvent); 101 this.dispatchEvent(searchEvent);
105 }, 102 },
106 103
107 /** 104 /**
108 * Called when the input element's value changes. Dispatches a search event. 105 * Called when the input element's value changes. Dispatches a search event.
109 * @private 106 * @private
110 */ 107 */
111 onInputInput_: function() { 108 onInputInput_: function() {
112 if (this.timeout_) { 109 if (this.timeout_)
113 clearTimeout(this.timeout_); 110 clearTimeout(this.timeout_);
114 }
115 this.timeout_ = setTimeout( 111 this.timeout_ = setTimeout(
116 this.dispatchSearchEvent_.bind(this), SearchBox.SEARCH_DELAY_); 112 this.dispatchSearchEvent_.bind(this), SearchBox.SEARCH_DELAY_);
117 } 113 }
118 }; 114 };
119 115
120 // Export 116 // Export
121 return { 117 return {
122 SearchBox: SearchBox 118 SearchBox: SearchBox
123 }; 119 };
124 }); 120 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698