< prev index next >

src/java.desktop/share/classes/javax/accessibility/AccessibleBundle.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 23,32 **** --- 23,34 ---- * questions. */ package javax.accessibility; + import java.util.Enumeration; + import java.util.Hashtable; import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; import sun.awt.AWTAccessor;
*** 46,55 **** --- 48,59 ---- * @see AccessibleRole * @see AccessibleState */ public abstract class AccessibleBundle { + private static Hashtable<Locale, Hashtable<String, Object>> table = new Hashtable<>(); + private final String defaultResourceBundleName = "com.sun.accessibility.internal.resources.accessibility"; static { AWTAccessor.setAccessibleBundleAccessor(
*** 81,100 **** * found for the key, the locale independent key stored in the role will be * returned. This method is intended to be used only by subclasses so that * they can specify their own resource bundles which contain localized * strings for their keys. * ! * @param name the name of the resource bundle to use for lookup * @param locale the locale for which to obtain a localized string * @return a localized string for the key */ ! protected String toDisplayString(final String name, final Locale locale) { ! try { ! return ResourceBundle.getBundle(name, locale).getString(key); ! } catch (ClassCastException | MissingResourceException ignored) { ! return key; // return the non-localized key } } /** * Obtains the key as a localized string. If a localized string cannot be * found for the key, the locale independent key stored in the role will be --- 85,114 ---- * found for the key, the locale independent key stored in the role will be * returned. This method is intended to be used only by subclasses so that * they can specify their own resource bundles which contain localized * strings for their keys. * ! * @param resourceBundleName the name of the resource bundle to use for ! * lookup * @param locale the locale for which to obtain a localized string * @return a localized string for the key */ ! protected String toDisplayString(String resourceBundleName, ! Locale locale) { ! ! // loads the resource bundle if necessary ! loadResourceBundle(resourceBundleName, locale); ! ! // returns the localized string ! Hashtable<String, Object> ht = table.get(locale); ! if (ht != null) { ! Object o = ht.get(key); ! if (o != null && o instanceof String) { ! return (String)o; ! } } + return key; } /** * Obtains the key as a localized string. If a localized string cannot be * found for the key, the locale independent key stored in the role will be
*** 123,128 **** --- 137,171 ---- * @see #toDisplayString */ public String toString() { return toDisplayString(); } + + /** + * Loads the Accessibility resource bundle if necessary. + */ + private void loadResourceBundle(String resourceBundleName, + Locale locale) { + if (! table.containsKey(locale)) { + + try { + Hashtable<String, Object> resourceTable = new Hashtable<>(); + + ResourceBundle bundle = ResourceBundle.getBundle(resourceBundleName, locale); + + Enumeration<String> iter = bundle.getKeys(); + while(iter.hasMoreElements()) { + String key = iter.nextElement(); + resourceTable.put(key, bundle.getObject(key)); + } + + table.put(locale, resourceTable); + } + catch (MissingResourceException e) { + System.err.println("loadResourceBundle: " + e); + // Just return so toDisplayString() returns the + // non-localized key. + return; + } + } + } }
< prev index next >