/[schmitzm]/branches/2.3.KECK/src/skrueger/i8n/SwitchLanguageDialog.java
ViewVC logotype

Annotation of /branches/2.3.KECK/src/skrueger/i8n/SwitchLanguageDialog.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 140 - (hide annotations)
Sun Jun 14 17:24:44 2009 UTC (15 years, 8 months ago) by alfonx
Original Path: trunk/src/skrueger/i8n/SwitchLanguageDialog.java
File size: 7508 byte(s)
* Not really an atomic commit: hacking session going on.. just switching from laptop to dektop.

* Minimally improved dialog to choose a language if the atlas only contains languages that your computer doesn't.
* GP: Added a menu item to send the logfile by email to Steve
* GP: List of languages to select from is now sorted
* Version-management in build.xml ... using a release.properties
** TODO: Still need integration with the webpage
* BUGFIXed: Layers expanding and collapsing every time while the AS is updating the preview
* UNDER WORK: AV: Only show selection-related buttons when they make sense.
1 mojays 2 package skrueger.i8n;
2    
3 alfonx 124 import java.awt.Component;
4 mojays 2 import java.awt.GridBagConstraints;
5     import java.awt.GridBagLayout;
6     import java.awt.Insets;
7     import java.awt.Window;
8     import java.awt.event.ActionEvent;
9     import java.awt.event.ActionListener;
10     import java.awt.event.MouseWheelListener;
11     import java.util.List;
12     import java.util.Locale;
13    
14     import javax.swing.DefaultComboBoxModel;
15     import javax.swing.ImageIcon;
16     import javax.swing.JButton;
17     import javax.swing.JComboBox;
18     import javax.swing.JDialog;
19     import javax.swing.JLabel;
20     import javax.swing.JPanel;
21    
22     import org.apache.log4j.Logger;
23    
24     import schmitzm.swing.SwingUtil;
25     import skrueger.swing.OkButton;
26     import skrueger.swing.TranslationEditJPanel;
27    
28 alfonx 140 /**
29     * This dialog ask the user to select one of list of given languages. The dialog
30     * is modal and not visible after construction.
31     *
32     * @author Stefan A. Krueger
33     */
34 mojays 2 public class SwitchLanguageDialog extends JDialog {
35     protected Logger LOGGER = Logger.getLogger(SwitchLanguageDialog.class);
36    
37     private static final long serialVersionUID = 1L;
38    
39     private JPanel jContentPane = null;
40    
41     private JLabel jLabelFlagimage = null;
42    
43     private JPanel jPanel = null;
44    
45     private JButton jButton = null;
46    
47     private JPanel jPanel1 = null;
48    
49     private JLabel jLabel = null;
50    
51     private JComboBox jComboBox = null;
52    
53     private final List<String> languages;
54    
55     /**
56     * A dialog to select one of the available languages. If only one language
57     * is available, select it directly. Creating this object automatically
58     * makes it visible.
59     *
60     * @param owner
61     * @param atlasConfig
62     */
63 alfonx 140 public SwitchLanguageDialog(final Component owner,
64     final List<String> languages) {
65     super(owner instanceof Window ? (Window) owner : SwingUtil
66     .getParentWindow(owner));
67 mojays 2 this.languages = languages;
68    
69     Translation.setActiveLang(languages.get(0));
70    
71     if (languages.size() == 1) {
72     LOGGER.debug("Only language '" + languages.get(0)
73     + "' is available. It has been selected automatically.");
74     return;
75     }
76    
77     initialize();
78     }
79    
80     /**
81     * This method initializes this
82     *
83     * @return void
84     */
85     private void initialize() {
86     this.setContentPane(getJContentPane());
87     setModal(true);
88     SwingUtil.centerFrameOnScreenRandom(this);
89 alfonx 140
90     setDefaultCloseOperation( JDialog.DO_NOTHING_ON_CLOSE);
91    
92 mojays 2 pack();
93     }
94    
95     /**
96     * This method initializes jContentPane
97     *
98     * @return javax.swing.JPanel
99     */
100     private JPanel getJContentPane() {
101     if (jContentPane == null) {
102     final GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
103     gridBagConstraints11.gridx = 1;
104     gridBagConstraints11.fill = GridBagConstraints.HORIZONTAL;
105     gridBagConstraints11.gridy = 1;
106     final GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
107     gridBagConstraints3.gridx = 1;
108     gridBagConstraints3.fill = GridBagConstraints.HORIZONTAL;
109     gridBagConstraints3.gridy = 2;
110     final GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
111     gridBagConstraints1.gridx = 0;
112     gridBagConstraints1.fill = GridBagConstraints.BOTH;
113     gridBagConstraints1.gridwidth = 2;
114     gridBagConstraints1.anchor = GridBagConstraints.NORTH;
115     gridBagConstraints1.gridy = 0;
116     jLabelFlagimage = new JLabel(new ImageIcon(
117     TranslationEditJPanel.class
118     .getResource("resource/flags.jpg")));
119     jContentPane = new JPanel();
120     jContentPane.setLayout(new GridBagLayout());
121     jContentPane.add(jLabelFlagimage, gridBagConstraints1);
122     jContentPane.add(getJPanel(), gridBagConstraints3);
123     jContentPane.add(getJPanel1(), gridBagConstraints11);
124     }
125     return jContentPane;
126     }
127    
128     /**
129     * This method initializes jPanel
130     *
131     * @return javax.swing.JPanel
132     */
133     private JPanel getJPanel() {
134     if (jPanel == null) {
135     final GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
136     gridBagConstraints4.gridx = 0;
137     gridBagConstraints4.anchor = GridBagConstraints.EAST;
138     gridBagConstraints4.weightx = 1.0;
139     gridBagConstraints4.insets = new Insets(5, 5, 5, 5);
140     gridBagConstraints4.gridy = 0;
141     jPanel = new JPanel();
142     jPanel.setLayout(new GridBagLayout());
143     jPanel.add(getJButton(), gridBagConstraints4);
144     }
145     return jPanel;
146     }
147    
148     /**
149     * This method initializes jButton
150     *
151     * @return javax.swing.JButton
152     */
153     private JButton getJButton() {
154     if (jButton == null) {
155     jButton = new OkButton();
156     jButton.setEnabled(false);
157    
158     jButton.addActionListener(new ActionListener() {
159    
160     public void actionPerformed(ActionEvent e) {
161     dispose();
162     }
163    
164     });
165     }
166     return jButton;
167     }
168    
169     /**
170     * This method initializes jPanel1
171     *
172     * @return javax.swing.JPanel
173     */
174     private JPanel getJPanel1() {
175     if (jPanel1 == null) {
176     final GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
177     gridBagConstraints2.fill = GridBagConstraints.VERTICAL;
178     gridBagConstraints2.gridy = 0;
179     gridBagConstraints2.weightx = 1.0;
180     gridBagConstraints2.insets = new Insets(5, 5, 5, 5);
181     gridBagConstraints2.anchor = GridBagConstraints.WEST;
182     gridBagConstraints2.gridx = 1;
183     final GridBagConstraints gridBagConstraints = new GridBagConstraints();
184     gridBagConstraints.gridx = 0;
185     gridBagConstraints.insets = new Insets(0, 5, 0, 0);
186     gridBagConstraints.gridy = 0;
187     jLabel = new JLabel();
188 alfonx 140 jLabel.setText("Select language: "); //i8n!?! Maybe replace with an icon of an index finger
189 mojays 2 jPanel1 = new JPanel();
190     jPanel1.setLayout(new GridBagLayout());
191     jPanel1.add(jLabel, gridBagConstraints);
192     jPanel1.add(getJComboBox(), gridBagConstraints2);
193     }
194     return jPanel1;
195     }
196    
197     /**
198     * This method initializes jComboBox
199     *
200     * @return javax.swing.JComboBox
201     */
202     private JComboBox getJComboBox() {
203     if (jComboBox == null) {
204     jComboBox = new JComboBox();
205    
206     jComboBox.addMouseWheelListener(new MouseWheelListener() {
207     public void mouseWheelMoved(java.awt.event.MouseWheelEvent e) {
208    
209     if ((e.getWheelRotation() < 0)) {
210     if (jComboBox.getSelectedIndex() < jComboBox
211     .getItemCount() - 1)
212     jComboBox.setSelectedIndex(jComboBox
213     .getSelectedIndex() + 1);
214     } else {
215     if (jComboBox.getSelectedIndex() > 0)
216     jComboBox.setSelectedIndex(jComboBox
217     .getSelectedIndex() - 1);
218     }
219     }
220     });
221    
222     String[] langNames = new String[languages.size() + 1];
223     for (int i = 0; i < languages.size(); i++) {
224    
225 alfonx 39 Locale locale = I8NUtil.getLocaleFor(languages.get(i));
226 mojays 2
227     langNames[i] = locale.getDisplayLanguage(locale) + " / "
228     + locale.getDisplayLanguage() + " / "
229     + languages.get(i);
230     }
231     langNames[languages.size()] = "?";
232    
233     jComboBox.setModel(new DefaultComboBoxModel(langNames));
234     jComboBox.setSelectedItem(langNames[languages.size()]);
235    
236     jComboBox.addActionListener(new ActionListener() {
237    
238     public void actionPerformed(final ActionEvent e) {
239     if (jComboBox.getSelectedIndex() == languages.size()) {
240     getJButton().setEnabled(false);
241     return;
242     }
243 alfonx 140
244     String l = languages.get(jComboBox
245     .getSelectedIndex());
246     try {
247     Translation.setActiveLang(l);
248    
249     getJButton().setEnabled(true);
250     } catch (java.lang.IllegalArgumentException ee) {
251     LOGGER.warn("The language "+l+" is not valid",ee);
252     getJButton().setEnabled(false);
253     }
254    
255 mojays 2 }
256    
257     });
258     }
259     return jComboBox;
260     }
261    
262     } // @jve:decl-index=0:visual-constraint="0,0"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26