| 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..0d9cdb375966bb2343c7f488b399d1e0e2922773
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/edit_search_engine_dialog.js
|
| @@ -0,0 +1,122 @@
|
| +// 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 {Object} 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;
|
| + }
|
| +
|
| + /**
|
| + * Reverses the order of child nodes.
|
| + * @param {HTMLElement} parent The parent node whose children are to be
|
| + * reversed.
|
| + */
|
| + function reverseChildren(parent) {
|
| + var childNodes = parent.childNodes;
|
| + for (var i = childNodes.length - 1; i >= 0; i--)
|
| + parent.appendChild(childNodes[i]);
|
| + };
|
| +
|
| + var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);
|
| +
|
| + /**
|
| + * 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});
|
| + if (cr.isViews)
|
| + forEach(document.querySelectorAll('.button-strip'), reverseChildren);
|
| + chrome.send('requestDetails')
|
| + }
|
| +
|
| + document.addEventListener('DOMContentLoaded', initialize);
|
| +
|
| + return {
|
| + setDetails: setDetails,
|
| + setValidation: setValidation,
|
| + };
|
| +});
|
| +
|
| +
|
|
|