Revision: 5969 http://languagetool.svn.sourceforge.net/languagetool/?rev=5969&view=rev Author: dnaber Date: 2011-11-25 14:21:54 +0000 (Fri, 25 Nov 2011) Log Message: ----------- some code refactoring
Modified Paths: -------------- trunk/JLanguageTool/src/java/org/languagetool/gui/Main.java Added Paths: ----------- trunk/JLanguageTool/src/java/org/languagetool/gui/I18nLanguage.java trunk/JLanguageTool/src/java/org/languagetool/gui/LanguageComboBox.java Added: trunk/JLanguageTool/src/java/org/languagetool/gui/I18nLanguage.java =================================================================== --- trunk/JLanguageTool/src/java/org/languagetool/gui/I18nLanguage.java (rev 0) +++ trunk/JLanguageTool/src/java/org/languagetool/gui/I18nLanguage.java 2011-11-25 14:21:54 UTC (rev 5969) @@ -0,0 +1,70 @@ +/* LanguageTool, a natural language style checker + * Copyright (C) 2011 Daniel Naber (http://www.danielnaber.de) + * + * This library 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.1 of the License, or (at your option) any later version. + * + * This library 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 library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ +package org.languagetool.gui; + +import org.languagetool.Language; + +import java.util.ResourceBundle; + +/** + * An item in the language selection combo box. + */ +class I18nLanguage implements Comparable<I18nLanguage> { + + private final Language language; + private final ResourceBundle messages; + + I18nLanguage(Language language, ResourceBundle messages) { + this.language = language; + this.messages = messages; + } + + Language getLanguage() { + return language; + } + + // used by the GUI: + @Override + public String toString() { + if (language.isExternal()) { + return language.getName() + Main.EXTERNAL_LANGUAGE_SUFFIX; + } else { + return messages.getString(language.getShortName()); + } + } + + @Override + public int compareTo(I18nLanguage o) { + return toString().compareTo(o.toString()); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + final I18nLanguage other = (I18nLanguage) o; + return language.toString().equals(other.toString()) && language.isExternal() == other.language.isExternal(); + } + + @Override + public int hashCode() { + return toString().hashCode(); + } +} + Added: trunk/JLanguageTool/src/java/org/languagetool/gui/LanguageComboBox.java =================================================================== --- trunk/JLanguageTool/src/java/org/languagetool/gui/LanguageComboBox.java (rev 0) +++ trunk/JLanguageTool/src/java/org/languagetool/gui/LanguageComboBox.java 2011-11-25 14:21:54 UTC (rev 5969) @@ -0,0 +1,76 @@ +/* LanguageTool, a natural language style checker + * Copyright (C) 2011 Daniel Naber (http://www.danielnaber.de) + * + * This library 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.1 of the License, or (at your option) any later version. + * + * This library 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 library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + * USA + */ +package org.languagetool.gui; + +import org.languagetool.Language; + +import javax.swing.*; +import java.util.*; + +/** + * Combo box with list of available languages. + */ +public class LanguageComboBox extends JComboBox { + + private final ResourceBundle messages; + + public LanguageComboBox(ResourceBundle messages) { + this.messages = messages; + populateLanguageBox(); + } + + void populateLanguageBox() { + removeAllItems(); + final List<I18nLanguage> i18nLanguages = getAllLanguages(); + preselectDefaultLanguage(i18nLanguages); + } + + private List<I18nLanguage> getAllLanguages() { + final List<I18nLanguage> i18nLanguages = new ArrayList<I18nLanguage>(); + for (Language language : Language.LANGUAGES) { + if (language != Language.DEMO) { + i18nLanguages.add(new I18nLanguage(language, messages)); + } + } + Collections.sort(i18nLanguages); + return i18nLanguages; + } + + private void preselectDefaultLanguage(List<I18nLanguage> i18nLanguages) { + final String defaultLocale = Locale.getDefault().getLanguage(); + final String defaultGuiLocale = getDefaultGuiLanguage(defaultLocale); + for (final I18nLanguage i18nLanguage : i18nLanguages) { + addItem(i18nLanguage); + if (i18nLanguage.toString().equals(defaultGuiLocale)) { + setSelectedItem(i18nLanguage); + } + } + } + + private String getDefaultGuiLanguage(String defaultLocale) { + String defaultGuiLocale = null; + try { + defaultGuiLocale = messages.getString(defaultLocale); + } catch (final MissingResourceException e) { + // language not supported, so don't select a default + } + return defaultGuiLocale; + } + +} Modified: trunk/JLanguageTool/src/java/org/languagetool/gui/Main.java =================================================================== --- trunk/JLanguageTool/src/java/org/languagetool/gui/Main.java 2011-11-25 13:40:03 UTC (rev 5968) +++ trunk/JLanguageTool/src/java/org/languagetool/gui/Main.java 2011-11-25 14:21:54 UTC (rev 5969) @@ -52,6 +52,8 @@ */ public final class Main implements ActionListener { + static final String EXTERNAL_LANGUAGE_SUFFIX = " (ext.)"; + private static final String HTML_FONT_START = "<font face='Arial,Helvetica'>"; private static final String HTML_FONT_END = "</font>"; @@ -59,7 +61,6 @@ private static final String SYSTEM_TRAY_TOOLTIP = "LanguageTool"; private static final String CONFIG_FILE = ".languagetool.cfg"; - private static final String EXTERNAL_LANGUAGE_SUFFIX = " (ext.)"; private static final int WINDOW_WIDTH = 600; private static final int WINDOW_HEIGHT = 550; @@ -70,7 +71,7 @@ private JFrame frame; private JTextArea textArea; private JTextPane resultArea; - private JComboBox languageBox; + private LanguageComboBox languageBox; private JCheckBox autoDetectBox; private HTTPServer httpServer; @@ -123,8 +124,7 @@ buttonCons.gridy = 0; buttonCons.anchor = GridBagConstraints.WEST; insidePanel.add(new JLabel(" " + messages.getString("textLanguage") + " "), buttonCons); - languageBox = new JComboBox(); - populateLanguageBox(languageBox); + languageBox = new LanguageComboBox(messages); buttonCons.gridx = 1; buttonCons.gridy = 0; insidePanel.add(languageBox, buttonCons); @@ -193,30 +193,6 @@ } } - private void populateLanguageBox(final JComboBox languageBox) { - languageBox.removeAllItems(); - final List<I18nLanguage> i18nLanguages = new ArrayList<I18nLanguage>(); - for (Language language : Language.LANGUAGES) { - if (language != Language.DEMO) { - i18nLanguages.add(new I18nLanguage(language)); - } - } - Collections.sort(i18nLanguages); - final String defaultLocale = Locale.getDefault().getLanguage(); - String defaultLocaleInGui = null; - try { - defaultLocaleInGui = messages.getString(defaultLocale); - } catch (final MissingResourceException e) { - // language not supported, so don't select a default - } - for (final I18nLanguage i18nLanguage : i18nLanguages) { - languageBox.addItem(i18nLanguage); - if (i18nLanguage.toString().equals(defaultLocaleInGui)) { - languageBox.setSelectedItem(i18nLanguage); - } - } - } - private void showGUI() { frame.setVisible(true); } @@ -304,7 +280,7 @@ } catch (final RuleFilenameException e) { Tools.showErrorMessage(e); } - populateLanguageBox(languageBox); + languageBox.populateLanguageBox(); } void showOptions() { @@ -587,8 +563,7 @@ public static void main(final String[] args) { try { final Main prg = new Main(); - if (args.length == 1 - && (args[0].equals("-t") || args[0].equals("--tray"))) { + if (args.length == 1 && (args[0].equals("-t") || args[0].equals("--tray"))) { // dock to systray on startup javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override @@ -736,45 +711,4 @@ } - private class I18nLanguage implements Comparable<I18nLanguage> { - - private final Language language; - - I18nLanguage(Language language) { - this.language = language; - } - - Language getLanguage() { - return language; - } - - // used by the GUI: - @Override - public String toString() { - if (language.isExternal()) { - return language.getName() + EXTERNAL_LANGUAGE_SUFFIX; - } else { - return messages.getString(language.getShortName()); - } - } - - @Override - public int compareTo(I18nLanguage o) { - return toString().compareTo(o.toString()); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - final I18nLanguage other = (I18nLanguage) o; - return language.toString().equals(other.toString()) && language.isExternal() == other.language.isExternal(); - } - - @Override - public int hashCode() { - return toString().hashCode(); - } - } - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ Languagetool-cvs mailing list Languagetool-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/languagetool-cvs