| 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
|
|
|