Chromium Code Reviews| Index: chrome/browser/resources/edit_search_engine_dialog.js |
| diff --git a/chrome/browser/resources/edit_search_engine_dialog.js b/chrome/browser/resources/edit_search_engine_dialog.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..fbe8381f91741580568548a63fb07d29d0dd400e |
| --- /dev/null |
| +++ b/chrome/browser/resources/edit_search_engine_dialog.js |
| @@ -0,0 +1,108 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +cr.define('editSearchEngineDialog', function() { |
| + 'use strict'; |
| + |
| + /** |
| + * Disables the controls while the dialog is busy. |
| + */ |
| + function disableControls() { |
| + $('cancel').disabled = true; |
| + $('save').disabled = true; |
| + } |
| + |
| + /** |
| + * Close the dialog and pass a result value to the dialog close handler. |
| + * @param {{description: string, details: string, url: string}=} opt_result |
| + * The value to pass to the dialog close handler. |
| + */ |
| + function closeWithResult(opt_result) { |
| + disableControls(); |
| + var json = JSON.stringify(opt_result ? [opt_result] : []); |
| + chrome.send('DialogClose', [json]); |
| + } |
| + |
| + /** |
| + * Sets the text of the dialog's editable text boxes. |
| + * @param {{description: string, details: string, url: string}} details Values |
| + * for corresponding text fields. |
| + */ |
| + function setDetails(details) { |
| + $('description-text').value = details.description; |
| + $('keyword-text').value = details.keyword; |
| + $('url-text').value = details.url; |
| + validate(); |
| + } |
| + |
| + /** |
| + * Updates the validity icon element by changing its style. |
| + * @param {element} element The element to change. |
| + * @param {boolean} valid True if the data is valid. |
| + */ |
| + function setValidImage(element, valid) { |
| + element.className = valid ? 'valid' : 'invalid'; |
| + } |
| + |
| + /** |
| + * Sends all strings to Chrome for validation. Chrome is expected to respond |
| + * by calling setValidation. |
| + */ |
| + function validate() { |
| + chrome.send('requestValidation', [$('description-text').value, |
| + $('keyword-text').value, $('url-text').value]); |
| + } |
| + |
| + /** |
| + * Sets dialog state given the results of the validation of input by Chrome. |
| + * @param {{description: boolean, details: boolean, url: boolean, ok:boolean}} |
| + * details A dictionary of booleans indicating the validation results of |
| + * various parts of the UI. |description|, |details| and |url| indicate |
| + * the validity of the respective text fields, and |ok| indicates whether |
| + * the OK/Save button can be pressed. |
| + */ |
| + function setValidation(details) { |
| + setValidImage($('description-icon'), details.description); |
| + setValidImage($('keyword-icon'), details.keyword); |
| + setValidImage($('url-icon'), details.url); |
| + $('save').disabled = !details.ok; |
| + } |
| + |
| + /** |
| + * Inserts translated strings on loading. |
| + */ |
| + function initialize() { |
| + i18nTemplate.process(document, templateData); |
| + |
| + document.title = chrome.dialogArguments == 'add' ? templateData.titleNew : |
| + templateData.titleEdit; |
| + |
| + $('cancel').onclick = function() { |
| + closeWithResult(); |
| + } |
| + |
| + $('save').onclick = function() { |
| + closeWithResult({description: $('description-text').value, |
| + keyword: $('keyword-text').value, |
| + url: $('url-text').value}); |
| + } |
| + |
| + $('description-text').oninput = validate; |
| + $('keyword-text').oninput = validate; |
| + $('url-text').oninput = validate; |
| + |
| + setValidation({description: false, keyword: false, url: false}); |
| + |
| + chrome.send('requestDetails') |
| + } |
| + |
| + return { |
| + initialize: initialize, |
| + setDetails: setDetails, |
| + setValidation: setValidation, |
| + }; |
| +}); |
| + |
| +document.addEventListener('DOMContentLoaded', |
|
arv (Not doing code reviews)
2011/10/11 17:56:08
I would keep this inside the closure above, then y
|
| + editSearchEngineDialog.initialize); |