Logo
Distributed Genetic Programming Framework
print print

File org.sfc.config.Language.java

Here you can find all the information about the file org.sfc.config.Language.java. You may explore it here or download it onto your local disk.
/*
 * Copyright (c) 2005 Thomas Weise
 *
 * E-Mail           : tweise@gmx.de
 * Creation Date    : 2005-09-06 12:09:01
 * Original Filename: org.sfc.config.Language.java
 * Version          : 3.0.1
 * Last modification: 2006-05-28
 *                by: Thomas Weise
 *
 * License          : GNU LESSER GENERAL PUBLIC LICENSE
 *                    Version 2.1, February 1999
 *                    You should have received a copy of this license along
 *                    with this library; if not, write to the Free Software
 *                    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *                    MA 02111-1307, USA or download the license under
 *                    http://www.gnu.org/copyleft/lesser.html.
 *
 * Warranty         : This software is provided "as is" 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.
 */


package org.sfc.config;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.util.Locale;

import javax.swing.Icon;
import javax.swing.UIManager;

import org.sfc.events.EventPropagator;
import org.sfc.events.IEventListener;
import org.sfc.gui.DefaultIcon;
import org.sfc.gui.Design;
import org.sfc.id.ID;
import org.sfc.id.IDManager;
import org.sfc.utils.Typesafe;

/**
 * This class is used to identify languages.
 *
 * @author Thomas Weise
 */

public final  class Language extends ID<String, Language>
  {
/**
 * The serial version uid.
 */

  private static  final long           serialVersionUID = 1;
/**
 * The internal id manager.
 */

  public  static final IDManager<String, Language> LANGUAGES  = 
    new IDManager<String, Language>();
/**
 * The internal event multiplexer.
 */

  private static final EventPropagator     EVENTS     = new EventPropagator();
/**
 * The internal system event multiplexer.
 */

  private static final EventPropagator     SYS_EVENTS = new EventPropagator();


/**
 * The constant for the german language.
 */

  public  static  final Language        GERMAN ;

/**
 * The constant for the english language.
 */

  public  static  final Language        ENGLISH ;

/**
 * The default language.
 */

  public  static  final Language        DEFAULT   ;
/**
 * The current language.
 */

  private static        Language        s_current ;

/**
 * The language's locale.
 */

  private         final Locale          m_locale  ;
/**
 * The icon of the representing the language.
 */

  private               Icon            m_icon    ;


/**
 * The icon for the german language.
 */

  private static  final Icon    ICO_GERMAN  = new DefaultIcon(24, 24)
    {
    @Override
    public  void paintIcon(final  Component p_c,
                           final  Graphics  p_g,
                           final  int       p_x,
                                  int       p_y)
        {
        p_y += 3;

        p_g.setColor(Color.BLACK);
        p_g.fillRect(p_x, p_y, 24, 6);
        p_y += 6;

        p_g.setColor(Color.RED);
        p_g.fillRect(p_x, p_y, 24, 6);
        p_y += 6;

        p_g.setColor(Design.GOLD);
        p_g.fillRect(p_x, p_y, 24, 6);
        }
    };

/**
 * The icon for the english language.
 */

  private static  final Icon    ICO_BRITISH  = new DefaultIcon(24, 24)
    {
    private final BasicStroke RED_1   =
                      new BasicStroke(2.0f);
    private final BasicStroke RED_2   =
                      new BasicStroke(this.RED_1.getLineWidth() + 1.0f);
    private final BasicStroke WHITE_1 =
                      new BasicStroke(this.RED_2.getLineWidth() + 1.0f);
    private final Stroke      WHITE_2 =
                      new BasicStroke(this.WHITE_1.getLineWidth() + 1.0f);

    @Override
    public  void paintIcon(final  Component p_c,
                           final  Graphics  p_g,
                           final  int       p_x,
                                  int       p_y)
        {
        Graphics2D l_g;

        p_y += 3;
        p_g.setColor(Color.BLUE);
        p_g.fillRect(p_x, p_y, 24, 18);
        p_g.setClip(p_x, p_y, 24, 18);

        l_g = ((Graphics2D)p_g);

        l_g.setColor(Color.WHITE);
        l_g.setStroke(this.WHITE_1);
        l_g.drawLine(p_x, p_y, p_x + 24, p_y + 18);
        l_g.drawLine(p_x, p_y + 18, p_x + 24, p_y);

        l_g.setColor(Color.RED);
        l_g.setStroke(this.RED_1);
        l_g.drawLine(p_x, p_y, p_x + 24, p_y + 18);
        l_g.drawLine(p_x, p_y + 18, p_x + 24, p_y);

        l_g.setColor(Color.WHITE);
        l_g.setStroke(this.WHITE_2);
        l_g.drawLine(p_x, p_y + 9, p_x + 24, p_y + 9);
        l_g.drawLine(p_x + 12, p_y, p_x + 12, p_y + 18);

        l_g.setColor(Color.RED);
        l_g.setStroke(this.RED_2);
        l_g.drawLine(p_x, p_y + 9, p_x + 24, p_y + 9);
        l_g.drawLine(p_x + 12, p_y, p_x + 12, p_y + 18);
        }
    };

/**
 * Create a new language constant for the given locale.
 * @param p_locale  The locale to create the language constant for.
 * @param p_icon    The icon that represents the language.
 */

  private Language  (final Locale p_locale,
                     final Icon   p_icon)
    {
    super(p_locale.getDisplayLanguage(p_locale));

    this.m_locale = p_locale;
    this.m_icon   = p_icon;
    }


/**
 * Add a new event sink that is interested in being informed whenever the
 * system language changes.
 * @param p_sink  The sink to be attached.
 * @see #remove_listener(IEventListener)
 */

  public static final void add_listener(final IEventListener p_sink)
    {
    if(Typesafe.is_sfc_system_object(p_sink))
      {
      SYS_EVENTS.add_listener(p_sink);
      }
    else
      {
      EVENTS.add_listener(p_sink);
      }
    }

/**
 * Removes an event sink that is not anly longer interested in being
 * informed whenever the system language changes.
 * @param p_sink  The sink to be removed.
 * @see #add_listener(IEventListener)
 */

  public static void remove_listener(final IEventListener p_sink)
    {
    if(Typesafe.is_sfc_system_object(p_sink))
      {
      SYS_EVENTS.remove_listener(p_sink);
      }
    else
      {
      EVENTS.remove_listener(p_sink);
      }
    }


/**
 * Create a new language constant for the given locale.
 * @param p_locale  The locale to create the language constant for.
 * @param p_icon    The icon that represents the language.
 * @return  The language identifying the given locale.
 */

  public  static  final Language  create_language (final Locale p_locale,
                                                   final Icon   p_icon)
    {
    if(p_locale == null) return null;

    synchronized(LANGUAGES)
      {
      for(Language l_l : LANGUAGES)
        {
        if(l_l.m_locale.equals(p_locale))
          {
          if(l_l.m_icon == null)
            {
            l_l.m_icon = p_icon;
            }

          return l_l;
          }
        }

      return new Language(p_locale, p_icon);
      }
    }


  static
    {
    Locale    l_l;
    Language  l_d;
    String    l_q;

    synchronized(Language.class)
      {
      GERMAN  = create_language(Locale.GERMAN,  ICO_GERMAN);
      ENGLISH = create_language(Locale.ENGLISH, ICO_BRITISH);
  
      l_l = Locale.getDefault();
      l_q = l_l.getLanguage();
      l_d = null;
      for(Language l_x : LANGUAGES)
        {
        if(l_x.m_locale.getLanguage().equals(l_q))
          {
          l_d = l_x;
          break;
          }
        }
  
      if(l_d == null) l_d = new Language(l_l, null);
  
      s_current = l_d;
      DEFAULT   = l_d;
      }
    }

/**
 * Returns the icon representing best this language.
 * @return The icon representing best this language.
 */

  public  final Icon  get_icon  ()
    {
    return this.m_icon;
    }


/**
 * Returns the locale represented by this language constant.
 * @return The locale represented by this language constant.
 */

  public  final Locale  get_locale  ()
    {
    return this.m_locale;
    }

/**
 * Returns the language currently active.
 * @return The language currently active.
 */

  public  static final Language  get_current ()
    {
    return s_current;
    }

/**
 * This method sets this language as display language.
 */

  public  final void  set()
    {
    Language      l_o;
    LanguageEvent l_e;

    synchronized(LANGUAGES)
      {
      if(this != s_current)
        {
        l_o       = s_current;
        s_current = this;
        Locale.setDefault(this.m_locale);
        UIManager.getDefaults().setDefaultLocale(this.m_locale);
        l_e = new LanguageEvent(l_o, this);
        SYS_EVENTS.receive(l_e);
        EVENTS.receive(l_e);
        }
      }
    }

/**
 * Obtain the manager for the ids of this type.
 * @return  The manager for the ids of this type.
 */

  @Override
  protected final IDManager<String, Language> get_manager ()
    {
    return LANGUAGES;
    }
  }

File Information:

file name:Language.java
package:org.sfc.config
qualified name:org.sfc.config.Language.java
file type:Java Source File
download location:download http://dgpf.sourceforge.net/source/org/sfc/config/Language.java
size:9.176 KB (9397 B)
uploaded: 2015-07-22 04:11:11 GMT+0000
last update: 2006-05-30 12:39:57 GMT+0000
last access: 2018-01-22 00:15:29 GMT+0000

statistics online since 2006-01-02.   RSS Feed
Contact us by sending an email to tweise@gmx.de to receive further information, to report errors, or to join our project.
All content on this site (http://dgpf.sourceforge.net/) is LGPL-licensed.
http://dgpf.sourceforge.net/scripts/source/source.php last modified at 2015-07-22 04:10:53 GMT+0000 served at 2018-01-22 00:15:29 GMT+0000.
Valid CSS Valid XHTML 1.1
Valid RSS SourceForge.net Logo