Mega Code Archive

 
Categories / Java / Swing Components
 

JLocaleChooser is a bean for choosing locales

/*  *  JLocaleChooser.java  - A bean for choosing locales  *  Copyright (C) 2004 Kai Toedter  *  kai@toedter.com  *  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; }