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

Unified Diff: third_party/google_input_tools/src/chrome/os/inputview/model.js

Issue 674153004: Add third_party/google-input-tools: Take 2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@google_input_tools
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: third_party/google_input_tools/src/chrome/os/inputview/model.js
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/model.js b/third_party/google_input_tools/src/chrome/os/inputview/model.js
new file mode 100644
index 0000000000000000000000000000000000000000..d70d9f54eb62f8f942e38dd7a8be78e3fa37ab68
--- /dev/null
+++ b/third_party/google_input_tools/src/chrome/os/inputview/model.js
@@ -0,0 +1,166 @@
+// 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.Model');
+
+goog.require('goog.array');
+goog.require('goog.events.EventTarget');
+goog.require('goog.net.jsloader');
+goog.require('i18n.input.chrome.inputview.ConditionName');
+goog.require('i18n.input.chrome.inputview.Settings');
+goog.require('i18n.input.chrome.inputview.SpecNodeName');
+goog.require('i18n.input.chrome.inputview.StateManager');
+goog.require('i18n.input.chrome.inputview.events.ConfigLoadedEvent');
+goog.require('i18n.input.chrome.inputview.events.LayoutLoadedEvent');
+
+goog.scope(function() {
+var SpecNodeName = i18n.input.chrome.inputview.SpecNodeName;
+
+
+
+/**
+ * The model.
+ * @constructor
+ * @extends {goog.events.EventTarget}
+ */
+i18n.input.chrome.inputview.Model = function() {
+ goog.base(this);
+
+ /**
+ * The state manager.
+ *
+ * @type {!i18n.input.chrome.inputview.StateManager}
+ */
+ this.stateManager = new i18n.input.chrome.inputview.StateManager();
+
+ /**
+ * The configuration.
+ *
+ * @type {!i18n.input.chrome.inputview.Settings}
+ */
+ this.settings = new i18n.input.chrome.inputview.Settings();
+
+ /** @private {!Array.<string>} */
+ this.loadingResources_ = [];
+
+ goog.exportSymbol('google.ime.chrome.inputview.onLayoutLoaded',
+ goog.bind(this.onLayoutLoaded_, this));
+ goog.exportSymbol('google.ime.chrome.inputview.onConfigLoaded',
+ goog.bind(this.onConfigLoaded_, this));
+};
+var Model = i18n.input.chrome.inputview.Model;
+goog.inherits(Model, goog.events.EventTarget);
+
+
+/**
+ * The path to the layouts directory.
+ *
+ * @type {string}
+ * @private
+ */
+Model.LAYOUTS_PATH_ =
+ '/inputview_layouts/';
+
+
+/**
+ * The path to the content directory.
+ *
+ * @type {string}
+ * @private
+ */
+Model.CONTENT_PATH_ =
+ '/config/';
+
+
+/**
+ * Callback when configuration is loaded.
+ *
+ * @param {!Object} data The configuration data.
+ * @private
+ */
+Model.prototype.onConfigLoaded_ = function(data) {
+ goog.array.remove(this.loadingResources_, this.getConfigUrl_(
+ data[SpecNodeName.ID]));
+ this.dispatchEvent(new i18n.input.chrome.inputview.events.ConfigLoadedEvent(
+ data));
+};
+
+
+/**
+ * Gets the layout url.
+ *
+ * @param {string} layout .
+ * @private
+ * @return {string} The url of the layout data.
+ */
+Model.prototype.getLayoutUrl_ = function(layout) {
+ return Model.LAYOUTS_PATH_ + layout + '.js';
+};
+
+
+/**
+ * Gets the keyset configuration url.
+ *
+ * @param {string} keyset .
+ * @private
+ * @return {string} .
+ */
+Model.prototype.getConfigUrl_ = function(keyset) {
+ // Strips out all the suffixes in the keyboard code.
+ var configId = keyset.replace(/\..*$/, '');
+ return Model.CONTENT_PATH_ + configId + '.js';
+};
+
+
+/**
+ * Callback when layout is loaded.
+ *
+ * @param {!Object} data The layout data.
+ * @private
+ */
+Model.prototype.onLayoutLoaded_ = function(data) {
+ goog.array.remove(this.loadingResources_, this.getLayoutUrl_(data[
+ SpecNodeName.LAYOUT_ID]));
+ this.dispatchEvent(new i18n.input.chrome.inputview.events.LayoutLoadedEvent(
+ data));
+};
+
+
+/**
+ * Loads a layout.
+ *
+ * @param {string} layout The layout name.
+ */
+Model.prototype.loadLayout = function(layout) {
+ var url = this.getLayoutUrl_(layout);
+ if (!goog.array.contains(this.loadingResources_, url)) {
+ this.loadingResources_.push(url);
+ goog.net.jsloader.load(url);
+ }
+};
+
+
+/**
+ * Loads the configuration for the keyboard code.
+ *
+ * @param {string} keyboardCode The keyboard code.
+ */
+Model.prototype.loadConfig = function(keyboardCode) {
+ var url = this.getConfigUrl_(keyboardCode);
+ if (!goog.array.contains(this.loadingResources_, url)) {
+ this.loadingResources_.push(url);
+ goog.net.jsloader.load(url);
+ }
+};
+
+}); // goog.scope

Powered by Google App Engine
This is Rietveld 408576698