Index: third_party/google_input_tools/src/chrome/os/inputview/imewindows/accents.js |
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/imewindows/accents.js b/third_party/google_input_tools/src/chrome/os/inputview/imewindows/accents.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..32c31766046e4d7d92d566b0b39ad861c1787354 |
--- /dev/null |
+++ b/third_party/google_input_tools/src/chrome/os/inputview/imewindows/accents.js |
@@ -0,0 +1,102 @@ |
+// 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.Accents'); |
+ |
+goog.require('goog.dom'); |
+goog.require('goog.style'); |
+ |
+ |
+goog.scope(function() { |
+var Accents = i18n.input.chrome.inputview.Accents; |
+ |
+ |
+/** |
+ * The highlighted element. |
+ * |
+ * @type {Element} |
+ * @private |
+ */ |
+Accents.highlightedItem_ = null; |
+ |
+ |
+/** |
+ * Gets the highlighted character. |
+ * |
+ * @return {string} The character. |
+ * @private |
+ */ |
+Accents.getHighlightedAccent_ = function() { |
+ return Accents.highlightedItem_ ? Accents.highlightedItem_.textContent : ''; |
+}; |
+ |
+ |
+/** |
+ * Highlights the item according to the current coordinate of the finger. |
+ * |
+ * @param {number} x The x position of finger in screen coordinate system. |
+ * @param {number} y The y position of finger in screen coordinate system. |
+ * @private |
+ */ |
+Accents.highlightItem_ = function(x, y) { |
+ // TODO(bshe): support multiple rows. |
+ var dom = goog.dom.getDomHelper(); |
+ var child = dom.getFirstElementChild(dom.getElement('container')); |
+ while (child) { |
+ var coordinate = goog.style.getClientPosition(child); |
+ var size = goog.style.getSize(child); |
+ var screenCoordinate = {}; |
+ screenCoordinate.x = coordinate.x + window.screenX; |
+ screenCoordinate.y = coordinate.y + window.screenY; |
+ |
+ if (screenCoordinate.x < x && (screenCoordinate.x + size.width) > x && |
+ Accents.highlightedItem_ != child) { |
+ if (Accents.highlightedItem_) { |
+ Accents.highlightedItem_.classList.remove('highlight'); |
+ } |
+ Accents.highlightedItem_ = child; |
+ Accents.highlightedItem_.classList.add('highlight'); |
+ return; |
+ } |
+ // TODO(bshe): If y is off by 100, cancel the accented char selection. |
+ child = dom.getNextElementSibling(child); |
+ } |
+}; |
+ |
+ |
+/** |
+ * Sets the accents which this window should display. |
+ * |
+ * @param {!Array.<string>} accents . |
+ * @private |
+ */ |
+Accents.setAccents_ = function(accents) { |
+ var container = document.createElement('div'); |
+ container.id = 'container'; |
+ container.classList.add('accent-container'); |
+ for (var i = 0; i < accents.length; i++) { |
+ var keyElem = document.createElement('div'); |
+ var textDiv = document.createElement('div'); |
+ textDiv.textContent = accents[i]; |
+ keyElem.appendChild(textDiv); |
+ container.appendChild(keyElem); |
+ } |
+ document.body.appendChild(container); |
+}; |
+ |
+ |
+goog.exportSymbol('accents.highlightedAccent', Accents.getHighlightedAccent_); |
+goog.exportSymbol('accents.highlightItem', Accents.highlightItem_); |
+goog.exportSymbol('accents.setAccents', Accents.setAccents_); |
+ |
+}); // goog.scope |