/* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.inputmethod.keyboard.internal; import com.android.inputmethod.latin.utils.CollectionUtils; import java.util.HashMap; /** * !!!!! DO NOT EDIT THIS FILE !!!!! * * This file is generated by tools/make-keyboard-text. The base template file is * tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl * * This file must be updated when any text resources in keyboard layout files have been changed. * These text resources are referred as "!text/" in keyboard XML definitions, * and should be defined in * tools/make-keyboard-text/res/values-/donottranslate-more-keys.xml * * To update this file, please run the following commands. * $ cd $ANDROID_BUILD_TOP * $ mmm packages/inputmethods/LatinIME/tools/make-keyboard-text * $ make-keyboard-text -java packages/inputmethods/LatinIME/java/src * * The updated source file will be generated to the following path (this file). * packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/internal/ * KeyboardTextsTable.java */ public final class KeyboardTextsTable { // Name to index map. private static final HashMap sNameToIndexesMap = CollectionUtils.newHashMap(); // Language to texts table map. private static final HashMap sLanguageToTextsTableMap = CollectionUtils.newHashMap(); // TODO: Remove this variable after debugging. // Texts table to language maps. private static final HashMap sTextsTableToLanguageMap = CollectionUtils.newHashMap(); public static String getText(final String name, final String[] textsTable) { final Integer indexObj = sNameToIndexesMap.get(name); if (indexObj == null) { throw new RuntimeException("Unknown text name=" + name + " language=" + sTextsTableToLanguageMap.get(textsTable)); } final int index = indexObj; final String text = (index < textsTable.length) ? textsTable[index] : null; if (text != null) { return text; } // Sanity check. if (index >= 0 && index < LANGUAGE_DEFAULT.length) { return LANGUAGE_DEFAULT[index]; } // Throw exception for debugging purpose. throw new RuntimeException("Illegal index=" + index + " for name=" + name + " language=" + sTextsTableToLanguageMap.get(textsTable)); } public static String[] getTextsTable(final String language) { final String[] textsTable = sLanguageToTextsTableMap.get(language); return textsTable != null ? textsTable : LANGUAGE_DEFAULT; } private static final String[] NAMES = { // /* index:histogram */ "name", /* @NAMES@ */ }; private static final String EMPTY = ""; /* Default texts */ private static final String[] LANGUAGE_DEFAULT = { /* @DEFAULT_TEXTS@ */ }; /* @TEXTS@ */ // TODO: Use the language + "_" + region representation for the locale string key. // Currently we are dropping the region from the key. private static final Object[] LANGUAGES_AND_TEXTS = { // "locale", TEXT_ARRAY, /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */ /* @LANGUAGES_AND_TEXTS@ */ }; static { for (int index = 0; index < NAMES.length; index++) { sNameToIndexesMap.put(NAMES[index], index); } for (int i = 0; i < LANGUAGES_AND_TEXTS.length; i += 2) { final String language = (String)LANGUAGES_AND_TEXTS[i]; final String[] textsTable = (String[])LANGUAGES_AND_TEXTS[i + 1]; sLanguageToTextsTableMap.put(language, textsTable); sTextsTableToLanguageMap.put(textsTable, language); } } }