001: package com.sun.jsfcl.app;
002:
003: import java.util.Locale;
004:
005: /*
006: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
007: *
008: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
009: *
010: * The contents of this file are subject to the terms of either the GNU
011: * General Public License Version 2 only ("GPL") or the Common
012: * Development and Distribution License("CDDL") (collectively, the
013: * "License"). You may not use this file except in compliance with the
014: * License. You can obtain a copy of the License at
015: * http://www.netbeans.org/cddl-gplv2.html
016: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
017: * specific language governing permissions and limitations under the
018: * License. When distributing the software, include this License Header
019: * Notice in each file and include the License file at
020: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
021: * particular file as subject to the "Classpath" exception as provided
022: * by Sun in the GPL Version 2 section of the License file that
023: * accompanied this code. If applicable, add the following below the
024: * License Header, with the fields enclosed by brackets [] replaced by
025: * your own identifying information:
026: * "Portions Copyrighted [year] [name of copyright owner]"
027: *
028: * Contributor(s):
029: *
030: * The Original Software is NetBeans. The Initial Developer of the Original
031: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
032: * Microsystems, Inc. All Rights Reserved.
033: *
034: * If you wish your version of this file to be governed by only the CDDL
035: * or only the GPL Version 2, indicate your decision by adding
036: * "[Contributor] elects to include this software in this distribution
037: * under the [CDDL or GPL Version 2] license." If you do not indicate a
038: * single choice of license, a recipient has the option to distribute
039: * your version of this file under either the CDDL, the GPL Version 2 or
040: * to extend the choice of license to its licensees as provided above.
041: * However, if you add GPL Version 2 code and therefore, elected the GPL
042: * Version 2 license, then the option applies only if the new code is
043: * made subject to such option by the copyright holder.
044: */
045:
046: /**
047: * <p><strong>AbstractApplicationBean</strong> is the abstract base class for
048: * data bean(s) that are stored in application scope attributes. It extends
049: * {@link FacesBean}, so it inherits all of the default behavior
050: * found there.</p>
051: */
052: public abstract class AbstractApplicationBean extends FacesBean {
053:
054: // ------------------------------------------------------------- Constructor
055:
056: /**
057: * <p>Create a new application scope bean.</p>
058: */
059: public AbstractApplicationBean() {
060: }
061:
062: // ------------------------------------------------------ Instance Variables
063:
064: /**
065: * <p>Mapping from the String version of the <code>Locale</code> for
066: * this response to the corresponding character encoding. For each
067: * row, the first String is the value returned by the toString() method
068: * for the java.util.Locale for the current view, and the second
069: * String is the name of the character encoding to be used.</p>
070: *
071: * <p>Only locales that use an encoding other than the default (UTF-8)
072: * need to be listed here.</p>
073: */
074: protected String encoding[][] = { { "zh_CN", "GB2312" }, // NOI18N
075: };
076:
077: // -------------------------------------------------------------- Properties
078:
079: /**
080: * <p>Return an appropriate character encoding based on the
081: * <code>Locale</code> defined for the current JavaServer Faces
082: * view. If no more suitable encoding can be found, return
083: * "UTF-8" as a general purpose default.</p>
084: *
085: * <p>This method makes a convenient value binding target for the
086: * <code>value</code> property of a <em>Set Encoding</em> component.
087: * Applications that wish to specialize this behavior can override
088: * this method in their own application bean class.</p>
089: */
090: public String getLocaleCharacterEncoding() {
091:
092: // Return the appropriate character encoding for this locale (if any)
093: Locale locale = getFacesContext().getViewRoot().getLocale();
094: if (locale == null) {
095: locale = Locale.getDefault();
096: }
097: String match = locale.toString();
098: for (int i = 0; i < encoding.length; i++) {
099: if (match.equals(encoding[i][0])) {
100: return encoding[i][1];
101: }
102: }
103:
104: // Return the default encoding value
105: return "UTF-8"; // NOI18N
106:
107: }
108:
109: }
|