Project: Calendar-Application
/*
 *  JLocaleChooser.java  - A bean for choosing locales 
 *  Copyright (C) 2004 Kai Toedter 
 *  www.toedter.com 
 * 
 *  This program is free software; you can redistribute it and/or 
 *  modify it under the terms of the GNU Lesser General Public License 
 *  as published by the Free Software Foundation; either version 2 
 *  of the License, or (at your option) any later version. 
 * 
 *  This program is distributed in the hope that it will be useful, 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 *  GNU Lesser General Public License for more details. 
 * 
 *  You should have received a copy of the GNU Lesser General Public License 
 *  along with this program; if not, write to the Free Software 
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 
 */
 
package com.toedter.components; 
 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 
import java.util.Calendar; 
import java.util.Locale; 
 
import javax.swing.JComboBox; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
 
/**
 * JLocaleChooser is a bean for choosing locales. 
 *  
 * @author Kai Toedter 
 * @version $LastChangedRevision: 85 $ 
 * @version $LastChangedDate: 2006-04-28 13:50:52 +0200 (Fr, 28 Apr 2006) $ 
 */
 
public class JLocaleChooser extends JComboBox implements ItemListener { 
 private static final long serialVersionUID = 8152430789764877431L
 protected JComponent component; 
 
 /**
  * Default JLocaleChooser constructor. 
  */
 
 public JLocaleChooser() { 
     this(null); 
 
 
    /**
     * Returns "JLocaleChoose". 
     * 
     * @return the name value 
     */
 
    public String getName() { 
        return "JLocaleChoose"
    } 
 
 /**
  * Default JLocaleChooser constructor. 
  */
 
 public JLocaleChooser(JComponent component) { 
  super(); 
  this.component = component; 
  addItemListener(this); 
  locales = Calendar.getAvailableLocales(); 
  localeCount = locales.length; 
 
  for (int i = 0; i < localeCount; i++) { 
   if (locales[i].getCountry().length() > 0) { 
    addItem(locales[i].getDisplayName()); 
   
  
 
  setLocale(Locale.getDefault()); 
 
 
 /**
  * The ItemListener for the locales. 
  */
 
 public void itemStateChanged(ItemEvent iEvt) { 
  String item = (String) iEvt.getItem(); 
  int i; 
 
  for (i = 0; i < localeCount; i++) { 
   if (locales[i].getDisplayName().equals(item)) 
    break
  
  setLocale(locales[i], false); 
 
 
 /**
  * Sets the locale. 
  *  
  * @see #getLocale 
  */
 
 private void setLocale(Locale l, boolean select) { 
  Locale oldLocale = locale; 
  locale = l; 
  int n = 0
 
  if (select) { 
   for (int i = 0; i < localeCount; i++) { 
    if (locales[i].getCountry().length() > 0) { 
     if (locales[i].equals(locale)) 
      setSelectedIndex(n); 
     n += 1
    
   
  
 
  firePropertyChange("locale", oldLocale, locale); 
  if(component != null) { 
      component.setLocale(l); 
  
 
 
 /**
  * Sets the locale. This is a bound property. 
  *  
  * @see #getLocale 
  */
 
 public void setLocale(Locale l) { 
  setLocale(l, true); 
 
 
 /**
  * Returns the locale. 
  */
 
 public Locale getLocale() { 
  return locale; 
 
 
 /**
  * Creates a JFrame with a JLocaleChooser inside and can be used for 
  * testing. 
  */
 
 static public void main(String[] s) { 
  JFrame frame = new JFrame("LocaleChooser"); 
  frame.getContentPane().add(new JLocaleChooser()); 
  frame.pack(); 
  frame.setVisible(true); 
 
 
 private Locale[] locales; 
 private Locale locale; 
 private int localeCount; 
}