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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/infobar/translate/TranslateMenu.java

Issue 2830543003: Re-fact TranslateMenuHelper. (Closed)
Patch Set: Created 3 years, 8 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: chrome/android/java/src/org/chromium/chrome/browser/infobar/translate/TranslateMenu.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/translate/TranslateMenu.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/translate/TranslateMenu.java
new file mode 100644
index 0000000000000000000000000000000000000000..803433108af79d2f991aa82cc19de4961e15a026
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/translate/TranslateMenu.java
@@ -0,0 +1,103 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.infobar.translate;
+
+import android.content.Context;
+
+import org.chromium.chrome.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Translate menu config and its item entity definition.
+ */
+public final class TranslateMenu {
+ public static final String EMPTY_STRING = "";
+
+ // Menu item type config.
+ public static final int MENU_DIVIDER = 0;
+ public static final int OVERFLOW_MENU_ITEM = 1;
+ public static final int SOURCE_LANGUAGE_MENU_ITEM = 2;
+ public static final int TARGET_LANGUAGE_MENU_ITEM = 3;
+
+ public static final int MENU_ITEM_TYPE_COUNT = 4;
+
+ // Menu item code config of overflow menu.
+ public static final String ALWAYS_TRANSLATE = "always translate";
+ public static final String MORE_LANGUAGE = "more language";
+ public static final String NEVER_SITE = "never site";
+ public static final String NEVER_LANGUAGE = "never language";
+ public static final String NOT_THIS_LANGUAGE = "not this language";
+
+ /**
+ * The item entity used to render the menu.
+ */
+ static final class TranslateMenuItem {
+ public final int mType;
+ public final String mTitle;
+ public final String mCode;
gone 2017/04/19 23:21:13 using a string for what is effectively an enum is
Leo 2017/04/20 01:17:21 Thanks, that's also what I thought. My original da
gone 2017/04/20 20:56:50 what would this structure look like? I'm not seei
+
+ private TranslateMenuItem(int type, String code, String title) {
+ mTitle = title;
+ mCode = code;
+ mType = type;
+ }
+
+ public String getTitle(Context context, String source) {
+ if (mType != OVERFLOW_MENU_ITEM) {
+ return mTitle;
+ }
+
+ switch (mCode) {
+ case ALWAYS_TRANSLATE:
+ return context.getString(R.string.translate_always_text, source);
+ case MORE_LANGUAGE:
+ return context.getString(R.string.translate_infobar_more_language);
+ case NEVER_SITE:
+ return context.getString(R.string.translate_never_translate_site);
+ case NEVER_LANGUAGE:
+ return context.getString(R.string.translate_never_translate_language, source);
+ case NOT_THIS_LANGUAGE:
+ return context.getString(R.string.translate_infobar_not_this_language, source);
+ default:
+ return EMPTY_STRING;
+ }
+ }
+ }
+
+ /**
+ * Build overflow menu item list.
+ */
+ public static List<TranslateMenuItem> createOverflowMenu() {
+ List<TranslateMenuItem> menuList = new ArrayList<TranslateMenuItem>();
+ menuList.add(new TranslateMenuItem(OVERFLOW_MENU_ITEM, MORE_LANGUAGE, EMPTY_STRING));
+ menuList.add(new TranslateMenuItem(MENU_DIVIDER, EMPTY_STRING, EMPTY_STRING));
+ menuList.add(new TranslateMenuItem(OVERFLOW_MENU_ITEM, ALWAYS_TRANSLATE, EMPTY_STRING));
+ menuList.add(new TranslateMenuItem(OVERFLOW_MENU_ITEM, NEVER_LANGUAGE, EMPTY_STRING));
+ menuList.add(new TranslateMenuItem(OVERFLOW_MENU_ITEM, NEVER_SITE, EMPTY_STRING));
+ menuList.add(new TranslateMenuItem(OVERFLOW_MENU_ITEM, NOT_THIS_LANGUAGE, EMPTY_STRING));
+ return menuList;
+ }
+
+ /**
+ * Build languages menu item list.
+ */
+ public static List<TranslateMenuItem> createLanguageMenu(
+ String[] languages, String[] codes, String avoidCode) {
+ assert languages.length == codes.length;
+
+ List<TranslateMenuItem> menuList = new ArrayList<TranslateMenuItem>();
+ for (int i = 0; i < codes.length; ++i) {
+ if (!codes[i].equals(avoidCode)) {
+ menuList.add(
+ new TranslateMenuItem(SOURCE_LANGUAGE_MENU_ITEM, codes[i], languages[i]));
+ }
+ }
+ return menuList;
+ }
+
+ private TranslateMenu() {}
+}

Powered by Google App Engine
This is Rietveld 408576698