TranslateOptions.java revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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) 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Placeholder while i18tn is supported. 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private static final String UNTRANSLATED_LANGUAGE_PLAHOLDER = "\ud83c\udfc4"; 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private TranslateOptions(int sourceLanguageCode, int targetLanguageCode, String[] allLanguages, 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) boolean neverLanguage, boolean neverDomain, boolean alwaysLanguage, 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) boolean triggeredFromMenu, boolean[] originalOptions) { 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mAllLanguages = allLanguages; 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mSourceLanguageIndex = sourceLanguageCode; 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mTargetLanguageIndex = targetLanguageCode; 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mTriggeredFromMenu = triggeredFromMenu; 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOptions = new boolean[3]; 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOptions[NEVER_LANGUAGE] = neverLanguage; 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOptions[NEVER_DOMAIN] = neverDomain; 504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOptions[ALWAYS_LANGUAGE] = alwaysLanguage; 514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (originalOptions == null) { 544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOriginalOptions = mOptions.clone(); 554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } else { 564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOriginalOptions = originalOptions.clone(); 574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOriginalSourceLanguageIndex = mSourceLanguageIndex; 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOriginalTargetLanguageIndex = mTargetLanguageIndex; 614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public TranslateOptions(int sourceLanguageCode, int targetLanguageCode, String[] allLanguages, 64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) boolean alwaysTranslate, boolean triggeredFromMenu) { 654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) this(sourceLanguageCode, targetLanguageCode, allLanguages, false, false, alwaysTranslate, 66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) triggeredFromMenu, null); 674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Copy constructor 714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public TranslateOptions(TranslateOptions other) { 734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) this(other.mSourceLanguageIndex, other.mTargetLanguageIndex, other.mAllLanguages, 744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) other.mOptions[NEVER_LANGUAGE], other.mOptions[NEVER_DOMAIN], 75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) other.mOptions[ALWAYS_LANGUAGE], other.mTriggeredFromMenu, 76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) other.mOriginalOptions); 774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public String sourceLanguage() { 80a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (checkLanguageBoundaries(mSourceLanguageIndex)) { 81a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (mAllLanguages[mSourceLanguageIndex].isEmpty()) { 82a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return TranslateOptions.UNTRANSLATED_LANGUAGE_PLAHOLDER; 83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return mAllLanguages[mSourceLanguageIndex]; 85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return ""; 874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public String targetLanguage() { 90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (checkLanguageBoundaries(mTargetLanguageIndex)) { 91a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (mAllLanguages[mTargetLanguageIndex].isEmpty()) { 92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return TranslateOptions.UNTRANSLATED_LANGUAGE_PLAHOLDER; 93a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return mAllLanguages[mTargetLanguageIndex]; 95a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return ""; 974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public int sourceLanguageIndex() { 1004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return checkLanguageBoundaries(mSourceLanguageIndex) ? mSourceLanguageIndex : 0; 1014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public int targetLanguageIndex() { 1044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return checkLanguageBoundaries(mTargetLanguageIndex) ? mTargetLanguageIndex : 0; 1054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 107a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public boolean triggeredFromMenu() { 108a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return mTriggeredFromMenu; 109a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 110a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean optionsChanged() { 1124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return (mSourceLanguageIndex != mOriginalSourceLanguageIndex) || 1134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) (mTargetLanguageIndex != mOriginalTargetLanguageIndex) || 1144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) (mOptions[NEVER_LANGUAGE] != mOriginalOptions[NEVER_LANGUAGE]) || 1154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) (mOptions[NEVER_DOMAIN] != mOriginalOptions[NEVER_DOMAIN]) || 1164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) (mOptions[ALWAYS_LANGUAGE] != mOriginalOptions[ALWAYS_LANGUAGE]); 1174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public List<String> allLanguages() { 1214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return Collections.unmodifiableList(Arrays.asList(mAllLanguages)); 1224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean neverTranslateLanguageState() { 1254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return mOptions[NEVER_LANGUAGE]; 1264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean alwaysTranslateLanguageState() { 1294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return mOptions[ALWAYS_LANGUAGE]; 1304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean neverTranslateDomainState() { 1334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return mOptions[NEVER_DOMAIN]; 1344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean setSourceLanguage(int languageIndex) { 1374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) boolean canSet = canSetLanguage(languageIndex, mTargetLanguageIndex); 1384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (canSet) { 1394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mSourceLanguageIndex = languageIndex; 1404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return canSet; 1424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean setTargetLanguage(int languageIndex) { 1454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) boolean canSet = canSetLanguage(mSourceLanguageIndex, languageIndex); 1464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (canSet) { 1474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mTargetLanguageIndex = languageIndex; 1484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return canSet; 1504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 1534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Sets the new state of never translate domain. 1544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * 1554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @return true if the toggling was possible 1564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 1574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean toggleNeverTranslateDomainState(boolean value) { 1584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return toggleState(NEVER_DOMAIN, value); 1594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 1624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Sets the new state of never translate language. 1634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * 1644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @return true if the toggling was possible 1654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 1664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean toggleNeverTranslateLanguageState(boolean value) { 1674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Do not toggle if we are activating NeverLanguge but AlwaysTranslate 1684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // for a language pair with the same source language is already active. 1694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (mOptions[ALWAYS_LANGUAGE] && value) { 1704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return false; 1714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return toggleState(NEVER_LANGUAGE, value); 1734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 1764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Sets the new state of never translate a language pair. 1774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * 1784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @return true if the toggling was possible 1794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 1804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public boolean toggleAlwaysTranslateLanguageState(boolean value) { 1814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Do not toggle if we are activating AlwaysLanguge but NeverLanguage is active already. 1824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (mOptions[NEVER_LANGUAGE] && value) { 1834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return false; 1844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return toggleState(ALWAYS_LANGUAGE, value); 1864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private boolean toggleState(int element, boolean newValue) { 1894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (!checkElementBoundaries(element)) 1904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return false; 1914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) mOptions[element] = newValue; 1934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return true; 1944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private boolean checkLanguageBoundaries(int index) { 1984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return index >= 0 && index < mAllLanguages.length; 1994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 2004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private boolean canSetLanguage(int sourceIndex, int targetIndex) { 2024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (sourceIndex == targetIndex) 2034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return false; 2044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return checkLanguageBoundaries(sourceIndex) && checkLanguageBoundaries(targetIndex); 2054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 2064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private static boolean checkElementBoundaries(int element) { 2094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return element >= NEVER_LANGUAGE && element <= ALWAYS_LANGUAGE; 2104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 2114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @Override 2134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public String toString() { 2144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return new StringBuilder() 2154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(sourceLanguage()) 2164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(" -> ") 2174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(targetLanguage()) 2184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(" - ") 2194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append("Never Language:") 2204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(mOptions[NEVER_LANGUAGE]) 2214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(" Always Language:") 2224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(mOptions[ALWAYS_LANGUAGE]) 2234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(" Never Domain:") 2244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .append(mOptions[NEVER_DOMAIN]) 2254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) .toString(); 2264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 2274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 228