14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)package org.chromium.chrome.browser.infobar; 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import java.util.Arrays; 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import java.util.Collections; 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import java.util.List; 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)/** 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * A class that keeps the state of the different translation options and 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * languages. 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)public class TranslateOptions { 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // This would be an enum but they are not good for mobile. 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // The checkBoundaries method below needs to be updated if new options are added. 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private static final int NEVER_LANGUAGE = 0; 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private static final int NEVER_DOMAIN = 1; 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private static final int ALWAYS_LANGUAGE = 2; 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private final String[] mAllLanguages; 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Will reflect the state before the object was ever modified 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private final boolean[] mOriginalOptions; 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private final int mOriginalSourceLanguageIndex; 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private final int mOriginalTargetLanguageIndex; 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private final boolean[] mOptions; 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private int mSourceLanguageIndex; 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private int mTargetLanguageIndex; 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private final boolean mTriggeredFromMenu; 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private TranslateOptions(int sourceLanguageCode, int targetLanguageCode, String[] allLanguages, 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) boolean neverLanguage, boolean neverDomain, boolean alwaysLanguage, 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) boolean triggeredFromMenu, boolean[] originalOptions) { 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mAllLanguages = allLanguages; 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mSourceLanguageIndex = sourceLanguageCode; 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mTargetLanguageIndex = targetLanguageCode; 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mTriggeredFromMenu = triggeredFromMenu; 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOptions = new boolean[3]; 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOptions[NEVER_LANGUAGE] = neverLanguage; 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOptions[NEVER_DOMAIN] = neverDomain; 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOptions[ALWAYS_LANGUAGE] = alwaysLanguage; 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (originalOptions == null) { 514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOriginalOptions = mOptions.clone(); 524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } else { 534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOriginalOptions = originalOptions.clone(); 544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOriginalSourceLanguageIndex = mSourceLanguageIndex; 574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOriginalTargetLanguageIndex = mTargetLanguageIndex; 584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public TranslateOptions(int sourceLanguageCode, int targetLanguageCode, String[] allLanguages, 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) boolean alwaysTranslate, boolean triggeredFromMenu) { 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) this(sourceLanguageCode, targetLanguageCode, allLanguages, false, false, alwaysTranslate, 63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) triggeredFromMenu, null); 644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Copy constructor 684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public TranslateOptions(TranslateOptions other) { 704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) this(other.mSourceLanguageIndex, other.mTargetLanguageIndex, other.mAllLanguages, 714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) other.mOptions[NEVER_LANGUAGE], other.mOptions[NEVER_DOMAIN], 72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) other.mOptions[ALWAYS_LANGUAGE], other.mTriggeredFromMenu, 73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) other.mOriginalOptions); 744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public String sourceLanguage() { 774ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch if (checkLanguageBoundaries(mSourceLanguageIndex)) 784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return mAllLanguages[mSourceLanguageIndex]; 794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return ""; 804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public String targetLanguage() { 834ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch if (checkLanguageBoundaries(mTargetLanguageIndex)) 844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return mAllLanguages[mTargetLanguageIndex]; 854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return ""; 864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public int sourceLanguageIndex() { 894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return checkLanguageBoundaries(mSourceLanguageIndex) ? mSourceLanguageIndex : 0; 904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public int targetLanguageIndex() { 934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return checkLanguageBoundaries(mTargetLanguageIndex) ? mTargetLanguageIndex : 0; 944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 96a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public boolean triggeredFromMenu() { 97a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return mTriggeredFromMenu; 98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 99a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean optionsChanged() { 1014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return (mSourceLanguageIndex != mOriginalSourceLanguageIndex) || 1024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) (mTargetLanguageIndex != mOriginalTargetLanguageIndex) || 1034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) (mOptions[NEVER_LANGUAGE] != mOriginalOptions[NEVER_LANGUAGE]) || 1044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) (mOptions[NEVER_DOMAIN] != mOriginalOptions[NEVER_DOMAIN]) || 1054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) (mOptions[ALWAYS_LANGUAGE] != mOriginalOptions[ALWAYS_LANGUAGE]); 1064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public List<String> allLanguages() { 1104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return Collections.unmodifiableList(Arrays.asList(mAllLanguages)); 1114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean neverTranslateLanguageState() { 1144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return mOptions[NEVER_LANGUAGE]; 1154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean alwaysTranslateLanguageState() { 1184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return mOptions[ALWAYS_LANGUAGE]; 1194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean neverTranslateDomainState() { 1224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return mOptions[NEVER_DOMAIN]; 1234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean setSourceLanguage(int languageIndex) { 1264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) boolean canSet = canSetLanguage(languageIndex, mTargetLanguageIndex); 1274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (canSet) { 1284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mSourceLanguageIndex = languageIndex; 1294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return canSet; 1314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean setTargetLanguage(int languageIndex) { 1344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) boolean canSet = canSetLanguage(mSourceLanguageIndex, languageIndex); 1354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (canSet) { 1364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mTargetLanguageIndex = languageIndex; 1374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return canSet; 1394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 1424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Sets the new state of never translate domain. 1434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * 1444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @return true if the toggling was possible 1454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 1464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean toggleNeverTranslateDomainState(boolean value) { 1474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return toggleState(NEVER_DOMAIN, value); 1484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 1514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Sets the new state of never translate language. 1524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * 1534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @return true if the toggling was possible 1544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 1554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean toggleNeverTranslateLanguageState(boolean value) { 1564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Do not toggle if we are activating NeverLanguge but AlwaysTranslate 1574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // for a language pair with the same source language is already active. 1584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (mOptions[ALWAYS_LANGUAGE] && value) { 1594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return false; 1604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return toggleState(NEVER_LANGUAGE, value); 1624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 1654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Sets the new state of never translate a language pair. 1664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * 1674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @return true if the toggling was possible 1684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 1694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean toggleAlwaysTranslateLanguageState(boolean value) { 1704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Do not toggle if we are activating AlwaysLanguge but NeverLanguage is active already. 1714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (mOptions[NEVER_LANGUAGE] && value) { 1724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return false; 1734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return toggleState(ALWAYS_LANGUAGE, value); 1754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private boolean toggleState(int element, boolean newValue) { 1784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (!checkElementBoundaries(element)) 1794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return false; 1804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOptions[element] = newValue; 1824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return true; 1834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private boolean checkLanguageBoundaries(int index) { 1874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return index >= 0 && index < mAllLanguages.length; 1884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private boolean canSetLanguage(int sourceIndex, int targetIndex) { 1914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (sourceIndex == targetIndex) 1924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return false; 1934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return checkLanguageBoundaries(sourceIndex) && checkLanguageBoundaries(targetIndex); 1944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private static boolean checkElementBoundaries(int element) { 1984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return element >= NEVER_LANGUAGE && element <= ALWAYS_LANGUAGE; 1994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 2004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @Override 2024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public String toString() { 2034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return new StringBuilder() 2044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(sourceLanguage()) 2054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(" -> ") 2064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(targetLanguage()) 2074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(" - ") 2084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append("Never Language:") 2094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(mOptions[NEVER_LANGUAGE]) 2104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(" Always Language:") 2114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(mOptions[ALWAYS_LANGUAGE]) 2124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(" Never Domain:") 2134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(mOptions[NEVER_DOMAIN]) 2144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .toString(); 2154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 2164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 217