001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package com.sun.rave.web.ui.util;
042:
043: import java.text.MessageFormat;
044: import java.util.ResourceBundle;
045:
046: /**
047: * <p>
048: * Utility methods for localized messages for design time classes. This class
049: * expects a resource bundle named <code>Bundle-DT</code> in the same pacakge
050: * as the class passed to its constructor. This class is also useful for
051: * design-time behavior in component renderers and so exists in this runtime
052: * package.
053: * </p>
054: */
055: public class Bundle {
056:
057: // ------------------------------------------------------------- Constructor
058:
059: /**
060: * <p>Construct a <code>Bundle</code> instance for the specified
061: * class.</p>
062: *
063: * @param clazz Class for which to construct a bundle instance
064: */
065: public Bundle(Class clazz) {
066: String name = clazz.getName();
067: int period = name.lastIndexOf('.'); // NOI18N
068: if (period >= 0) {
069: name = name.substring(0, period + 1);
070: } else {
071: name = "";
072: }
073: name += "Bundle-DT";
074: bundle = ResourceBundle.getBundle(name, format.getLocale(),
075: clazz.getClassLoader());
076: }
077:
078: // -------------------------------------------------------- Static Variables
079:
080: /**
081: * <p>The <code>MessageFormat</code> instance we will use for messages
082: * that require parameter replacement.</p>
083: */
084: private MessageFormat format = new MessageFormat("");
085:
086: // ------------------------------------------------------ Instance Variables
087:
088: /**
089: * <p>The <code>ResourceBundle</code> containing our messages.</p>
090: */
091: private ResourceBundle bundle;
092:
093: // ---------------------------------------------------------- Public Methods
094:
095: /**
096: * <p>Return the message for the specified key.</p>
097: *
098: * @param key Message key to look up
099: */
100: public String message(String key) {
101: return bundle.getString(key);
102: }
103:
104: /**
105: * <p>Return the message for the specified key, after substituting
106: * the specified parameters.</p>
107: *
108: * @param key Message key to look up
109: * @param params Replacement parameters
110: */
111: public String message(String key, Object params[]) {
112: String pattern = message(key);
113: synchronized (format) {
114: format.applyPattern(pattern);
115: return format.format(params);
116: }
117: }
118:
119: }
|