diff options
Diffstat (limited to 'propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocaleInfo.java')
-rw-r--r-- | propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocaleInfo.java | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocaleInfo.java b/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocaleInfo.java deleted file mode 100644 index 0403351..0000000 --- a/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocaleInfo.java +++ /dev/null @@ -1,190 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 Google, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Google, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.wb.internal.core.nls.model; - -import java.util.Locale; - -/** - * Information about {@link Locale}. - * - * We separate {@link LocaleInfo} from {@link BundleInfo} because {@link BundleInfo} is wrapper for - * single *.properties file and we support more than one source of bundles in one - * {@link CompilationUnit}. - * - * @author scheglov_ke - * @coverage core.nls - */ -public final class LocaleInfo implements Comparable<LocaleInfo> { - /** - * The default {@link LocaleInfo}. - */ - public static final LocaleInfo DEFAULT = new LocaleInfo(null); - //////////////////////////////////////////////////////////////////////////// - // - // Instance fields - // - //////////////////////////////////////////////////////////////////////////// - private final Locale m_locale; - - //////////////////////////////////////////////////////////////////////////// - // - // Constructor - // - //////////////////////////////////////////////////////////////////////////// - public LocaleInfo(Locale locale) { - m_locale = locale; - } - - //////////////////////////////////////////////////////////////////////////// - // - // Object - // - //////////////////////////////////////////////////////////////////////////// - @Override - public String toString() { - return getTitle(); - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } - if (obj instanceof LocaleInfo) { - LocaleInfo localeInfo = (LocaleInfo) obj; - if (isDefault()) { - return localeInfo.isDefault(); - } - return m_locale.equals(localeInfo.m_locale); - } - return false; - } - - @Override - public int hashCode() { - if (isDefault()) { - return 0; - } - return m_locale.hashCode(); - } - - //////////////////////////////////////////////////////////////////////////// - // - // Comparable - // - //////////////////////////////////////////////////////////////////////////// - @Override -public int compareTo(LocaleInfo o) { - if (m_locale == null) { - if (o.m_locale == null) { - return 0; - } - return -1; - } - if (o.m_locale == null) { - return 1; - } - String localeNameA = m_locale.toString(); - String localeNameB = o.m_locale.toString(); - return localeNameA.compareTo(localeNameB); - } - - //////////////////////////////////////////////////////////////////////////// - // - // Access - // - //////////////////////////////////////////////////////////////////////////// - /** - * @return {@link Locale} for this {@link LocaleInfo}. - */ - public Locale getLocale() { - return m_locale; - } - - /** - * @return <code>true</code> if that {@link Locale} is default. - */ - public boolean isDefault() { - return m_locale == null; - } - - /** - * @return the title to display in UI. - */ - public String getTitle() { - if (isDefault()) { - return "(default)"; - } - return m_locale.toString(); - } - - //////////////////////////////////////////////////////////////////////////// - // - // Utils - // - //////////////////////////////////////////////////////////////////////////// - /** - * @return the "parent" {@link LocaleInfo} from given array.<br> - * Here "parent" is locale that is more general than current one.<br> - * For example "parent" locale for 'ru_RU' is 'ru'. - * - * If there are no parent locale in array, return default locale.<br> - */ - public LocaleInfo getParent(LocaleInfo locales[]) { - String localeName = m_locale.toString(); - int lastSeparatorIndex = localeName.lastIndexOf('_'); - if (lastSeparatorIndex != -1) { - String parentLocaleName = localeName.substring(0, lastSeparatorIndex); - // try to find locale with parent name - for (LocaleInfo locale : locales) { - if (locale.getLocale() != null && locale.getLocale().toString().equals(parentLocaleName)) { - return locale; - } - } - } - // use default - return LocaleInfo.DEFAULT; - } - - /** - * @param localeName - * the name of locale, such as "en" or "ru_RU". - * @param localeDescription - * the description of {@link Locale}, used in exception. - * @return the {@link LocaleInfo} which wraps {@link Locale}. - */ - public static LocaleInfo create(String localeName, String localeDescription) { - // try to find locale in list of available locales - Locale[] locales = Locale.getAvailableLocales(); - for (int i = 0; i < locales.length; i++) { - Locale locale = locales[i]; - if (locale.toString().equals(localeName)) { - return new LocaleInfo(locale); - } - } - // try to create new, this constructor is since 1.4, so do this in try/catch - try { - Locale locale; - int separatorIndex = localeName.indexOf('_'); - if (separatorIndex != -1) { - String language = localeName.substring(0, separatorIndex); - String country = localeName.substring(separatorIndex + 1); - locale = new Locale(language, country); - } else { - locale = new Locale(localeName); - } - return new LocaleInfo(locale); - } catch (Throwable e) { - String msg = "Locale not found for " + localeDescription; - throw new IllegalArgumentException(msg); - } - } -} |