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

Side by Side Diff: chrome/browser/resources/options/language_options.js

Issue 12087105: Use drop-down UI for "add language". (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebasing Created 7 years, 10 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
« no previous file with comments | « chrome/browser/resources/options/language_options.css ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // TODO(kochi): Generalize the notification as a component and put it 5 // TODO(kochi): Generalize the notification as a component and put it
6 // in js/cr/ui/notification.js . 6 // in js/cr/ui/notification.js .
7 7
8 cr.define('options', function() { 8 cr.define('options', function() {
9 /** @const */ var OptionsPage = options.OptionsPage; 9 /** @const */ var OptionsPage = options.OptionsPage;
10 /** @const */ var LanguageList = options.LanguageList; 10 /** @const */ var LanguageList = options.LanguageList;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 // Set up the button for editing custom spelling dictionary. 118 // Set up the button for editing custom spelling dictionary.
119 $('edit-dictionary-button').onclick = function(e) { 119 $('edit-dictionary-button').onclick = function(e) {
120 OptionsPage.navigateToPage('editDictionary'); 120 OptionsPage.navigateToPage('editDictionary');
121 }; 121 };
122 $('dictionary-download-retry-button').onclick = function(e) { 122 $('dictionary-download-retry-button').onclick = function(e) {
123 chrome.send('retryDictionaryDownload'); 123 chrome.send('retryDictionaryDownload');
124 }; 124 };
125 } 125 }
126 126
127 if (cr.isChromeOS) { 127 if (cr.isChromeOS) {
128 // Listen to user clicks on the add language list. 128 // Listen to user click on the extension ime button.
129 var addLanguageList = $('add-language-overlay-language-list');
130 addLanguageList.addEventListener(
131 'click',
132 this.handleAddLanguageListClick_.bind(this));
133 $('language-options-extension-ime-button').addEventListener( 129 $('language-options-extension-ime-button').addEventListener(
134 'click', 130 'click',
135 this.handleExtensionImeButtonClick_.bind(this)); 131 this.handleExtensionImeButtonClick_.bind(this));
136 132
137 // Check if there is an Extension IME. 133 // Check if there is an Extension IME.
138 var hasExtensionIme = false; 134 var hasExtensionIme = false;
139 var inputMethods = ($('language-options-input-method-list') 135 var inputMethods = ($('language-options-input-method-list')
140 .querySelectorAll('.input-method')); 136 .querySelectorAll('.input-method'));
141 for (var i = 0, inputMethod; inputMethod = inputMethods[i]; ++i) { 137 for (var i = 0, inputMethod; inputMethod = inputMethods[i]; ++i) {
142 if (inputMethod.querySelector('input') 138 if (inputMethod.querySelector('input')
143 .inputMethodId.match(/^_ext_ime_/)) { 139 .inputMethodId.match(/^_ext_ime_/)) {
144 hasExtensionIme = true; 140 hasExtensionIme = true;
145 break; 141 break;
146 } 142 }
147 } 143 }
148 // Show the Extension IME button only if available. 144 // Show the Extension IME button only if available.
149 $('language-options-extension-ime-button').hidden = !hasExtensionIme; 145 $('language-options-extension-ime-button').hidden = !hasExtensionIme;
150 } else { 146 }
151 // Listen to add language dialog ok button.
152 var addLanguageOkButton = $('add-language-overlay-ok-button');
153 addLanguageOkButton.addEventListener(
154 'click',
155 this.handleAddLanguageOkButtonClick_.bind(this));
156 147
148 // Listen to add language dialog ok button.
149 $('add-language-overlay-ok-button').addEventListener(
150 'click', this.handleAddLanguageOkButtonClick_.bind(this));
151
152 if (!cr.isChromeOS) {
157 // Show experimental features if enabled. 153 // Show experimental features if enabled.
158 if (loadTimeData.getBoolean('enableSpellingAutoCorrect')) 154 if (loadTimeData.getBoolean('enableSpellingAutoCorrect'))
159 $('auto-spell-correction-option').hidden = false; 155 $('auto-spell-correction-option').hidden = false;
160 156
161 // Handle spell check enable/disable. 157 // Handle spell check enable/disable.
162 if (!cr.isMac) { 158 if (!cr.isMac) {
163 Preferences.getInstance().addEventListener( 159 Preferences.getInstance().addEventListener(
164 this.enableSpellCheckPref, 160 this.enableSpellCheckPref,
165 this.updateEnableSpellCheck_.bind(this)); 161 this.updateEnableSpellCheck_.bind(this));
166 } 162 }
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 * @param {Event} e Click event. 665 * @param {Event} e Click event.
670 * @private 666 * @private
671 */ 667 */
672 handleExtensionCheckboxClick_: function(e) { 668 handleExtensionCheckboxClick_: function(e) {
673 var checkbox = e.target; 669 var checkbox = e.target;
674 this.updateFilteredExtensionsFromCheckboxes_(); 670 this.updateFilteredExtensionsFromCheckboxes_();
675 this.saveFilteredExtensionPref_(); 671 this.saveFilteredExtensionPref_();
676 }, 672 },
677 673
678 /** 674 /**
679 * Handles add language list's click event.
680 * @param {Event} e Click event.
681 */
682 handleAddLanguageListClick_: function(e) {
683 var languageOptionsList = $('language-options-list');
684 var languageCode = e.target.languageCode;
685 // languageCode can be undefined, if click was made on some random
686 // place in the overlay, rather than a button. Ignore it.
687 if (!languageCode) {
688 return;
689 }
690 languageOptionsList.addLanguage(languageCode);
691 var inputMethodIds = this.languageCodeToInputMethodIdsMap_[languageCode];
692 // Enable the first input method for the language added.
693 if (inputMethodIds && inputMethodIds[0] &&
694 // Don't add the input method it's already present. This can
695 // happen if the same input method is shared among multiple
696 // languages (ex. English US keyboard is used for English US and
697 // Filipino).
698 this.preloadEngines_.indexOf(inputMethodIds[0]) == -1) {
699 this.preloadEngines_.push(inputMethodIds[0]);
700 this.updateCheckboxesFromPreloadEngines_();
701 this.savePreloadEnginesPref_();
702 }
703 OptionsPage.closeOverlay();
704 },
705
706 /**
707 * Handles extension IME button. 675 * Handles extension IME button.
708 */ 676 */
709 handleExtensionImeButtonClick_: function() { 677 handleExtensionImeButtonClick_: function() {
710 $('language-options-list').clearSelection(); 678 $('language-options-list').clearSelection();
711 679
712 var languageName = $('language-options-language-name'); 680 var languageName = $('language-options-language-name');
713 languageName.textContent = loadTimeData.getString('extension_ime_label'); 681 languageName.textContent = loadTimeData.getString('extension_ime_label');
714 682
715 var uiLanguageMessage = $('language-options-ui-language-message'); 683 var uiLanguageMessage = $('language-options-ui-language-message');
716 uiLanguageMessage.textContent = 684 uiLanguageMessage.textContent =
(...skipping 18 matching lines...) Expand all
735 method.hidden = true; 703 method.hidden = true;
736 } 704 }
737 }, 705 },
738 706
739 handleAddLanguageOkButtonClick_: function() { 707 handleAddLanguageOkButtonClick_: function() {
740 var languagesSelect = $('add-language-overlay-language-list'); 708 var languagesSelect = $('add-language-overlay-language-list');
741 var selectedIndex = languagesSelect.selectedIndex; 709 var selectedIndex = languagesSelect.selectedIndex;
742 if (selectedIndex >= 0) { 710 if (selectedIndex >= 0) {
743 var selection = languagesSelect.options[selectedIndex]; 711 var selection = languagesSelect.options[selectedIndex];
744 $('language-options-list').addLanguage(String(selection.value)); 712 $('language-options-list').addLanguage(String(selection.value));
713 if (cr.isChromeOS) {
714 var inputMethodIds =
715 this.languageCodeToInputMethodIdsMap_[selection.value];
716 // Enable the first input method for the language added.
717 if (inputMethodIds && inputMethodIds[0] &&
718 // Don't add the input method it's already present. This can
719 // happen if the same input method is shared among multiple
720 // languages (ex. English US keyboard is used for English US and
721 // Filipino).
722 this.preloadEngines_.indexOf(inputMethodIds[0]) == -1) {
723 this.preloadEngines_.push(inputMethodIds[0]);
724 this.updateCheckboxesFromPreloadEngines_();
725 this.savePreloadEnginesPref_();
726 }
727 }
745 OptionsPage.closeOverlay(); 728 OptionsPage.closeOverlay();
746 } 729 }
747 }, 730 },
748 731
749 /** 732 /**
750 * Checks if languageCode is deletable or not. 733 * Checks if languageCode is deletable or not.
751 * @param {string} languageCode the languageCode to check for deletability. 734 * @param {string} languageCode the languageCode to check for deletability.
752 */ 735 */
753 languageIsDeletable: function(languageCode) { 736 languageIsDeletable: function(languageCode) {
754 // Don't allow removing the language if it's a UI language. 737 // Don't allow removing the language if it's a UI language.
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
1105 1088
1106 LanguageOptions.onDictionaryDownloadFailure = function(languageCode) { 1089 LanguageOptions.onDictionaryDownloadFailure = function(languageCode) {
1107 LanguageOptions.getInstance().onDictionaryDownloadFailure_(languageCode); 1090 LanguageOptions.getInstance().onDictionaryDownloadFailure_(languageCode);
1108 }; 1091 };
1109 1092
1110 // Export 1093 // Export
1111 return { 1094 return {
1112 LanguageOptions: LanguageOptions 1095 LanguageOptions: LanguageOptions
1113 }; 1096 };
1114 }); 1097 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/options/language_options.css ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698