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

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

Issue 899673003: Uprev Google Input Tools. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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/candidateview.js
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/candidateview.js b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/candidateview.js
index 84ce75fc9b5a1f5d0b4d93a036ee7786c95588cd..5ccc1e84a3ad486f6c3b88433aba83f37b30e20a 100644
--- a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/candidateview.js
+++ b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/candidateview.js
@@ -20,10 +20,12 @@ 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.GlobalFlags');
goog.require('i18n.input.chrome.inputview.elements.Element');
goog.require('i18n.input.chrome.inputview.elements.ElementType');
goog.require('i18n.input.chrome.inputview.elements.content.Candidate');
goog.require('i18n.input.chrome.inputview.elements.content.CandidateButton');
+goog.require('i18n.input.chrome.inputview.elements.content.ToolbarButton');
goog.require('i18n.input.chrome.message.Name');
@@ -66,18 +68,46 @@ i18n.input.chrome.inputview.elements.content.CandidateView = function(id,
*/
this.iconButtons_ = [];
- this.iconButtons_[CandidateView.IconType.BACK] = new content.CandidateButton(
+ this.iconButtons_[IconType.BACK] = new content.CandidateButton(
'', ElementType.BACK_BUTTON, '',
chrome.i18n.getMessage('HANDWRITING_BACK'), this);
- this.iconButtons_[CandidateView.IconType.SHRINK_CANDIDATES] = new content.
+ this.iconButtons_[IconType.SHRINK_CANDIDATES] = new content.
CandidateButton('', ElementType.SHRINK_CANDIDATES,
Css.SHRINK_CANDIDATES_ICON, '', this);
- this.iconButtons_[CandidateView.IconType.EXPAND_CANDIDATES] = new content.
+
+ this.iconButtons_[IconType.EXPAND_CANDIDATES] = new content.
CandidateButton('', ElementType.EXPAND_CANDIDATES,
Css.EXPAND_CANDIDATES_ICON, '', this);
- this.iconButtons_[CandidateView.IconType.VOICE] = new content.
+
+ this.iconButtons_[IconType.VOICE] = new content.
CandidateButton('', ElementType.VOICE_BTN, Css.VOICE_MIC_BAR, '', this,
true);
+
+ /**
+ * Toolbar buttons.
+ *
+ * @private {!Array.<!i18n.input.chrome.inputview.elements.Element>}
+ */
+ this.toolbarButtons_ = [];
+
+ this.toolbarButtons_.push(new content.
+ ToolbarButton('', ElementType.UNDO, Css.UNDO_ICON, '', this, true));
+ this.toolbarButtons_.push(new content.
+ ToolbarButton('', ElementType.REDO, Css.REDO_ICON, '', this, true));
+ this.toolbarButtons_.push(new content.
+ ToolbarButton('', ElementType.BOLD, Css.BOLD_ICON, '', this, true));
+ this.toolbarButtons_.push(new content.
+ ToolbarButton('', ElementType.ITALICS, Css.ITALICS_ICON, '', this, true));
+ this.toolbarButtons_.push(new content.ToolbarButton(
+ '', ElementType.UNDERLINE, Css.UNDERLINE_ICON, '', this, true));
+ this.toolbarButtons_.push(new content.
+ ToolbarButton('', ElementType.CUT, Css.CUT_ICON, '', this));
+ this.toolbarButtons_.push(new content.
+ ToolbarButton('', ElementType.COPY, Css.COPY_ICON, '', this));
+ this.toolbarButtons_.push(new content.
+ ToolbarButton('', ElementType.PASTE, Css.PASTE_ICON, '', this));
+ this.toolbarButtons_.push(new content.
+ ToolbarButton('', ElementType.SELECT_ALL, Css.SELECT_ALL_ICON, '', this));
};
goog.inherits(i18n.input.chrome.inputview.elements.content.CandidateView,
i18n.input.chrome.inputview.elements.Element);
@@ -85,7 +115,7 @@ var CandidateView = i18n.input.chrome.inputview.elements.content.CandidateView;
/**
- * The icon type at the right of the candiate view.
+ * The icon type at the right of the candidate view.
*
* @enum {number}
*/
@@ -95,6 +125,7 @@ CandidateView.IconType = {
EXPAND_CANDIDATES: 2,
VOICE: 3
};
+var IconType = CandidateView.IconType;
/**
@@ -132,7 +163,7 @@ CandidateView.prototype.showingCandidates = false;
/**
- * true if it is showing number row.
+ * True if it is showing number row.
*
* @type {boolean}
*/
@@ -140,6 +171,14 @@ CandidateView.prototype.showingNumberRow = false;
/**
+ * True if showing the toolbar row.
+ *
+ * @type {boolean}
+ */
+CandidateView.prototype.showingToolbar = false;
+
+
+/**
* The width for a candidate when showing in THREE_CANDIDATE mode.
*
* @type {number}
@@ -158,6 +197,14 @@ CandidateView.ICON_WIDTH_ = 120;
/**
+ * The width of icons in the toolbar.
+ *
+ * @private {number}
+ */
+CandidateView.TOOLBAR_ICON_WIDTH_ = 40;
+
+
+/**
* The handwriting keyset code.
*
* @private {string}
@@ -187,6 +234,13 @@ CandidateView.prototype.createDom = function() {
var dom = this.getDomHelper();
var elem = this.getElement();
+
+ for (var i = 0; i < this.toolbarButtons_.length; i++) {
+ var button = this.toolbarButtons_[i];
+ button.render(elem);
+ button.setVisible(false);
+ }
+
this.interContainer_ = dom.createDom(TagName.DIV,
Css.CANDIDATE_INTER_CONTAINER);
dom.appendChild(elem, this.interContainer_);
@@ -196,10 +250,16 @@ CandidateView.prototype.createDom = function() {
button.render(elem);
button.setVisible(false);
}
+
+ goog.a11y.aria.setState(/** @type {!Element} */
+ (this.iconButtons_[IconType.SHRINK_CANDIDATES].getElement()),
+ goog.a11y.aria.State.LABEL,
+ chrome.i18n.getMessage('SHRINK_CANDIDATES'));
+
goog.a11y.aria.setState(/** @type {!Element} */
- (this.iconButtons_[CandidateView.IconType.VOICE].getElement()),
+ (this.iconButtons_[IconType.EXPAND_CANDIDATES].getElement()),
goog.a11y.aria.State.LABEL,
- chrome.i18n.getMessage('VOICE_TURN_ON'));
+ chrome.i18n.getMessage('EXPAND_CANDIDATES'));
};
@@ -248,12 +308,12 @@ CandidateView.prototype.showCandidates = function(candidates,
if (candidates.length > 0) {
if (showThreeCandidates) {
this.addThreeCandidates_(candidates);
- // Hide the voice icons.
- this.switchToIcon(CandidateView.IconType.VOICE, false);
} else {
this.addFullCandidates_(candidates);
- this.switchToIcon(CandidateView.IconType.EXPAND_CANDIDATES,
- !!opt_expandable && this.candidateCount < candidates.length);
+ if (!this.iconButtons_[IconType.BACK].isVisible()) {
+ this.switchToIcon(IconType.EXPAND_CANDIDATES,
+ !!opt_expandable && this.candidateCount < candidates.length);
+ }
}
this.showingCandidates = true;
this.showingNumberRow = false;
@@ -272,10 +332,13 @@ CandidateView.prototype.addThreeCandidates_ = function(candidates) {
i18n.input.chrome.inputview.Css.THREE_CANDIDATES);
var num = Math.min(3, candidates.length);
var dom = this.getDomHelper();
+ var width = CandidateView.WIDTH_FOR_THREE_CANDIDATES_;
+ if (this.showingToolbar) {
+ width -= CandidateView.ICON_WIDTH_ / 3;
+ }
for (var i = 0; i < num; i++) {
var candidateElem = new Candidate(String(i), candidates[i], Type.CANDIDATE,
- this.height, i == 1 || num == 1, CandidateView.
- WIDTH_FOR_THREE_CANDIDATES_, this);
+ this.height, i == 1 || num == 1, width, this);
candidateElem.render(this.interContainer_);
}
this.candidateCount = num;
@@ -352,6 +415,10 @@ CandidateView.prototype.resize = function(width, height) {
button.resize(CandidateView.ICON_WIDTH_, height);
}
+ for (var i = 0; i < this.toolbarButtons_.length; i++) {
+ var button = this.toolbarButtons_[i];
+ button.resize(CandidateView.TOOLBAR_ICON_WIDTH_, height);
+ }
// Resets the candidates elements visibility.
if (this.candidateCount > 0) {
@@ -383,16 +450,34 @@ CandidateView.prototype.resize = function(width, height) {
CandidateView.prototype.switchToIcon = function(type, visible) {
for (var i = 0; i < this.iconButtons_.length; i++) {
// Don't enable voice when focus in password box.
- this.iconButtons_[i].setVisible(visible && type == i &&
- (type != CandidateView.IconType.VOICE || !this.candidateCount &&
- this.adapter_.contextType != 'password'));
+ this.iconButtons_[i].setVisible(false);
}
- // We need make default voice icon showed if the position doesn't show other
- // icon.
- if (!visible && this.adapter_.isExperimental &&
+ if (visible) {
+ if (type != IconType.VOICE) {
+ this.iconButtons_[type].setVisible(true);
+ } else if (this.adapter_.isVoiceInputEnabled &&
+ this.adapter_.contextType != 'password') {
+ this.iconButtons_[type].setVisible(true);
+ }
+ } else if (this.adapter_.isVoiceInputEnabled &&
+ type != IconType.VOICE &&
this.adapter_.contextType != 'password') {
- this.iconButtons_[CandidateView.IconType.VOICE].setVisible(true);
+ // Default to show voice icon.
+ this.iconButtons_[IconType.VOICE].setVisible(true);
+ }
+};
+
+
+/**
+ * Changes the visibility of the toolbar and it's icons.
+ *
+ * @param {boolean} visible The target visibility.
+ */
+CandidateView.prototype.setToolbarVisible = function(visible) {
+ this.showingToolbar = visible;
+ for (var i = 0; i < this.toolbarButtons_.length; i++) {
+ this.toolbarButtons_[i].setVisible(visible);
}
};
@@ -406,12 +491,15 @@ CandidateView.prototype.switchToIcon = function(type, visible) {
*/
CandidateView.prototype.updateByKeyset = function(
keyset, isPasswordBox, isRTL) {
- if (keyset == CandidateView.HANDWRITING_VIEW_CODE_) {
- this.switchToIcon(CandidateView.IconType.BACK, true);
- } else if (keyset != CandidateView.EMOJI_VIEW_CODE_ && !this.candidateCount &&
- this.adapter_.isExperimental) {
- // If candidates count is greater than 0, don't show voice icon.
- this.switchToIcon(CandidateView.IconType.VOICE, true);
+ if (!i18n.input.chrome.inputview.GlobalFlags.isQPInputView) {
+ if (keyset == CandidateView.HANDWRITING_VIEW_CODE_ ||
+ keyset == CandidateView.EMOJI_VIEW_CODE_) {
+ this.switchToIcon(IconType.BACK, true);
+ } else {
+ this.switchToIcon(IconType.VOICE,
+ this.adapter_.isVoiceInputEnabled &&
+ this.adapter_.contextType != 'password');
+ }
}
if (isPasswordBox && keyset.indexOf('compact') != -1) {
@@ -421,4 +509,13 @@ CandidateView.prototype.updateByKeyset = function(
}
this.interContainer_.style.direction = isRTL ? 'rtl' : 'ltr';
};
+
+
+/** @override */
+CandidateView.prototype.disposeInternal = function() {
+ goog.disposeAll(this.toolbarButtons_);
+ goog.disposeAll(this.iconButtons_);
+
+ goog.base(this, 'disposeInternal');
+};
}); // goog.scope

Powered by Google App Engine
This is Rietveld 408576698