Chromium Code Reviews| 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() {} |
| +} |