Index: third_party/google_input_tools/src/chrome/os/inputview/layouts/util.js |
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/layouts/util.js b/third_party/google_input_tools/src/chrome/os/inputview/layouts/util.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..00ca9441ff9066fd1ef1ebc56327ff32e76cfd18 |
--- /dev/null |
+++ b/third_party/google_input_tools/src/chrome/os/inputview/layouts/util.js |
@@ -0,0 +1,221 @@ |
+// 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.layouts.util'); |
+goog.require('i18n.input.chrome.inputview.Css'); |
+goog.require('i18n.input.chrome.inputview.elements.ElementType'); |
+ |
+ |
+ |
+goog.scope(function() { |
+var ElementType = i18n.input.chrome.inputview.elements.ElementType; |
+ |
+ |
+/** |
+ * The id for the key. |
+ * |
+ * @type {number} |
+ * @private |
+ */ |
+i18n.input.chrome.inputview.layouts.util.keyId_ = 0; |
+ |
+ |
+/** |
+ * The prefix of the key id, it's overwritten by layout file. |
+ * |
+ * @type {string} |
+ */ |
+i18n.input.chrome.inputview.layouts.util.keyIdPrefix = ''; |
+ |
+/** |
+ * Resets id counter for keys in preparation for processing a new layout. |
+ * @param {string} prefix The prefix for the key id. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.setPrefix = function(prefix) { |
+ i18n.input.chrome.inputview.layouts.util.keyIdPrefix = prefix; |
+ i18n.input.chrome.inputview.layouts.util.keyId_ = 0; |
+}; |
+ |
+/** |
+ * Creates a sequence of key with the same specification. |
+ * |
+ * @param {!Object} spec The specification. |
+ * @param {number} num How many keys. |
+ * @return {!Array.<Object>} The keys. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.createKeySequence = function(spec, |
+ num) { |
+ var sequence = []; |
+ for (var i = 0; i < num; i++) { |
+ sequence.push(i18n.input.chrome.inputview.layouts.util.createKey(spec)); |
+ } |
+ return sequence; |
+}; |
+ |
+ |
+/** |
+ * Creates a soft key view. |
+ * |
+ * @param {!Object} spec The specification. |
+ * @param {string=} opt_id The id. |
+ * @return {!Object} The soft key view. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.createKey = function(spec, opt_id) { |
+ var id = i18n.input.chrome.inputview.layouts.util.keyIdPrefix + |
+ i18n.input.chrome.inputview.layouts.util.keyId_++; |
+ return i18n.input.chrome.inputview.layouts.util.createElem( |
+ ElementType.SOFT_KEY_VIEW, spec, id); |
+}; |
+ |
+ |
+/** |
+ * Creates a linear layout. |
+ * |
+ * @param {!Object} spec The specification. |
+ * @param {string=} opt_id The id. |
+ * @return {!Object} The linear layout. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.createLinearLayout = function(spec, |
+ opt_id) { |
+ return i18n.input.chrome.inputview.layouts.util.createElem( |
+ ElementType.LINEAR_LAYOUT, spec, opt_id, spec['iconCssClass']); |
+}; |
+ |
+ |
+/** |
+ * Creates an extended layout. |
+ * |
+ * @param {!Object} spec The specification. |
+ * @param {string=} opt_id The id. |
+ * @return {!Object} The extended layout. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.createExtendedLayout = function(spec, |
+ opt_id) { |
+ return i18n.input.chrome.inputview.layouts.util.createElem( |
+ ElementType.EXTENDED_LAYOUT, spec, opt_id, spec['iconCssClass']); |
+}; |
+ |
+ |
+/** |
+ * Creates a handwriting layout. |
+ * |
+ * @param {!Object} spec The specification. |
+ * @param {string=} opt_id The id. |
+ * @return {!Object} The handwriting layout. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.createHandwritingLayout = |
+ function(spec, opt_id) { |
+ return i18n.input.chrome.inputview.layouts.util.createElem( |
+ ElementType.HANDWRITING_LAYOUT, spec, opt_id); |
+}; |
+ |
+ |
+/** |
+ * Creates a vertical layout. |
+ * |
+ * @param {!Object} spec The specification. |
+ * @param {string=} opt_id The id. |
+ * @return {!Object} The vertical layout. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.createVerticalLayout = function(spec, |
+ opt_id) { |
+ return i18n.input.chrome.inputview.layouts.util.createElem( |
+ ElementType.VERTICAL_LAYOUT, spec, opt_id); |
+}; |
+ |
+ |
+/** |
+ * Creates a layout view. |
+ * |
+ * @param {!Object} spec The specification. |
+ * @param {string=} opt_id The id. |
+ * @return {!Object} The view. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.createLayoutView = function(spec, |
+ opt_id) { |
+ return i18n.input.chrome.inputview.layouts.util.createElem( |
+ ElementType.LAYOUT_VIEW, spec, opt_id); |
+}; |
+ |
+ |
+/** |
+ * Creates a candidate view. |
+ * |
+ * @param {!Object} spec The specification. |
+ * @param {string=} opt_id The id. |
+ * @return {!Object} The view. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.createCandidateView = function(spec, |
+ opt_id) { |
+ return i18n.input.chrome.inputview.layouts.util.createElem( |
+ ElementType.CANDIDATE_VIEW, spec, opt_id); |
+}; |
+ |
+ |
+/** |
+ * Creates a canvas view. |
+ * |
+ * @param {!Object} spec The specification. |
+ * @param {string=} opt_id The id. |
+ * @return {!Object} The view. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.createCanvasView = function(spec, |
+ opt_id) { |
+ return i18n.input.chrome.inputview.layouts.util.createElem( |
+ ElementType.CANVAS_VIEW, spec, opt_id); |
+}; |
+ |
+ |
+/** |
+ * Creates the keyboard. |
+ * |
+ * @param {Object} spec The specification. |
+ * @param {string=} opt_id The id. |
+ * @return {Object} The keyboard. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.createKeyboard = function(spec, |
+ opt_id) { |
+ return i18n.input.chrome.inputview.layouts.util.createElem( |
+ ElementType.KEYBOARD, spec, opt_id); |
+}; |
+ |
+ |
+/** |
+ * Creates an element which could be any type, such as soft key view, layout, |
+ * etc. |
+ * |
+ * @param {!ElementType} type The type. |
+ * @param {Object} spec The specification. |
+ * @param {string=} opt_id The id. |
+ * @param {i18n.input.chrome.inputview.Css=} opt_iconCssClass The Css class. |
+ * @return {!Object} The element. |
+ */ |
+i18n.input.chrome.inputview.layouts.util.createElem = function(type, spec, |
+ opt_id, opt_iconCssClass) { |
+ var newSpec = {}; |
+ for (var key in spec) { |
+ newSpec[key] = spec[key]; |
+ } |
+ newSpec['type'] = type; |
+ if (opt_id) { |
+ newSpec['id'] = opt_id; |
+ } |
+ if (opt_iconCssClass) { |
+ newSpec['iconCssClass'] = opt_iconCssClass; |
+ } |
+ return { |
+ 'spec': newSpec |
+ }; |
+}; |
+ |
+}); // goog.scope |