Index: third_party/google_input_tools/src/chrome/os/inputview/elements/content/spacekey.js |
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/spacekey.js b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/spacekey.js |
index 04de039b0932908d575e2d84a3f378930e23c283..72b045c6a482acf9c3efba1cd6e2637d68b6ee49 100644 |
--- a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/spacekey.js |
+++ b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/spacekey.js |
@@ -14,15 +14,19 @@ |
goog.provide('i18n.input.chrome.inputview.elements.content.SpaceKey'); |
goog.require('goog.dom'); |
+goog.require('goog.dom.TagName'); |
goog.require('goog.dom.classlist'); |
+goog.require('goog.style'); |
goog.require('i18n.input.chrome.inputview.Css'); |
goog.require('i18n.input.chrome.inputview.StateType'); |
goog.require('i18n.input.chrome.inputview.elements.ElementType'); |
-goog.require('i18n.input.chrome.inputview.elements.content.FunctionalKey'); |
+goog.require('i18n.input.chrome.inputview.elements.content.SoftKey'); |
goog.scope(function() { |
+var Css = i18n.input.chrome.inputview.Css; |
+var content = i18n.input.chrome.inputview.elements.content; |
@@ -36,13 +40,15 @@ goog.scope(function() { |
* @param {!Array.<string>=} opt_characters The characters. |
* @param {goog.events.EventTarget=} opt_eventTarget The event target. |
* @param {string=} opt_iconCss The icon CSS class |
+ * @param {string=} opt_toKeyset The id of the keyset to switch to if spacebar |
+ * is pressed after a symbol. |
* @constructor |
- * @extends {i18n.input.chrome.inputview.elements.content.FunctionalKey} |
+ * @extends {i18n.input.chrome.inputview.elements.content.SoftKey} |
*/ |
-i18n.input.chrome.inputview.elements.content.SpaceKey = function(id, |
- stateManager, title, opt_characters, opt_eventTarget, opt_iconCss) { |
+content.SpaceKey = function(id, stateManager, title, opt_characters, |
+ opt_eventTarget, opt_iconCss, opt_toKeyset) { |
goog.base(this, id, i18n.input.chrome.inputview.elements.ElementType. |
- SPACE_KEY, opt_iconCss ? '' : title, opt_iconCss || '', opt_eventTarget); |
+ SPACE_KEY, opt_eventTarget); |
/** |
* The characters. |
@@ -53,6 +59,13 @@ i18n.input.chrome.inputview.elements.content.SpaceKey = function(id, |
this.characters_ = opt_characters || []; |
/** |
+ * The title on the space key. |
+ * |
+ * @private {string} |
+ */ |
+ this.title_ = title; |
+ |
+ /** |
* The state manager. |
* |
* @type {!i18n.input.chrome.inputview.StateManager} |
@@ -60,24 +73,58 @@ i18n.input.chrome.inputview.elements.content.SpaceKey = function(id, |
*/ |
this.stateManager_ = stateManager; |
+ /** @private {string} */ |
+ this.iconCss_ = opt_iconCss || ''; |
+ |
+ /** |
+ * The id of the keyset to go to (if necessary). |
+ * This is used to return to the letter keyset when pressing space |
+ * after a symbol. |
+ * |
+ * @type {string} |
+ */ |
+ this.toKeyset = opt_toKeyset || ''; |
+ |
// Double click on space key may convert two spaces to a period followed by a |
// space. |
this.pointerConfig.dblClick = true; |
this.pointerConfig.dblClickDelay = 1000; |
}; |
-goog.inherits(i18n.input.chrome.inputview.elements.content.SpaceKey, |
- i18n.input.chrome.inputview.elements.content.FunctionalKey); |
-var SpaceKey = i18n.input.chrome.inputview.elements.content.SpaceKey; |
+goog.inherits(content.SpaceKey, i18n.input.chrome.inputview.elements. |
+ content.SoftKey); |
+var SpaceKey = content.SpaceKey; |
+ |
+ |
+/** |
+ * The height of the space key. |
+ * |
+ * @type {number} |
+ */ |
+SpaceKey.HEIGHT = 43; |
+ |
+ |
+/** |
+ * The wrapper inside the space key. |
+ * |
+ * @private {!Element} |
+ */ |
+SpaceKey.prototype.wrapper_; |
/** @override */ |
SpaceKey.prototype.createDom = function() { |
goog.base(this, 'createDom'); |
- goog.dom.classlist.remove(this.bgElem, |
- i18n.input.chrome.inputview.Css.SPECIAL_KEY_BG); |
- |
- this.setAriaLabel(this.getChromeVoxMessage()); |
+ var dom = this.getDomHelper(); |
+ this.wrapper_ = dom.createDom(goog.dom.TagName.DIV, Css.SPACE_WRAPPER); |
+ dom.appendChild(this.getElement(), this.wrapper_); |
+ if (this.iconCss_) { |
+ var iconElem = dom.createDom(goog.dom.TagName.DIV, this.iconCss_); |
+ dom.appendChild(this.wrapper_, iconElem); |
+ } else { |
+ goog.dom.classlist.add(this.wrapper_, Css.SPACE_GREY_BG); |
+ goog.dom.setTextContent(this.wrapper_, this.title_); |
+ } |
}; |
@@ -111,18 +158,45 @@ SpaceKey.prototype.getCharacter = function() { |
* @param {boolean} visible True to set title visible. |
*/ |
SpaceKey.prototype.updateTitle = function(title, visible) { |
- if (this.textElem) { |
- this.text = title; |
- goog.dom.setTextContent(this.textElem, visible ? title : ''); |
- goog.dom.classlist.add(this.textElem, |
- i18n.input.chrome.inputview.Css.TITLE); |
+ if (this.iconCss_) { |
+ return; |
} |
+ this.text = title; |
+ goog.dom.setTextContent(this.wrapper_, visible ? title : ''); |
+ goog.dom.classlist.add(this.wrapper_, |
+ i18n.input.chrome.inputview.Css.TITLE); |
}; |
/** @override */ |
+SpaceKey.prototype.setHighlighted = function(highlight) { |
+ if (highlight) { |
+ goog.dom.classlist.add(this.wrapper_, i18n.input.chrome.inputview.Css. |
+ ELEMENT_HIGHLIGHT); |
+ } else { |
+ goog.dom.classlist.remove(this.wrapper_, i18n.input.chrome.inputview.Css. |
+ ELEMENT_HIGHLIGHT); |
+ } |
+}; |
+ |
+ |
+/** |
+ * Gets the message for chromevox. |
+ * |
+ * @return {string} . |
+ */ |
SpaceKey.prototype.getChromeVoxMessage = function() { |
return chrome.i18n.getMessage('SPACE'); |
}; |
+ |
+/** @override */ |
+SpaceKey.prototype.resize = function(width, height) { |
+ goog.base(this, 'resize', width, height); |
+ |
+ goog.style.setSize(this.wrapper_, width, SpaceKey.HEIGHT); |
+ // Positions the wrapper in the middle. |
+ this.wrapper_.style.top = (this.availableHeight - SpaceKey.HEIGHT) / 2 + 'px'; |
+}; |
+ |
}); // goog.scope |