source: trunk/jabberit_messenger/java_source/src/nu/fw/jeti/ui/StdPreferencesPanel.java @ 1001

Revision 1001, 11.1 KB checked in by alexandrecorreia, 15 years ago (diff)

Ticket #552 - Inclusão do projeto Java referente ao applet do módulo.

Line 
1package nu.fw.jeti.ui;
2
3import java.awt.Dimension;
4import java.awt.GridBagConstraints;
5import java.awt.GridBagLayout;
6import java.awt.Insets;
7import java.awt.event.ActionEvent;
8import java.awt.event.ActionListener;
9import java.io.File;
10import java.util.Locale;
11
12import javax.swing.*;
13
14import nu.fw.jeti.jabber.Backend;
15import nu.fw.jeti.plugins.PreferencesPanel;
16import nu.fw.jeti.ui.models.LocaleModel;
17import nu.fw.jeti.util.I18N;
18import nu.fw.jeti.util.ImageFileFilter;
19import nu.fw.jeti.util.Preferences;
20import nu.fw.jeti.util.SwingWorker;
21
22/**
23 * @author E.S. de Boer
24 *
25 *
26 */
27public class StdPreferencesPanel extends PreferencesPanel
28{
29        private Backend backend;
30        private JCheckBox chkEnter;
31        public static JCheckBox chkBeep;
32        private JCheckBox chkNick;
33        private JCheckBox chkBMW;
34        private JCheckBox chkTaskbar;
35        private JCheckBox chkTitle;
36        private JCheckBox chkOFFline;
37        private JCheckBox chkToFrontOnNewMessage;
38        private JCheckBox chkJetiPos;
39        private JCheckBox chkJetiTabs;
40        private JCheckBox chkShowTimestamp;
41        private JCheckBox chkImageScaled;
42        private JComboBox cmbLanguage;
43        private JComboBox cmbCountry;
44        private boolean oldOFFline;
45        private JTextField txtBackground;
46
47        public StdPreferencesPanel(Backend backend)
48        {
49                this.backend = backend;
50
51        setLayout(new GridBagLayout());
52        GridBagConstraints c = new GridBagConstraints();
53        c.gridwidth = GridBagConstraints.REMAINDER;
54        c.anchor = GridBagConstraints.LINE_START;
55        c.insets = new Insets(3, 5, 0, 3);
56
57                chkEnter = new JCheckBox(I18N.gettext("main.options.standard.Enter_key_sends_messages"));
58                chkEnter.setToolTipText(I18N.gettext("main.options.standard.tooltip.Send_message_with_enter_key_instead_of_ctrl_or_shift_and_enter"));
59                chkEnter.setSelected(Preferences.getBoolean("jeti","enterSends",true));
60        add(chkEnter, c);
61
62        chkToFrontOnNewMessage = new JCheckBox(I18N.gettext("main.options.standard.To_front_on_new_message"));
63        //chkToFrontOnNewMessage.setToolTipText(I18N.gettext("main.options.standard.tooltip.Send_message_with_enter_key_instead_of_ctrl_or_shift_and_enter"));
64        chkToFrontOnNewMessage.setSelected(Preferences.getBoolean("jeti", "toFrontOnNewMessage", false));
65        add(chkToFrontOnNewMessage, c);
66               
67       
68                chkShowTimestamp = new JCheckBox(I18N.gettext("main.options.standard.Show_timestamps"));
69                chkShowTimestamp.setToolTipText(I18N.gettext("main.options.standard.tooltip.Show_timestamps_on_all_messages"));
70                chkShowTimestamp.setSelected(Preferences.getBoolean("jeti","showTimestamp",true));
71        add(chkShowTimestamp, c);
72
73                chkBeep = new JCheckBox(I18N.gettext("main.options.standard.Beep_on_new_message"));
74        chkBeep.setToolTipText(I18N.gettext("main.options.standard.tooltip.Beep_on_new_message_arrival"));
75                chkBeep.setSelected(Preferences.getBoolean("jeti","beep",true));
76        add(chkBeep, c);
77               
78                chkNick = new JCheckBox(I18N.gettext("main.options.standard.Show_remote_msn_nicknames"));
79                chkNick.setToolTipText(I18N.gettext("main.options.standard.tooltip.Show_remote_nicknames_instead_of_the_local_ones"));
80                chkNick.setSelected(Preferences.getBoolean("jeti","showRealNick", false));
81        add(chkNick, c);
82                               
83                chkOFFline = new JCheckBox(I18N.gettext("main.options.standard.Show_Offline_contacts"));
84                chkOFFline.setToolTipText(I18N.gettext("main.options.standard.tooltip.Show_Offline_contacts"));
85                oldOFFline = Preferences.getBoolean("jeti","showoffline",true);
86                chkOFFline.setSelected(oldOFFline);
87        add(chkOFFline, c);
88
89                chkTaskbar = new JCheckBox(I18N.gettext("main.options.standard.Don't_show_the_mainscreen_in_the_taskbar"));
90                chkTaskbar.setToolTipText(I18N.gettext("main.options.standard.tooltip.Restart_required"));
91                chkTaskbar.setSelected(Preferences.getBoolean("jeti","showNotInTaskbar",false));
92        add(chkTaskbar, c);
93               
94                chkBMW = new JCheckBox(I18N.gettext("main.options.standard.White_background_main_window"));
95                chkBMW.setToolTipText(I18N.gettext("main.options.standard.tooltip.Makes_the_main_window_white_(restart_required)"));
96                chkBMW.setSelected(Preferences.getBoolean("jeti","bmw",true));
97        add(chkBMW, c);
98                       
99                chkTitle = new JCheckBox(I18N.gettext("main.options.standard.Java_window_decorations"));
100                chkTitle.setToolTipText(I18N.gettext("main.options.standard.tooltip.Set_java_look_and_feel_decorations_for_windows_(restart_required)"));
101                chkTitle.setSelected(Preferences.getBoolean("jeti","javadecorations",false));
102        add(chkTitle, c);
103
104        chkJetiPos = new JCheckBox(I18N.gettext("main.options.standard.Jeti_as_Menu_instead_of_button"));
105                chkJetiPos.setToolTipText(I18N.gettext("main.options.standard.tooltip.Change_the_Jeti_button_to_a_menu_(restart_required)"));
106                chkJetiPos.setSelected(Preferences.getBoolean("jeti","menutop",false));
107        add(chkJetiPos, c);
108       
109        chkJetiTabs = new JCheckBox(I18N.gettext("main.options.standard.Jeti_with_tabs"));
110                //chkJetiTabs.setToolTipText(I18N.gettext("main.options.standard.tooltip."));
111                chkJetiTabs.setSelected(Preferences.getBoolean("jeti","tabs",false));
112        add(chkJetiTabs, c);
113       
114        c.weightx = 0;
115        c.gridwidth = 4;
116        JLabel label = new JLabel(I18N.gettext("main.options.standard.Background_image"));
117        add(label,c);
118                label.setToolTipText(I18N.gettext("main.options.standard.tooltip.Adds_an_image_to_the_main_window_(White_background_main_window_should_be_off)"));
119                txtBackground = new JTextField(Preferences.getString("jeti","backgroundImage",null));
120                c.weightx = 100;
121                c.fill = GridBagConstraints.HORIZONTAL;
122                add(txtBackground, c);
123                c.weightx = 0;
124                JButton button = new JButton("...");
125                button.addActionListener(new ActionListener()
126                {
127               
128                        public void actionPerformed(ActionEvent e)
129                        {
130                                JFileChooser chooser = new JFileChooser();
131                                chooser.setCurrentDirectory(new File(txtBackground.getText()));
132                                chooser.setFileFilter(new ImageFileFilter());
133                                int result = chooser.showOpenDialog(StdPreferencesPanel.this);
134                                if(result==JFileChooser.APPROVE_OPTION)
135                                {
136                                        txtBackground.setText(chooser.getSelectedFile().getAbsolutePath());
137                                }
138                        }
139                });
140                add(button,c);
141                chkImageScaled = new JCheckBox(I18N.gettext("main.options.standard.Scaled"));
142                        //chkJetiTabs.setToolTipText(I18N.gettext("main.options.standard.tooltip."));
143                chkImageScaled.setSelected(Preferences.getBoolean("jeti","backgroundImageScaled",true));
144                c.gridwidth = GridBagConstraints.REMAINDER;
145                add(chkImageScaled, c);
146       
147        GridBagConstraints cl = new GridBagConstraints();
148        cl.gridwidth = 1;
149        cl.anchor = GridBagConstraints.LINE_START;
150        cl.insets = new Insets(3, 5, 0, 3);
151
152        add(new JLabel(I18N.gettext("main.options.standard.Language")), cl);
153                cmbLanguage = new JComboBox(new Object[]{I18N.gettext("main.options.standard.Loading_Languages,_please_wait")});
154        cmbLanguage.setPreferredSize(new Dimension(200, 21));
155        add(cmbLanguage, c);
156
157        add(new JLabel(I18N.gettext("main.options.standard.Country")), cl);
158                cmbCountry = new JComboBox();
159        cmbCountry.setPreferredSize(new Dimension(200, 21));
160        add(cmbCountry, c);
161
162        c.gridwidth = 3;
163        c.weighty = 1.0;
164        c.weightx = 1.0;
165        add(Box.createVerticalGlue(), c);
166
167            SwingWorker worker = new SwingWorker()
168                {
169                I18N i18n;
170
171                public Object construct()
172                {
173                        i18n = new I18N();
174                    return null;
175                }
176
177                //Runs on the event-dispatching thread.
178                public void finished()
179                {
180                        cmbLanguage.setModel(new DefaultComboBoxModel(i18n.getLanguages()));
181                        LocaleModel lm = new LocaleModel(i18n);
182                        cmbLanguage.addActionListener(lm);
183                        String languageCode = Preferences.getString("jeti","language",getDefaultLocale().getLanguage());
184                        ComboBoxModel model = cmbLanguage.getModel();
185                        boolean selected=false;
186                        for(int i=0;i<model.getSize();i++)
187                        {
188                                if(((I18N.Language)model.getElementAt(i)).getLanguageCode().equals(languageCode))
189                                {
190                                        cmbLanguage.setSelectedIndex(i);
191                                        selected=true;
192                                        break;
193                                }
194                        }
195                        if(!selected)
196                        {//language not found so set to default language
197                                languageCode = Locale.getDefault().getLanguage();
198                                for(int i=0;i<model.getSize();i++)
199                                {
200                                        if(((I18N.Language)model.getElementAt(i)).getLanguageCode().equals(languageCode))
201                                        {
202                                                cmbLanguage.setSelectedIndex(i);
203                                                break;
204                                        }
205                                }
206                        }
207                        String countryCode = Preferences.getString("jeti","country",getDefaultLocale().getCountry());
208                        cmbCountry.setModel(lm);
209                        model = cmbCountry.getModel();
210                        selected=false;
211                        for(int i=0;i<model.getSize();i++)
212                        {
213                                if(((I18N.Country)model.getElementAt(i)).getCountryCode().equals(countryCode))
214                                {
215                                        cmbCountry.setSelectedIndex(i);
216                                        selected=true;
217                                        break;
218                                }
219                        }
220                        if(!selected)
221                        {//country not found so set to other
222                                countryCode = "";
223                                for(int i=0;i<model.getSize();i++)
224                                {
225                                        if(((I18N.Country)model.getElementAt(i)).getCountryCode().equals(countryCode))
226                                        {
227                                                cmbCountry.setSelectedIndex(i);
228                                                break;
229                                        }
230                                }
231                        }
232                }
233            };
234            worker.start();
235        }
236
237        public void savePreferences()
238        {
239                Preferences.putBoolean("jeti","enterSends", chkEnter.isSelected());
240                Preferences.putBoolean("jeti","toFrontOnNewMessage", chkToFrontOnNewMessage.isSelected());
241                Preferences.putBoolean("jeti","showTimestamp", chkShowTimestamp.isSelected());
242                Preferences.putBoolean("jeti","beep", chkBeep.isSelected());
243                Preferences.putBoolean("jeti","showRealNick", chkNick.isSelected());
244                Preferences.putBoolean("jeti","bmw",chkBMW.isSelected());
245                Preferences.putBoolean("jeti","showNotInTaskbar",chkTaskbar.isSelected());
246                Preferences.putBoolean("jeti","javadecorations",chkTitle.isSelected());
247                Preferences.putBoolean("jeti","menutop",chkJetiPos.isSelected());
248                Preferences.putBoolean("jeti","tabs",chkJetiTabs.isSelected());
249                Preferences.putBoolean("jeti","backgroundImageScaled",chkImageScaled.isSelected());
250                String b = Preferences.getString("jeti","backgroundImage","");
251                if(!txtBackground.getText().equals(b))
252                {
253                        Preferences.putString("jeti","backgroundImage",txtBackground.getText());
254                        backend.getMain().refreshBackgroundImage();
255                }
256                if (oldOFFline != chkOFFline.isSelected())
257                {//only update when there is a change
258                        Preferences.putBoolean("jeti","showoffline", chkOFFline.isSelected());
259                        oldOFFline = chkOFFline.isSelected();
260                        backend.getMain().changeOFFlinePanel(oldOFFline);
261                }
262                if(cmbCountry.getSelectedIndex()!=-1) Preferences.putString("jeti", "country",((I18N.Country) cmbCountry.getSelectedItem()).getCountryCode());
263                if(cmbLanguage.getSelectedIndex()!=-1
264                    && cmbLanguage.getSelectedItem() instanceof I18N.Language)
265                {
266                        String languageCode = ((I18N.Language)cmbLanguage.getSelectedItem()).getLanguageCode();
267                        if(!Preferences.getString("jeti","language",getDefaultLocale().getLanguage()).equals(languageCode))
268                        {//only update when there is a change
269                                Preferences.putString("jeti", "language",languageCode);
270                                I18N.init();
271                                backend.getMain().translate();
272                        }
273                }
274        }
275}
276
277/*
278 * Overrides for emacs
279 * Local variables:
280 * tab-width: 4
281 * End:
282 */
Note: See TracBrowser for help on using the repository browser.