Package net.xoetrope.samples.tramslate

Source Code of net.xoetrope.samples.tramslate.Welcome

package net.xoetrope.samples.tramslate;

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Properties;
import java.util.prefs.Preferences;
import net.xoetrope.optional.annotation.Find;
import net.xoetrope.optional.langmgr.EncodedLanguageResourceBundleLoader;
import net.xoetrope.swing.XComboBox;
import net.xoetrope.xui.XPage;
import net.xoetrope.xui.XPageManager;

/**
* Add support for localization
* @author luano
*/
public class Welcome extends XPage
{
  @Find
  private XComboBox languageList;
 
  private static boolean inChangeLang = false;   
  private Hashtable languages;
  private String selectedLanguage;
  private String defLangCode;
 
 
  /** Creates a new instance of Welcome */
  public Welcome()
  {
    project.setResourceBundleLoader( new EncodedLanguageResourceBundleLoader( project ));

    Preferences rsPrefs = Preferences.userNodeForPackage( getClass());
    defLangCode = rsPrefs.get( "defaultLanguage", "en" );
    project.setStartupParam( "Language", defLangCode );
    pageHelper.componentFactory.setResourceBundle( defLangCode );   
  }
 
  public void pageCreated()
  {
    fillLanguageList();
  }
 
  /**
   * Respond to a change in the language list by resetting the language
   */   
  public void changeLanguage()
  {
    if ( !inChangeLang )  {
      inChangeLang = true;
      String language = (String)languageList.getSelectedItem();
      if ( language != null ) {
        defLangCode = (String)languages.get( language );
        Preferences rsPrefs = Preferences.userNodeForPackage( getClass());
        rsPrefs.put( "defaultLanguage", defLangCode );
        project.setStartupParam( "Language", defLangCode );

        pageHelper.componentFactory.setResourceBundle( defLangCode );
        XPageManager pm = project.getPageManager();
        pm.reset();
        pm.showPage( "Welcome" );
        updateBoundComponentValues();
      }
      inChangeLang = false;
    }
  }
 
 
  /**
   * Read the language file and fill the language list
   */
  private void fillLanguageList()
  {
    try {
      inChangeLang = true;
      languages = new Hashtable();
      Properties props = new Properties();
      String selectedLanguageName = null;
      props.load( project.getInputStream( "LanguageList.properties" ));
      Enumeration propNames = props.propertyNames();
      while ( propNames.hasMoreElements() ) {
        String languageName = (String)propNames.nextElement();
        String languageCode = (String)props.get( languageName );
        if ( languageCode.equals( defLangCode ))
          selectedLanguageName = languageName;
        languages.put( languageName, languageCode );
        languageList.addItem( languageName );
      }
      if ( selectedLanguageName != null )
        languageList.select( (Object)selectedLanguageName );
      inChangeLang = false;
    }
    catch ( Exception ex ) {
    }
  }
}
TOP

Related Classes of net.xoetrope.samples.tramslate.Welcome

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.