LanguageSelectionDialog.java :  » IDE » Schmortopf » Schmortopf » Main » MainUIComponents » Java Open Source

Java Open Source » IDE » Schmortopf 
Schmortopf » Schmortopf » Main » MainUIComponents » LanguageSelectionDialog.java
package Schmortopf.Main.MainUIComponents;


  /**
   *    The dialog for language selection.
   */


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.plaf.metal.*;
import java.util.*;
import java.io.*;

import Schmortopf.Utility.*;
import Schmortopf.Utility.gui.*;
import Schmortopf.Main.IDE_MainFrameProvider;
import Schmortopf.Utility.IniFile.IniFile;


import Language.Language;       
import Language.Editor.*;
                   
                   
        
public class LanguageSelectionDialog extends JDialog

{

  // Inifile key :
  public static final String SelectedLanguageKey = "Selected Language";


  private String selectedLanguage;
  //private String[] availableLanguages, availableInternalLanguages;
  final Vector availableLanguagesVector = new Vector();

  private ButtonGroup languageGroup;
  private JRadioButton[] languageButtons;

                      


  public LanguageSelectionDialog( final JFrame parentFrame,
                                  final IDE_MainFrameProvider mainFrameProvider )
  {
    super(parentFrame);
    this.setTitle("Schmortopf Language Selection ");
    this.setModal( true );
    this.getContentPane().setLayout( new BorderLayout() );
    final int spaceUnit = UIManager.getFont("Label.font").getSize();

    this.selectedLanguage   = Language.GetInstance().GetActualTranslation();
    boolean fromJarFile     = Language.GetInstance().GetActualTranslationWasReadFromJarFile();

    String[] availableInternalLanguages = Language.GetInstance().GetAvailableInternalLanguages();
    String[] availableExternalLanguages = Language.GetInstance().GetAvailableLanguages();


    for(int i=0; i<availableInternalLanguages.length; i++)
    {
      AvailableLanguage al = new AvailableLanguage(availableInternalLanguages[i], true);
      availableLanguagesVector.addElement(al);
    }

    for(int i=0; i<availableExternalLanguages.length; i++)
    {
      AvailableLanguage al = new AvailableLanguage(availableExternalLanguages[i], false);
      availableLanguagesVector.addElement(al);                      
    }



    // Put all into a mainPanel with some border space :
    final JPanel mainPanel = new JPanel( new BorderLayout(0,0) );
    int bsp = UIManager.getFont("TextField.font").getSize()/2;
    mainPanel.setBorder( BorderFactory.createEmptyBorder(bsp,bsp,bsp,bsp));
    this.getContentPane().add( mainPanel, BorderLayout.CENTER );

    JPanel radioPanel = new JPanel();
    final BoxLayout radioLayout = new BoxLayout( radioPanel, BoxLayout.Y_AXIS );
    radioPanel.setLayout(radioLayout);
    Border ob = BorderFactory.createEtchedBorder();
    Border ib = BorderFactory.createEmptyBorder(0,spaceUnit,0,spaceUnit);
    radioPanel.setBorder( BorderFactory.createCompoundBorder(ob,ib) );
    this.languageGroup = new ButtonGroup();
    this.languageButtons = new JRadioButton[ availableLanguagesVector.size() ];
       
    for( int i=0; i < availableLanguagesVector.size(); i++ )
    {
       AvailableLanguage al = (AvailableLanguage) availableLanguagesVector.elementAt(i);

       this.languageButtons[i] = new JRadioButton( al.uiText );
       this.languageGroup.add(this.languageButtons[i]);
       radioPanel.add( this.languageButtons[i] );
       // Autoselect the active language :

       if(  al.name.equals( this.selectedLanguage )
         && al.isEmbeddedInJarfile == fromJarFile )
       {
          this.languageButtons[i].setSelected(true);
       }
    }
    JContrastLabel titleLabel = new JContrastLabel(Language.Translate("Available Languages"));
    JContrastLabel bottomLabel = new JContrastLabel(Language.Translate("Changes need a restart of the IDE."));
    mainPanel.add( titleLabel, BorderLayout.NORTH  );
    mainPanel.add( radioPanel, BorderLayout.CENTER );
    mainPanel.add( bottomLabel, BorderLayout.SOUTH );

    // editor

    JPanel editorPanel = new EFCNGradientPanel( new BorderLayout(0,0),
                                                      EFCNGradientPanel.ApplyUpperLeftCornerHighLight,
                                                      EFCNGradientPanel.StrongGradientStrength,
                                                      EFCNGradientPanel.ActiveTitleBackground );

    JPanel wrapPanel = new JPanel(new BorderLayout());
    wrapPanel.add(editorPanel, BorderLayout.CENTER);
    this.getContentPane().add(wrapPanel, BorderLayout.NORTH);
    //Border innerBorder = BorderFactory.createEmptyBorder(0, spaceUnit/2, spaceUnit/2, spaceUnit/2);
    Border outerBorder = new CustomEtchedBorder(false,false,true,false);

    wrapPanel.setBorder( outerBorder );

    JTextArea explainEditorTA = new JTextArea(
     Language.Translate("The language editor allows you to create\nnew language packs or edit existing\nlanguage packs."));
    explainEditorTA.setEditable(false);
    explainEditorTA.setOpaque(false);
    explainEditorTA.setBorder(BorderFactory.createEmptyBorder(spaceUnit, spaceUnit, spaceUnit, spaceUnit));
    editorPanel.add( explainEditorTA, BorderLayout.CENTER );

    JSenseButton editButton = new JSenseButton(" "+Language.Translate("Language Editor")+"  ",
         mainFrameProvider.loadImageIcon("pics/menupics/edit.gif"), true, mainFrameProvider);
    JPanel wr2 = new JPanel(new FlowLayout());
    wr2.add(editButton);
    wr2.setOpaque(false);
    
    editorPanel.add( wr2, BorderLayout.EAST );
    editButton.addActionListener( new ActionListener()
    {
      public void actionPerformed( ActionEvent e )
      {
        saveChoice();
        // stop this modal dialog
        setVisible(false);
        TranslationEditor te = new TranslationEditor();
      }
    });

    // Make a buttonpanel in the south with an OK and a cancel button,
    // which closes this dialog :
    final JPanel buttonPanel = new EFCNGradientPanel( new FlowLayout(),
                                                      EFCNGradientPanel.ApplyVerticalHighLight,
                                                      EFCNGradientPanel.StrongGradientStrength,
                                                      EFCNGradientPanel.ActiveTitleBackground );

    buttonPanel.setBorder( BorderFactory.createEtchedBorder() );
    this.getContentPane().add( buttonPanel, BorderLayout.SOUTH );


    final ImageIcon okIcon = mainFrameProvider.loadImageIcon("pics/menupics/ok.gif");
    JSenseButton okButton = new JSenseButton(" "+Language.Translate("Save and Close")+"  ",
         okIcon, true, mainFrameProvider);
    buttonPanel.add( okButton );

    okButton.addActionListener( new ActionListener()
     {
       public void actionPerformed( ActionEvent e )
       {

         saveChoice();
         // Then close it :
         setVisible(false);
       }
     });                                              

    final ImageIcon cancelIcon = mainFrameProvider.loadImageIcon("pics/menupics/cancel.gif");
    JSenseButton cancelButton = new JSenseButton("   Cancel      ",cancelIcon,true,mainFrameProvider);
    buttonPanel.add( cancelButton );
    cancelButton.addActionListener( new ActionListener()
     {
       public void actionPerformed( ActionEvent e )
       {
         setVisible(false);
       }
     });

    // set location and size :
    this.pack();

    ActionListener escapeActionListener = new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
         setVisible(false);
      }
    };
    this.getRootPane().registerKeyboardAction( escapeActionListener,
                                               KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0, true),
                                               JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);

  } // Constructor


  private void saveChoice()
  {
         // Save the selected language :
         AvailableLanguage selectedLanguage = null;
         for( int i=0; i < languageButtons.length; i++ )
         {
            if( languageButtons[i].isSelected() )
            {
               selectedLanguage = (AvailableLanguage) availableLanguagesVector.elementAt(i);
               break;
            }
         }
         
         // this also saves the settings
         if(selectedLanguage!=null)
         {
            Language.GetInstance().setActualTranslation( selectedLanguage.name, selectedLanguage.isEmbeddedInJarfile );
         }          
  }


  class AvailableLanguage
  {
    public AvailableLanguage(String name, boolean isEmbeddedInJarfile)
    {
      this.name = name;
      this.isEmbeddedInJarfile = isEmbeddedInJarfile;
      this.uiText = name;

      if(name.equalsIgnoreCase("English") || isEmbeddedInJarfile)
      {
         uiText += "  [ "+Language.Translate("embedded in the jar file")+" ]";
      }
    }

    String uiText;
    String name;
    boolean isEmbeddedInJarfile;
  }



  public void showAt( int xp, int yp )
  {
     this.setLocation(xp,yp);
     this.show();
  }





} // LanguageSelectionDialog







java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.