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

Unified Diff: third_party/google_input_tools/src/chrome/os/inputview/elements/content/gesturepreviewview.js

Issue 1257313003: Update Google Input Tools (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Free up grd resources. Created 5 years, 5 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/elements/content/gesturepreviewview.js
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/gesturepreviewview.js b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/gesturepreviewview.js
new file mode 100644
index 0000000000000000000000000000000000000000..d48e9d4b7aa8ae0899930ea4ffa40106897f562b
--- /dev/null
+++ b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/gesturepreviewview.js
@@ -0,0 +1,175 @@
+// Copyright 2015 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.elements.content.GesturePreviewView');
+
+goog.require('goog.dom.classlist');
+goog.require('goog.object');
+goog.require('goog.style');
+goog.require('i18n.input.chrome.inputview.Css');
+goog.require('i18n.input.chrome.inputview.elements.Element');
+goog.require('i18n.input.chrome.inputview.elements.ElementType');
+
+
+goog.scope(function() {
+var ElementType = i18n.input.chrome.inputview.elements.ElementType;
+
+
+/**
+ * Converts cooridnate in the keyboard window to coordinate in screen.
+ *
+ * @param {goog.math.Coordinate} coordinate The coordinate in keyboard window.
+ * @return {goog.math.Coordinate} The cooridnate in screen.
+ */
+function convertToScreenCoordinate(coordinate) {
+ var screenCoordinate = coordinate.clone();
+ // This is a hack. Ideally, we should be able to use window.screenX/Y to get
+ // cooridnate of the top left corner of VK window. But VK window is special
+ // and the values are set to 0 all the time. We should fix the problem in
+ // Chrome.
+ screenCoordinate.y += screen.height - window.innerHeight;
+ return screenCoordinate;
+};
+
+
+
+/**
+ * The view for the gesture preview.
+ *
+ * @param {goog.events.EventTarget=} opt_eventTarget The parent event target.
+ * @constructor
+ * @extends {i18n.input.chrome.inputview.elements.Element}
+ */
+i18n.input.chrome.inputview.elements.content.GesturePreviewView = function(
+ opt_eventTarget) {
+ goog.base(this, '', ElementType.GESTURE_PREVIEW_VIEW, opt_eventTarget);
+
+ /**
+ * The window that shows the gesture preview.
+ *
+ * @type {chrome.app.window.AppWindow}
+ * @private
+ */
+ this.gesturePreviewWindow_ = null;
+};
+goog.inherits(i18n.input.chrome.inputview.elements.content.GesturePreviewView,
+ i18n.input.chrome.inputview.elements.Element);
+var GesturePreviewView = i18n.input.chrome.inputview.elements.content.
+ GesturePreviewView;
+
+
+/**
+ * The URL of the window which displays the gesture preview.
+ *
+ * @const {string}
+ * @private
+ */
+GesturePreviewView.GESTURE_PREVIEW_URL_ = 'imewindows/gesturepreview.html';
+
+
+/**
+ * The ID of the floating window created by this view.
+ *
+ * @const {string}
+ * @private
+ */
+GesturePreviewView.WINDOW_ID_ = 'gesture_preview_window';
+
+
+/**
+ * True if show was called and false if hide was called.
+ *
+ * @type {boolean}
+ * @private
+ */
+GesturePreviewView.prototype.visible_ = false;
+
+
+/** @override */
+GesturePreviewView.prototype.createDom = function() {
+ goog.base(this, 'createDom');
+
+ // This class does not have any DOM in the input view.
+};
+
+
+/**
+ * Shows gesture preview window.
+ *
+ * @param {!string} word The word to display in the preview window.
+ */
+GesturePreviewView.prototype.show = function(word) {
+ if (!(chrome.app.window && chrome.app.window.create)) {
+ // If the IME window is not available, do not show anything at all.
+ return;
+ }
+ if (this.gesturePreviewWindow_ &&
+ this.gesturePreviewWindow_.contentWindow.gesturePreview) {
+ // If the window was already created, just update and show it.
+ this.gesturePreviewWindow_.contentWindow.gesturePreview.setPreviewWord(
+ word);
+ this.gesturePreviewWindow_.show();
+ this.visible_ = true;
+ return;
+ }
+ this.visible_ = true;
+
+ // TODO: Use convertToScreenCoordinate from altDataView to determine the
+ // correct place to initially position the window.
+ var windowBounds = goog.object.create('left', 0, 'top', 0, 'width', 140,
+ 'height', 40);
+ var self = this;
+ inputview.createWindow(
+ chrome.runtime.getURL(GesturePreviewView.GESTURE_PREVIEW_URL_),
+ goog.object.create('outerBounds', windowBounds, 'frame', 'none',
+ 'hidden', true, 'alphaEnabled', true,
+ // Set the optional id parameter to ensure a unique window is created.
+ 'id', GesturePreviewView.WINDOW_ID_),
+ function(newWindow) {
+ self.gesturePreviewWindow_ = newWindow;
+ var contentWindow = self.gesturePreviewWindow_.contentWindow;
+ contentWindow.addEventListener('load', function() {
+ contentWindow.gesturePreview.setPreviewWord(word);
+ // Function hide maybe called before loading complete. Do not show
+ // the window in this case.
+ if (self.visible_) {
+ self.gesturePreviewWindow_.show();
+ } else {
+ self.hide();
+ }
+ });
+ });
+};
+
+
+/**
+ * Hides the gesture preview window.
+ */
+GesturePreviewView.prototype.hide = function() {
+ this.visible_ = false;
+ if (this.gesturePreviewWindow_) {
+ this.gesturePreviewWindow_.close();
+ this.gesturePreviewWindow_ = null;
+ }
+ goog.style.setElementShown(this.getElement(), false);
+};
+
+
+/** @override */
+GesturePreviewView.prototype.resize = function(width, height) {
+ goog.base(this, 'resize', width, height);
+
+ this.hide();
+};
+
+}); // goog.scope

Powered by Google App Engine
This is Rietveld 408576698