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

Side by Side Diff: chrome/browser/resources/print_preview/search/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
(Empty)
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
3 // found in the LICENSE file.
4
5 cr.define('print_preview', function() {
6 'use strict';
7
8 /**
9 * Component that renders a search box for searching through destinations.
10 * @constructor
11 * @extends {print_preview.Component}
12 */
13 function SearchBox() {
14 print_preview.Component.call(this);
15
16 /**
17 * Timeout used to control incremental search.
18 * @type {?number}
19 * @private
20 */
21 this.timeout_ = null;
22
23 /**
24 * Input box where the query is entered.
25 * @type {HTMLInputElement}
26 * @private
27 */
28 this.input_ = null;
29 };
30
31 /**
32 * Enumeration of event types dispatched from the search box.
33 * @enum {string}
34 */
35 SearchBox.EventType = {
36 SEARCH: 'print_preview.SearchBox.SEARCH'
37 };
38
39 /**
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.
50 * @type {number}
51 * @const
52 * @private
53 */
54 SearchBox.SEARCH_DELAY_ = 150;
55
56 SearchBox.prototype = {
57 __proto__: print_preview.Component.prototype,
58
59 /** @param {string} New query to set the search box's query to. */
60 setQuery: function(query) {
61 query = query || '';
62 this.input_.value = query.trim();
63 },
64
65 /** Sets the input element of the search box in focus. */
66 focus: function() {
67 this.input_.focus();
68 },
69
70 /** @override */
71 enterDocument: function() {
72 print_preview.Component.prototype.enterDocument.call(this);
73 this.tracker.add(this.input_, 'input', this.onInputInput_.bind(this));
74 },
75
76 /** @override */
77 exitDocument: function() {
78 print_preview.Component.prototype.exitDocument.call(this);
79 this.input_ = null;
80 },
81
82 /** @override */
83 decorateInternal: function() {
84 this.input_ = this.getElement().getElementsByClassName(
85 SearchBox.Classes_.INPUT)[0];
86 },
87
88 /**
89 * @return {string} The current query of the search box.
90 * @private
91 */
92 getQuery_: function() {
93 return this.input_.value.trim();
94 },
95
96 /**
97 * Dispatches a SEARCH event.
98 * @private
99 */
100 dispatchSearchEvent_: function() {
101 this.timeout_ = null;
102 var searchEvent = new Event(SearchBox.EventType.SEARCH);
103 searchEvent.query = this.getQuery_();
104 this.dispatchEvent(searchEvent);
105 },
106
107 /**
108 * Called when the input element's value changes. Dispatches a search event.
109 * @private
110 */
111 onInputInput_: function() {
112 if (this.timeout_) {
113 clearTimeout(this.timeout_);
114 }
115 this.timeout_ = setTimeout(
116 this.dispatchSearchEvent_.bind(this), SearchBox.SEARCH_DELAY_);
117 }
118 };
119
120 // Export
121 return {
122 SearchBox: SearchBox
123 };
124 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698