home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 November / Chip_1998-11_cd.bin / tema / Cafe / jfc.bin / AccessibleBundle.java < prev    next >
Text File  |  1998-02-26  |  5KB  |  125 lines

  1. /*
  2.  * @(#)AccessibleBundle.java    1.6 98/02/04 
  3.  * 
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  * 
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  * 
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  * 
  19.  */
  20.  
  21. package com.sun.java.accessibility;
  22.  
  23. import java.util.Vector;
  24. import java.util.Locale;
  25. import java.util.MissingResourceException;
  26. import java.util.ResourceBundle;
  27.  
  28. /**
  29.  * <p>Base class used to maintain a strongly typed enumeration.  This is
  30.  * the superclass of 
  31.  * <a href="com.sun.java.accessibility.AccessibleState.html">AccessibleState</a>
  32.  * and 
  33.  * <a href="com.sun.java.accessibility.AccessibleRole.html">AccessibleRole</a>. 
  34.  * <p>The toDisplayString method allows you to obtain the localized string 
  35.  * for a locale independent key from a predefined ResourceBundle for the 
  36.  * keys defined in this class.  This localized string is intended to be
  37.  * readable by humans.
  38.  *
  39.  * @see AccessibleRole
  40.  * @see AccessibleState
  41.  *
  42.  * @version     1.6 02/04/98 11:12:57
  43.  * @author      Willie Walker
  44.  * @author    Peter Korn
  45.  */
  46. public abstract class AccessibleBundle {
  47.  
  48.     /**
  49.      * The locale independent name of the state.  This is a programmatic 
  50.      * name that is not intended to be read by humans.
  51.      * @see #toDisplayString
  52.      */
  53.     protected String key = null;
  54.  
  55.     /**
  56.      * Obtain the key as a localized string. 
  57.      * If a localized string cannot be found for the key, the 
  58.      * locale independent key stored in the role will be returned. 
  59.      * This method is intended to be used only by subclasses so that they 
  60.      * can specify their own resource bundles which contain localized
  61.      * strings for their keys.
  62.      * @param resourceBundleName the name of the resource bundle to use for 
  63.      * lookup
  64.      * @param locale the locale for which to obtain a localized string
  65.      * @return a localized String for the key.
  66.      */
  67.     protected String toDisplayString(String resourceBundleName, 
  68.                          Locale locale) {
  69.         // [[[FIXME:  WDW - obtaining resource bundles can be
  70.         // expensive, especially when obtaining them from ASCII
  71.         // properties files.  A time performace improvement can be
  72.         // made here if we cache the resource bundles by locale.
  73.         // We probably should also see if ResourceBundle itself
  74.         // caches these for us.  If it does, it would be nice.]]]
  75.         ResourceBundle resources;
  76.         String displayString = null;
  77.  
  78.         try {
  79.             resources = ResourceBundle.getBundle(resourceBundleName, 
  80.                                                  locale);
  81.             displayString = resources.getString(key);
  82.         } catch (MissingResourceException mre) {
  83.             System.err.println(mre 
  84.             + ":  " + resourceBundleName + " not found");
  85.         }
  86.  
  87.         if (displayString != null) {
  88.         return displayString;
  89.     } else {
  90.         return key;
  91.         }
  92.     }
  93.  
  94.     /**
  95.      * Obtain the key as a localized string. 
  96.      * If a localized string cannot be found for the key, the 
  97.      * locale independent key stored in the role will be returned. 
  98.      *
  99.      * @param locale the locale for which to obtain a localized string
  100.      * @return a localized String for the key.
  101.      */
  102.     public String toDisplayString(Locale locale) {
  103.         return toDisplayString(
  104.         "com.sun.java.accessibility.AccessibleResourceBundle", 
  105.                 locale);
  106.     }
  107.  
  108.     /** 
  109.      * Get localized string describing the key using the default locale.
  110.      * @return a localized String describing the key for the default locale
  111.      */
  112.     public String toDisplayString() {
  113.         return toDisplayString(Locale.getDefault());
  114.     }
  115.  
  116.     /** 
  117.      * Get localized string describing the key using the default locale.
  118.      * @return a localized String describing the key using the default locale
  119.      * @see #toDisplayString
  120.      */
  121.     public String toString() {
  122.         return toDisplayString();
  123.     }
  124. }
  125.