/* * Copyright 2007 Sun Microsystems, Inc. * All rights reserved. You may not modify, use, * reproduce, or distribute this software except in * compliance with the terms of the License at: * http://developer.sun.com/berkeley_license.html */ package com.sun.bookstore6.backing; import com.sun.bookstore6.backing.AbstractBean; import com.sun.bookstore6.listeners.AreaSelectedEvent; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import java.util.HashMap; import java.util.Locale; /** * <p>This is the main bean for the application. It maintains a * <code>Map</code> of {@link CarBean} instances, keyed by model name, * and a <code>Map</code> of {@link CarCustomizer} instances, keyed by * package name. The <code>CarBean</code> instances in the model * <code>Map</code> are accessed from several pages, as described * below.</p> * * <p>Several pages in the application use this bean as the target of * method reference and value reference expressions.</p> * * <ul> * * <li><p>The "chooseLocale" page uses <code>actionListener</code> * attributes to point to the {@link #chooseLocaleFromMap} and {@link * #chooseLocaleFromLink} methods.</p></li> * * <li><p>The "storeFront" page uses value binding expressions to pull * information about four of the known car models in the store.</p></li> * * <li><p>The "carDetail" page uses value binding expressions to pull * information about the currently chosen model. It also uses the * <code>action</code> attribute to convey the user's package * choices.</p></li> * * <li><p>The "confirmChoices" page uses value binding expressions to * pull the user's choices from the currently chosen model.</p></li> * * </ul> */ public class LocaleBean extends AbstractBean { /** * <p>The locales to be selected for each hotspot, keyed by the * alternate text for that area.</p> */ private HashMap<String, Locale> locales = null; public LocaleBean() { locales = new HashMap<String, Locale>(4); locales.put( "NAmerica", new Locale("en", "US")); locales.put( "SAmerica", new Locale("es", "MX")); locales.put( "Germany", new Locale("de", "DE")); locales.put( "France", new Locale("fr", "FR")); } // // ActionListener handlers // public void chooseLocaleFromMap(ActionEvent actionEvent) { AreaSelectedEvent event = (AreaSelectedEvent) actionEvent; String current = event.getMapComponent() .getCurrent(); FacesContext context = FacesContext.getCurrentInstance(); context.getViewRoot() .setLocale((Locale) locales.get(current)); } public void chooseLocaleFromLink(ActionEvent event) { String current = event.getComponent() .getId(); FacesContext context = FacesContext.getCurrentInstance(); context.getViewRoot() .setLocale((Locale) locales.get(current)); } }