| Index: third_party/google_input_tools/src/chrome/os/inputview/config/compact_util.js
|
| diff --git a/third_party/google_input_tools/src/chrome/os/inputview/config/compact_util.js b/third_party/google_input_tools/src/chrome/os/inputview/config/compact_util.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3257a04ed050bd9c228fffd88a68dca1b16751f7
|
| --- /dev/null
|
| +++ b/third_party/google_input_tools/src/chrome/os/inputview/config/compact_util.js
|
| @@ -0,0 +1,378 @@
|
| +// Copyright 2014 The ChromeOS IME Authors. All Rights Reserved.
|
| +// limitations under the License.
|
| +// See the License for the specific language governing permissions and
|
| +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| +// distributed under the License is distributed on an "AS-IS" BASIS,
|
| +// Unless required by applicable law or agreed to in writing, software
|
| +//
|
| +// http://www.apache.org/licenses/LICENSE-2.0
|
| +//
|
| +// You may obtain a copy of the License at
|
| +// you may not use this file except in compliance with the License.
|
| +// Licensed under the Apache License, Version 2.0 (the "License");
|
| +//
|
| +goog.provide('i18n.input.chrome.inputview.content.compact.util');
|
| +goog.provide('i18n.input.chrome.inputview.content.compact.util.CompactKeysetSpec');
|
| +
|
| +goog.require('i18n.input.chrome.inputview.Css');
|
| +goog.require('i18n.input.chrome.inputview.content.constants');
|
| +goog.require('i18n.input.chrome.inputview.elements.ElementType');
|
| +
|
| +goog.scope(function() {
|
| +var util = i18n.input.chrome.inputview.content.compact.util;
|
| +var Css = i18n.input.chrome.inputview.Css;
|
| +
|
| +
|
| +/**
|
| + * The compact layout keyset type.
|
| + *
|
| + * @enum {string}
|
| + */
|
| +util.CompactKeysetSpec = {
|
| + ID: 'id',
|
| + LAYOUT: 'layout',
|
| + DATA: 'data'
|
| +};
|
| +
|
| +
|
| +/**
|
| + * @desc The name of the layout providing numbers from 0-9 and common
|
| + * symbols.
|
| + */
|
| +util.MSG_NUMBER_AND_SYMBOL =
|
| + goog.getMsg('number and symbol layout');
|
| +
|
| +
|
| +/**
|
| + * @desc The name of the layout providing more symbols.
|
| + */
|
| +util.MSG_MORE_SYMBOLS =
|
| + goog.getMsg('more symbols layout');
|
| +
|
| +
|
| +/**
|
| + * @desc The name of the main layout.
|
| + */
|
| +util.MSG_MAIN_LAYOUT = goog.getMsg('main layout');
|
| +
|
| +
|
| +/**
|
| + * @desc The name of the english main layout.
|
| + */
|
| +util.MSG_ENG_MAIN_LAYOUT = goog.getMsg('english main layout');
|
| +
|
| +
|
| +/**
|
| + * @desc The name of the english layout providing numbers from 0-9 and common.
|
| + */
|
| +util.MSG_ENG_MORE_SYMBOLS =
|
| + goog.getMsg('english more symbols layout');
|
| +
|
| +
|
| +/**
|
| + * @desc The name of the english layout providing more symbols.
|
| + */
|
| +util.MSG_ENG_NUMBER_AND_SYMBOL =
|
| + goog.getMsg('english number and symbol layout');
|
| +
|
| +
|
| +/**
|
| + * Creates the compact key data.
|
| + *
|
| + * @param {!Object} keysetSpec The keyset spec.
|
| + * @param {string} viewIdPrefix The prefix of the view.
|
| + * @param {string} keyIdPrefix The prefix of the key.
|
| + * @return {!Object} The key data.
|
| + */
|
| +util.createCompactData = function(keysetSpec, viewIdPrefix, keyIdPrefix) {
|
| + var keyList = [];
|
| + var mapping = {};
|
| + var keysetSpecNode = util.CompactKeysetSpec;
|
| + for (var i = 0; i < keysetSpec[keysetSpecNode.DATA].length; i++) {
|
| + var keySpec = keysetSpec[keysetSpecNode.DATA][i];
|
| + if (keySpec ==
|
| + i18n.input.chrome.inputview.content.constants.NonLetterKeys.MENU) {
|
| + keySpec['toKeyset'] = keysetSpec[keysetSpecNode.ID].split('.')[0];
|
| + }
|
| + var id = keySpec['id'] ? keySpec['id'] : keyIdPrefix + i;
|
| + var key = util.createCompactKey(id, keySpec);
|
| + keyList.push(key);
|
| + mapping[key['spec']['id']] = viewIdPrefix + i;
|
| + }
|
| +
|
| + return {
|
| + 'keyList': keyList,
|
| + 'mapping': mapping,
|
| + 'layout': keysetSpec[keysetSpecNode.LAYOUT]
|
| + };
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Creates a key in the compact keyboard.
|
| + *
|
| + * @param {string} id The id.
|
| + * @param {!Object} keySpec The specification.
|
| + * @return {!Object} The compact key.
|
| + */
|
| +util.createCompactKey = function(id, keySpec) {
|
| + var spec = keySpec;
|
| + spec['id'] = id;
|
| + if (!spec['type'])
|
| + spec['type'] = i18n.input.chrome.inputview.elements.ElementType.COMPACT_KEY;
|
| +
|
| + var newSpec = {};
|
| + for (var key in spec) {
|
| + newSpec[key] = spec[key];
|
| + }
|
| +
|
| + return {
|
| + 'spec': newSpec
|
| + };
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Customize the switcher keys in key characters.
|
| + *
|
| + * @param {!Array.<!Object>} keyCharacters The key characters.
|
| + * @param {!Array.<!Object>} switcherKeys The customized switcher keys.
|
| + */
|
| +util.customizeSwitchers = function(keyCharacters, switcherKeys) {
|
| + var j = 0;
|
| + for (var i = 0; i < keyCharacters.length; i++) {
|
| + if (keyCharacters[i] ==
|
| + i18n.input.chrome.inputview.content.constants.NonLetterKeys.SWITCHER) {
|
| + if (j >= switcherKeys.length) {
|
| + console.error('The number of switcher key spec is less than' +
|
| + ' the number of switcher keys in the keyset.');
|
| + return;
|
| + }
|
| + var newSpec = switcherKeys[j++];
|
| + for (var key in keyCharacters[i]) {
|
| + newSpec[key] = keyCharacters[i][key];
|
| + }
|
| + keyCharacters[i] = newSpec;
|
| + }
|
| + }
|
| + if (j < switcherKeys.length - 1) {
|
| + console.error('The number of switcher key spec is more than' +
|
| + ' the number of switcher keys in the keyset.');
|
| + }
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Generates letter, symbol and more compact keysets and load them.
|
| + *
|
| + * @param {!Object} letterKeysetSpec The spec of letter keyset.
|
| + * @param {!Object} symbolKeysetSpec The spec of symbol keyset.
|
| + * @param {!Object} moreKeysetSpec The spec of more keyset.
|
| + * @param {!function(!Object): void} onLoaded The function to call once a keyset
|
| + * data is ready.
|
| + */
|
| +util.generateCompactKeyboard =
|
| + function(letterKeysetSpec, symbolKeysetSpec, moreKeysetSpec, onLoaded) {
|
| + // Creates compacty qwerty keyset.
|
| + var keysetSpecNode = util.CompactKeysetSpec;
|
| + util.customizeSwitchers(
|
| + letterKeysetSpec[keysetSpecNode.DATA],
|
| + [{ 'name': '?123',
|
| + 'toKeyset': symbolKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_NUMBER_AND_SYMBOL
|
| + }]);
|
| +
|
| + var data = util.createCompactData(
|
| + letterKeysetSpec, 'compactkbd-k-', 'compactkbd-k-key-');
|
| + data['id'] = letterKeysetSpec[keysetSpecNode.ID];
|
| + data['showMenuKey'] = true;
|
| + onLoaded(data);
|
| +
|
| + // Creates compacty symbol keyset.
|
| + util.customizeSwitchers(
|
| + symbolKeysetSpec[keysetSpecNode.DATA],
|
| + [{ 'name': '~[<',
|
| + 'toKeyset': moreKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_MORE_SYMBOLS
|
| + },
|
| + { 'name': '~[<',
|
| + 'toKeyset': moreKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_MORE_SYMBOLS
|
| + },
|
| + { 'name': 'abc',
|
| + 'toKeyset': letterKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_MAIN_LAYOUT
|
| + }]);
|
| + data = util.createCompactData(
|
| + symbolKeysetSpec, 'compactkbd-k-', 'compactkbd-k-key-');
|
| + data['id'] = symbolKeysetSpec[keysetSpecNode.ID];
|
| + data['showMenuKey'] = false;
|
| + data['noShift'] = true;
|
| + onLoaded(data);
|
| +
|
| + // Creates compact more keyset.
|
| + util.customizeSwitchers(
|
| + moreKeysetSpec[keysetSpecNode.DATA],
|
| + [{ 'name': '?123',
|
| + 'toKeyset': symbolKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_NUMBER_AND_SYMBOL
|
| + },
|
| + { 'name': '?123',
|
| + 'toKeyset': symbolKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_NUMBER_AND_SYMBOL
|
| + },
|
| + { 'name': 'abc',
|
| + 'toKeyset': letterKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_MAIN_LAYOUT
|
| + }]);
|
| + data = util.createCompactData(moreKeysetSpec, 'compactkbd-k-',
|
| + 'compactkbd-k-key-');
|
| + data['id'] = moreKeysetSpec[keysetSpecNode.ID];
|
| + data['showMenuKey'] = false;
|
| + data['noShift'] = true;
|
| + onLoaded(data);
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Generates letter, symbol and more compact keysets for
|
| + * pinyin's chinese and english mode and load them.
|
| + *
|
| + * @param {!Object} letterKeysetSpec The spec of letter keyset.
|
| + * @param {!Object} engKeysetSpec The english spec of letter keyset
|
| + * @param {!Object} symbolKeysetSpec The spec of symbol keyset.
|
| + * @param {!Object} engSymbolKeysetSpec The spec of engish symbol keyset.
|
| + * @param {!Object} moreKeysetSpec The spec of more keyset.
|
| + * @param {!Object} engMoreKeysetSpec The spec of english more keyset.
|
| + * @param {!function(!Object): void} onLoaded The function to call once a keyset
|
| + * data is ready.
|
| + */
|
| +util.generatePinyinCompactKeyboard = function(letterKeysetSpec, engKeysetSpec,
|
| + symbolKeysetSpec, engSymbolKeysetSpec,
|
| + moreKeysetSpec, engMoreKeysetSpec, onLoaded) {
|
| + // Creates compacty qwerty keyset for pinyin.
|
| + var keysetSpecNode = util.CompactKeysetSpec;
|
| + util.customizeSwitchers(
|
| + letterKeysetSpec[keysetSpecNode.DATA],
|
| + [{ 'name': '?123',
|
| + 'toKeyset': symbolKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_NUMBER_AND_SYMBOL
|
| + },
|
| + { 'toKeyset': engKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_ENG_MAIN_LAYOUT,
|
| + 'iconCssClass': Css.SWITCHER_CHINESE
|
| + }]);
|
| +
|
| + var data = util.createCompactData(
|
| + letterKeysetSpec, 'compactkbd-k-', 'compactkbd-k-key-');
|
| + data['id'] = letterKeysetSpec[keysetSpecNode.ID];
|
| + data['showMenuKey'] = true;
|
| + onLoaded(data);
|
| +
|
| + // Creates the compacty qwerty keyset for pinyin's English mode.
|
| + util.customizeSwitchers(
|
| + engKeysetSpec[keysetSpecNode.DATA],
|
| + [{ 'name': '?123',
|
| + 'toKeyset': engSymbolKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_ENG_NUMBER_AND_SYMBOL
|
| + },
|
| + { 'toKeyset': letterKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_MAIN_LAYOUT,
|
| + 'iconCssClass': Css.SWITCHER_ENGLISH
|
| + }]);
|
| +
|
| + data = util.createCompactData(
|
| + engKeysetSpec, 'compactkbd-k-', 'compactkbd-k-key-');
|
| + data['id'] = engKeysetSpec[keysetSpecNode.ID];
|
| + data['showMenuKey'] = true;
|
| + onLoaded(data);
|
| +
|
| + // Creates compacty symbol keyset for pinyin.
|
| + util.customizeSwitchers(
|
| + symbolKeysetSpec[keysetSpecNode.DATA],
|
| + [{ 'name': '~[<',
|
| + 'toKeyset': moreKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_MORE_SYMBOLS
|
| + },
|
| + { 'name': '~[<',
|
| + 'toKeyset': moreKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_MORE_SYMBOLS
|
| + },
|
| + { 'name': 'abc',
|
| + 'toKeyset': letterKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_MAIN_LAYOUT
|
| + }]);
|
| + data = util.createCompactData(
|
| + symbolKeysetSpec, 'compactkbd-k-', 'compactkbd-k-key-');
|
| + data['id'] = symbolKeysetSpec[keysetSpecNode.ID];
|
| + data['showMenuKey'] = false;
|
| + data['noShift'] = true;
|
| + onLoaded(data);
|
| +
|
| + // Creates compacty symbol keyset for English mode.
|
| + util.customizeSwitchers(
|
| + engSymbolKeysetSpec[keysetSpecNode.DATA],
|
| + [{ 'name': '~[<',
|
| + 'toKeyset': engMoreKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_ENG_MORE_SYMBOLS
|
| + },
|
| + { 'name': '~[<',
|
| + 'toKeyset': engMoreKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_ENG_MORE_SYMBOLS
|
| + },
|
| + { 'name': 'abc',
|
| + 'toKeyset': engKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_ENG_MAIN_LAYOUT
|
| + }]);
|
| + data = util.createCompactData(
|
| + engSymbolKeysetSpec, 'compactkbd-k-', 'compactkbd-k-key-');
|
| + data['id'] = engSymbolKeysetSpec[keysetSpecNode.ID];
|
| + data['showMenuKey'] = false;
|
| + data['noShift'] = true;
|
| + onLoaded(data);
|
| +
|
| + // Creates compact more keyset for pinyin.
|
| + util.customizeSwitchers(
|
| + moreKeysetSpec[keysetSpecNode.DATA],
|
| + [{ 'name': '?123',
|
| + 'toKeyset': symbolKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_NUMBER_AND_SYMBOL
|
| + },
|
| + { 'name': '?123',
|
| + 'toKeyset': symbolKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_NUMBER_AND_SYMBOL
|
| + },
|
| + { 'name': 'abc',
|
| + 'toKeyset': letterKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_MAIN_LAYOUT
|
| + }]);
|
| + data = util.createCompactData(moreKeysetSpec, 'compactkbd-k-',
|
| + 'compactkbd-k-key-');
|
| + data['id'] = moreKeysetSpec[keysetSpecNode.ID];
|
| + data['showMenuKey'] = false;
|
| + data['noShift'] = true;
|
| + onLoaded(data);
|
| +
|
| + // Creates the compact more keyset of english mode.
|
| + util.customizeSwitchers(
|
| + engMoreKeysetSpec[keysetSpecNode.DATA],
|
| + [{ 'name': '?123',
|
| + 'toKeyset': engSymbolKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_ENG_NUMBER_AND_SYMBOL
|
| + },
|
| + { 'name': '?123',
|
| + 'toKeyset': engSymbolKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_ENG_NUMBER_AND_SYMBOL
|
| + },
|
| + { 'name': 'abc',
|
| + 'toKeyset': engKeysetSpec[keysetSpecNode.ID],
|
| + 'toKeysetName': util.MSG_ENG_MAIN_LAYOUT
|
| + }]);
|
| + data = util.createCompactData(engMoreKeysetSpec, 'compactkbd-k-',
|
| + 'compactkbd-k-key-');
|
| + data['id'] = engMoreKeysetSpec[keysetSpecNode.ID];
|
| + data['showMenuKey'] = false;
|
| + data['noShift'] = true;
|
| + onLoaded(data);
|
| +};
|
| +}); // goog.scope
|
|
|