Ignore:
Timestamp:
2010-01-07T12:06:22+01:00 (14 years ago)
Author:
stoecker
Message:

fixed translation problems, i18n update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/preferences/LanguagePreference.java

    r2745 r2754  
    55
    66import java.awt.Component;
    7 import java.io.IOException;
    8 import java.lang.reflect.InvocationTargetException;
    97import java.util.ArrayList;
    108import java.util.Arrays;
    119import java.util.List;
    1210import java.util.Locale;
    13 import java.util.logging.Logger;
    1411
    1512import javax.swing.Box;
     
    2118import javax.swing.JPanel;
    2219import javax.swing.ListCellRenderer;
    23 import javax.swing.SwingUtilities;
    24 import javax.swing.event.ChangeEvent;
    25 import javax.swing.event.ChangeListener;
    2620
    2721import org.openstreetmap.josm.Main;
    28 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    29 import org.openstreetmap.josm.io.OsmTransferException;
    3022import org.openstreetmap.josm.tools.GBC;
    3123import org.openstreetmap.josm.tools.I18n;
    32 import org.xml.sax.SAXException;
    3324
    3425public class LanguagePreference implements PreferenceSetting {
    35     static private final Logger logger = Logger.getLogger(LanguagePreference.class.getName());
    36 
    3726    public static class Factory implements PreferenceSettingFactory {
    3827        public PreferenceSetting createPreferenceSetting() {
     
    5241        langCombo = new JComboBox(model);
    5342        langCombo.setRenderer(new LanguageCellRenderer(langCombo.getRenderer()));
     43        model.selectLanguage(Main.pref.get("language"));
    5444
    5545        LafPreference lafPreference = gui.getSetting(LafPreference.class);
     
    5949        panel.add(langCombo, GBC.eol().fill(GBC.HORIZONTAL));
    6050        panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH));
    61 
    62         // this defers loading of available translations to the first time the tab
    63         // with the available translations is selected by the user
    64         //
    65         gui.displaycontent.addChangeListener(
    66                 new ChangeListener() {
    67                     public void stateChanged(ChangeEvent e) {
    68                         int i = gui.displaycontent.getSelectedIndex();
    69                         String title = gui.displaycontent.getTitleAt(i);
    70                         if (title.equals(tr("Look and Feel"))) {
    71                             initiallyLoadAvailableTranslations();
    72                         }
    73                     }
    74                 }
    75         );
    7651    }
    7752
     
    8762    }
    8863
    89     /**
    90      * Load available translations if not loaded yet.
    91      */
    92     public void initiallyLoadAvailableTranslations() {
    93         if (!translationsLoaded) {
    94             reloadAvailableTranslations();
    95         }
    96         translationsLoaded = true;
    97     }
    98 
    99     /**
    100      * Asynchronously loads available translations
    101      *
    102      */
    103     protected void reloadAvailableTranslations() {
    104         Main.worker.submit(new AvailableTranslationsLoader());
    105     }
    106 
    107     /**
    108      * Asynchronous task to lookup the available translations.
    109      *
    110      */
    111     private class AvailableTranslationsLoader extends PleaseWaitRunnable {
    112         public AvailableTranslationsLoader() {
    113             super(tr("Looking up available translations..."));
    114         }
    115 
    116         @Override
    117         protected void cancel() {
    118             // can't cancel
    119         }
    120 
    121         @Override
    122         protected void realRun() throws SAXException, IOException, OsmTransferException {
    123             final List<Locale> locales = new ArrayList<Locale>(
    124                     Arrays.asList(I18n.getAvailableTranslations(getProgressMonitor()))
    125             );
    126             locales.add(0,Locale.ENGLISH);
    127             Runnable r = new Runnable() {
    128                 public void run() {
    129                     model.setAvailableLocales(locales);
    130                     model.selectLanguage(Main.pref.get("language"));
    131                 }
    132             };
    133             try {
    134                 SwingUtilities.invokeAndWait(r);
    135             } catch(InvocationTargetException e) {
    136                 throw new RuntimeException(e.getCause());
    137             } catch(InterruptedException e) {
    138                 throw new RuntimeException(e);
    139             }
    140         }
    141 
    142         @Override
    143         protected void finish() {}
    144     }
    145 
    14664    private static class LanguageComboBoxModel extends DefaultComboBoxModel {
    14765        private final List<Locale> data = new ArrayList<Locale>();
    14866
    149         public LanguageComboBoxModel() {}
    150 
    151         public void setAvailableLocales(List<Locale> locales) {
    152             data.clear();
    153             if (locales != null) {
    154                 data.add(null); // the default locale
    155                 data.addAll(locales);
    156             }
    157             fireContentsChanged(this, 0, getSize());
     67        public LanguageComboBoxModel(){
     68            data.add(0,null);
     69            data.addAll(Arrays.asList(I18n.getAvailableTranslations()));
    15870        }
    15971
Note: See TracChangeset for help on using the changeset viewer.