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

Side by Side Diff: third_party/google_input_tools/src/chrome/os/inputview/imewindows/accents.js

Issue 975453003: Update Google Input Tools. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The ChromeOS IME Authors. All Rights Reserved. 1 // Copyright 2014 The ChromeOS IME Authors. All Rights Reserved.
2 // limitations under the License. 2 // limitations under the License.
3 // See the License for the specific language governing permissions and 3 // See the License for the specific language governing permissions and
4 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 4 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5 // distributed under the License is distributed on an "AS-IS" BASIS, 5 // distributed under the License is distributed on an "AS-IS" BASIS,
6 // Unless required by applicable law or agreed to in writing, software 6 // Unless required by applicable law or agreed to in writing, software
7 // 7 //
8 // http://www.apache.org/licenses/LICENSE-2.0 8 // http://www.apache.org/licenses/LICENSE-2.0
9 // 9 //
10 // You may obtain a copy of the License at 10 // You may obtain a copy of the License at
11 // you may not use this file except in compliance with the License. 11 // you may not use this file except in compliance with the License.
12 // Licensed under the Apache License, Version 2.0 (the "License"); 12 // Licensed under the Apache License, Version 2.0 (the "License");
13 // 13 //
14 goog.provide('i18n.input.chrome.inputview.Accents'); 14 goog.provide('i18n.input.chrome.inputview.Accents');
15 15
16 goog.require('goog.dom'); 16 goog.require('goog.dom');
17 goog.require('goog.dom.TagName');
18 goog.require('goog.dom.classlist');
17 goog.require('goog.math.Coordinate'); 19 goog.require('goog.math.Coordinate');
18 goog.require('goog.style'); 20 goog.require('goog.style');
21 goog.require('i18n.input.chrome.inputview.Css');
19 goog.require('i18n.input.chrome.inputview.util'); 22 goog.require('i18n.input.chrome.inputview.util');
20 23
21 24
22 goog.scope(function() { 25 goog.scope(function() {
23 var Accents = i18n.input.chrome.inputview.Accents; 26 var Accents = i18n.input.chrome.inputview.Accents;
27 var Css = i18n.input.chrome.inputview.Css;
24 28
25 29
26 /** 30 /**
27 * The highlighted element. 31 * The highlighted element.
28 * 32 *
29 * @type {Element} 33 * @type {Element}
30 * @private 34 * @private
31 */ 35 */
32 Accents.highlightedItem_ = null; 36 Accents.highlightedItem_ = null;
33 37
(...skipping 15 matching lines...) Expand all
49 * 53 *
50 * @param {number} x The x position of finger in screen coordinate system. 54 * @param {number} x The x position of finger in screen coordinate system.
51 * @param {number} y The y position of finger in screen coordinate system. 55 * @param {number} y The y position of finger in screen coordinate system.
52 * @param {number} offset The offset to cancel highlight. 56 * @param {number} offset The offset to cancel highlight.
53 * @private 57 * @private
54 */ 58 */
55 Accents.highlightItem_ = function(x, y, offset) { 59 Accents.highlightItem_ = function(x, y, offset) {
56 var highlightedItem = Accents.getHighlightedItem_(x, y, offset); 60 var highlightedItem = Accents.getHighlightedItem_(x, y, offset);
57 if (Accents.highlightedItem_ != highlightedItem) { 61 if (Accents.highlightedItem_ != highlightedItem) {
58 if (Accents.highlightedItem_) { 62 if (Accents.highlightedItem_) {
59 Accents.highlightedItem_.classList.remove('highlight'); 63 goog.dom.classlist.remove(Accents.highlightedItem_,
64 i18n.input.chrome.inputview.Css.ELEMENT_HIGHLIGHT);
60 } 65 }
61 Accents.highlightedItem_ = highlightedItem; 66 Accents.highlightedItem_ = highlightedItem;
62 if (Accents.highlightedItem_ && 67 if (Accents.highlightedItem_ &&
63 Accents.highlightedItem_.textContent.trim()) { 68 Accents.highlightedItem_.textContent.trim()) {
64 Accents.highlightedItem_.classList.add('highlight'); 69 goog.dom.classlist.add(Accents.highlightedItem_,
70 i18n.input.chrome.inputview.Css.ELEMENT_HIGHLIGHT);
65 } 71 }
66 } 72 }
67 }; 73 };
68 74
69 75
70 /** 76 /**
71 * Gets the higlighted item from |x| and |y| position. 77 * Gets the higlighted item from |x| and |y| position.
72 * @param {number} x The x position of finger in screen coordinate system. 78 * @param {number} x The x position of finger in screen coordinate system.
73 * @param {number} y The y position of finger in screen coordinate system. 79 * @param {number} y The y position of finger in screen coordinate system.
74 * @param {number} offset The offset to cancel highlight. 80 * @param {number} offset The offset to cancel highlight.
75 * @private 81 * @private
76 */ 82 */
77 Accents.getHighlightedItem_ = function(x, y, offset) { 83 Accents.getHighlightedItem_ = function(x, y, offset) {
78 var dom = goog.dom.getDomHelper(); 84 var dom = goog.dom.getDomHelper();
79 var row = null; 85 var row = null;
80 var rows = dom.getElementsByClass('accent-row'); 86 var rows = dom.getElementsByClass(i18n.input.chrome.inputview.Css.ACCENT_ROW);
81 for (var i = 0; i < rows.length; i++) { 87 for (var i = 0; i < rows.length; i++) {
82 var coordinate = goog.style.getClientPosition(rows[i]); 88 var coordinate = goog.style.getClientPosition(rows[i]);
83 var size = goog.style.getSize(rows[i]); 89 var size = goog.style.getSize(rows[i]);
84 var screenYStart = coordinate.y + window.screenY; 90 var screenYStart = coordinate.y + window.screenY;
85 screenYStart = i == 0 ? screenYStart - offset : screenYStart; 91 screenYStart = i == 0 ? screenYStart - offset : screenYStart;
86 var screenYEnd = coordinate.y + window.screenY + size.height; 92 var screenYEnd = coordinate.y + window.screenY + size.height;
87 screenYEnd = i == rows.length - 1 ? screenYEnd + offset : screenYEnd; 93 screenYEnd = i == rows.length - 1 ? screenYEnd + offset : screenYEnd;
88 if (screenYStart < y && screenYEnd > y) { 94 if (screenYStart < y && screenYEnd > y) {
89 row = rows[i]; 95 row = rows[i];
90 break; 96 break;
(...skipping 23 matching lines...) Expand all
114 * @param {!Array.<string>} accents The accents to display. 120 * @param {!Array.<string>} accents The accents to display.
115 * @param {!number} numOfColumns The number of colums of this accents window. 121 * @param {!number} numOfColumns The number of colums of this accents window.
116 * @param {!number} numOfRows The number of rows of this accents window. 122 * @param {!number} numOfRows The number of rows of this accents window.
117 * @param {number} width The width of accent key. 123 * @param {number} width The width of accent key.
118 * @param {number} height The height of accent key. 124 * @param {number} height The height of accent key.
119 * @param {number} startKeyIndex The index of the start key in bottom row. 125 * @param {number} startKeyIndex The index of the start key in bottom row.
120 * @private 126 * @private
121 */ 127 */
122 Accents.setAccents_ = function(accents, numOfColumns, numOfRows, width, 128 Accents.setAccents_ = function(accents, numOfColumns, numOfRows, width,
123 height, startKeyIndex) { 129 height, startKeyIndex) {
124 var container = document.createElement('div'); 130 var TagName = goog.dom.TagName;
131 var dom = goog.dom.getDomHelper();
132 var container = dom.createDom(TagName.DIV, Css.ACCENT_CONTAINER);
133 goog.dom.setProperties(container, {
134 'id' : 'container'
135 });
125 container.id = 'container'; 136 container.id = 'container';
126 container.classList.add('accent-container');
127 137
128 var orderedAccents = Accents.reorderAccents_(accents, numOfColumns, numOfRows, 138 var orderedAccents = Accents.reorderAccents_(accents, numOfColumns, numOfRows,
129 startKeyIndex); 139 startKeyIndex);
130 var row = null; 140 var row = null;
131 for (var i = 0; i < orderedAccents.length; i++) { 141 for (var i = 0; i < orderedAccents.length; i++) {
132 var keyElem = document.createElement('div'); 142 var keyElem = dom.createDom(TagName.DIV, Css.ACCENT_KEY);
133 // Even if this is an empty key, we still need to add textDiv. Otherwise, 143 // Even if this is an empty key, we still need to add textDiv. Otherwise,
134 // the keys have layout issues. 144 // the keys have layout issues.
135 var textDiv = document.createElement('div'); 145 var textDiv = dom.createElement(TagName.DIV);
136 textDiv.textContent = 146 var text = i18n.input.chrome.inputview.util.getVisibleCharacter(
137 i18n.input.chrome.inputview.util.getVisibleCharacter( 147 orderedAccents[i]);
138 orderedAccents[i]); 148 textDiv.textContent = text;
139 textDiv.style.lineHeight = height + 'px'; 149 // If accent is a word use a smaller font size.
140 keyElem.appendChild(textDiv); 150 goog.dom.classlist.add(textDiv, text.length > 1 ? Css.FONT_SMALL :
151 Css.FONT);
152
153 goog.style.setStyle(textDiv, 'lineHeight', height + 'px');
154 dom.appendChild(keyElem, textDiv);
141 if (!orderedAccents[i]) { 155 if (!orderedAccents[i]) {
142 keyElem.classList.add('empty-key'); 156 goog.dom.classlist.add(keyElem, Css.ACCENT_EMPTY_KEY);
143 } 157 }
144 keyElem.style.width = width + 'px'; 158 goog.style.setSize(keyElem, width, height);
145 keyElem.style.height = height + 'px';
146 if (i % numOfColumns == 0) { 159 if (i % numOfColumns == 0) {
147 if (row) { 160 if (row) {
148 container.appendChild(row); 161 container.appendChild(row);
149 } 162 }
150 row = document.createElement('div'); 163 row = dom.createDom(TagName.DIV, Css.ACCENT_ROW);
151 row.classList.add('accent-row');
152 } 164 }
153 row.appendChild(keyElem); 165 dom.appendChild(row, keyElem);
154 } 166 }
155 container.appendChild(row); 167 dom.appendChild(container, row);
156 document.body.appendChild(container); 168 dom.appendChild(document.body, container);
157 }; 169 };
158 170
159 171
160 /** 172 /**
161 * Generates the reordered accents which is optimized for creating accent key 173 * Generates the reordered accents which is optimized for creating accent key
162 * elements sequentially(from top to bottom, left to right). 174 * elements sequentially(from top to bottom, left to right).
163 * Accent in |accents| is ordered according to its frequency(more frequently 175 * Accent in |accents| is ordered according to its frequency(more frequently
164 * used appears first). Once reordered, the more frequently used accents will be 176 * used appears first). Once reordered, the more frequently used accents will be
165 * positioned closer to the parent key. See tests for example. 177 * positioned closer to the parent key. See tests for example.
166 * @param {!Array.<string>} accents The accents to display. 178 * @param {!Array.<string>} accents The accents to display.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 } 213 }
202 214
203 return orderedAccents; 215 return orderedAccents;
204 }; 216 };
205 217
206 goog.exportSymbol('accents.highlightedAccent', Accents.getHighlightedAccent_); 218 goog.exportSymbol('accents.highlightedAccent', Accents.getHighlightedAccent_);
207 goog.exportSymbol('accents.highlightItem', Accents.highlightItem_); 219 goog.exportSymbol('accents.highlightItem', Accents.highlightItem_);
208 goog.exportSymbol('accents.setAccents', Accents.setAccents_); 220 goog.exportSymbol('accents.setAccents', Accents.setAccents_);
209 221
210 }); // goog.scope 222 }); // goog.scope
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698