OSDN Git Service

ツイートテーブルの背景色を設定画面から変更できるように改良
[nt-manager/nt-manager.git] / src / twitter / gui / form / ConfigurationDialog.java
1 /*
2  * To change this template, choose Tools | Templates
3  * and open the template in the editor.
4  */
5
6 /*
7  * ConfigurationDialog2.java
8  *
9  * Created on 2010/09/18, 1:41:32
10  */
11
12 package twitter.gui.form;
13
14 import java.awt.Color;
15 import java.awt.GraphicsEnvironment;
16 import java.io.IOException;
17 import java.util.logging.Level;
18 import java.util.logging.Logger;
19 import javax.swing.DefaultComboBoxModel;
20 import javax.swing.JColorChooser;
21 import twitter.gui.action.TweetMainAction;
22
23 /**
24  *
25  * @author nishio
26  */
27 public class ConfigurationDialog extends javax.swing.JDialog {
28
29     /** Creates new form ConfigurationDialog2 */
30     public ConfigurationDialog(java.awt.Frame parent, boolean modal, TweetMainAction mainAction) {
31         super(parent, modal);
32         initComponents();
33
34         this.mainAction = mainAction;
35         init();
36     }
37
38     /**
39      * 初期化
40      */
41     public void init() {
42         // 利用可能なフォント一覧を取得しておく
43                 this.fonts = GraphicsEnvironment.getLocalGraphicsEnvironment()
44                                 .getAvailableFontFamilyNames();
45                 // 利用可能なフォント一覧を設定しておく
46                 if (fonts != null) {
47                         for (String f : fonts) {
48                                 fontModel.addElement(f);
49                                 fontModel2.addElement(f);
50                         }
51                 }
52                 // 利用可能なフォントサイズを設定しておく
53                 String[] fontSize = { "8", "9", "10", "11", "12", "13", "14", "15",
54                                 "16", "17", "18" };
55                 for (String f : fontSize) {
56                         fontSizeModel.addElement(f);
57                         fontSizeModel2.addElement(f);
58                 }
59
60         //読み込んだ情報を反映
61         applyLoadInformation();
62     }
63
64     /**
65      * 読み込んだ情報を反映
66      */
67     public void applyLoadInformation() {
68         try {
69             // 画面が見えたときに情報更新
70             jSpinner1.setValue( mainAction.getGetTimelinePeriod() );
71             jSpinner2.setValue( mainAction.getGetMentionPeriod() );
72             jSpinner3.setValue( mainAction.getGetDirectMessagePeriod() );
73             jSpinner4.setValue( mainAction.getGetSendDirectMessagePeriod() );
74             
75             jLabel10.setBackground(mainAction.getNewTableColor());
76             jLabel14.setBackground(mainAction.getOddTableColor());
77             jLabel15.setBackground(mainAction.getEvenTableColor());
78             
79             // font関係
80             if (mainAction.getTlFontName() != null) {
81                 jComboBox1.setSelectedItem(mainAction.getTlFontName());
82             }
83             if (mainAction.getDetailFontName() != null) {
84                 jComboBox2.setSelectedItem(mainAction.getDetailFontName());
85             }
86             jComboBox3.setSelectedItem(mainAction.getTlFontSize() + "");
87             jComboBox4.setSelectedItem(mainAction.getDetailFontSize() + "");
88             
89             // 表示
90             jSpinner5.setValue(mainAction.getTableElementHeight());
91             jCheckBox1.setSelected( mainAction.getNotifyMention() );
92             jCheckBox2.setSelected( mainAction.getNotifyDirectMessage() );
93             jCheckBox3.setSelected( mainAction.isUpdateNotify() );
94             jCheckBox4.setSelected( mainAction.isFavNotify() );
95             
96             //テーブルに表示するツイート数
97             jSpinner6.setValue(mainAction.getTableElementMaxSize());
98             
99         } catch (Exception e) {
100             e.printStackTrace();
101         }
102     }
103
104     /**
105      * 
106      */
107     @Override
108         public void setVisible(boolean b) {
109                 super.setVisible(b);
110         applyLoadInformation();
111         }
112
113
114     /** This method is called from within the constructor to
115      * initialize the form.
116      * WARNING: Do NOT modify this code. The content of this method is
117      * always regenerated by the Form Editor.
118      */
119     @SuppressWarnings("unchecked")
120     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
121     private void initComponents() {
122
123         jTabbedPane1 = new javax.swing.JTabbedPane();
124         jPanel1 = new javax.swing.JPanel();
125         jLabel1 = new javax.swing.JLabel();
126         jSpinner1 = new javax.swing.JSpinner();
127         jLabel2 = new javax.swing.JLabel();
128         jSpinner2 = new javax.swing.JSpinner();
129         jLabel3 = new javax.swing.JLabel();
130         jSpinner3 = new javax.swing.JSpinner();
131         jLabel4 = new javax.swing.JLabel();
132         jSpinner4 = new javax.swing.JSpinner();
133         jLabel13 = new javax.swing.JLabel();
134         jPanel2 = new javax.swing.JPanel();
135         jLabel5 = new javax.swing.JLabel();
136         jLabel6 = new javax.swing.JLabel();
137         jLabel7 = new javax.swing.JLabel();
138         jLabel8 = new javax.swing.JLabel();
139         jComboBox1 = new javax.swing.JComboBox();
140         jComboBox2 = new javax.swing.JComboBox();
141         jComboBox3 = new javax.swing.JComboBox();
142         jComboBox4 = new javax.swing.JComboBox();
143         jPanel3 = new javax.swing.JPanel();
144         jLabel9 = new javax.swing.JLabel();
145         jPanel5 = new javax.swing.JPanel();
146         jLabel10 = new javax.swing.JLabel();
147         jPanel6 = new javax.swing.JPanel();
148         jLabel14 = new javax.swing.JLabel();
149         jPanel7 = new javax.swing.JPanel();
150         jLabel15 = new javax.swing.JLabel();
151         jLabel16 = new javax.swing.JLabel();
152         jLabel17 = new javax.swing.JLabel();
153         jPanel4 = new javax.swing.JPanel();
154         jLabel11 = new javax.swing.JLabel();
155         jSpinner5 = new javax.swing.JSpinner();
156         jCheckBox1 = new javax.swing.JCheckBox();
157         jCheckBox2 = new javax.swing.JCheckBox();
158         jSpinner6 = new javax.swing.JSpinner();
159         jLabel12 = new javax.swing.JLabel();
160         jCheckBox3 = new javax.swing.JCheckBox();
161         jCheckBox4 = new javax.swing.JCheckBox();
162         jButton1 = new javax.swing.JButton();
163         jButton2 = new javax.swing.JButton();
164
165         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
166         setTitle("基本設定");
167
168         jTabbedPane1.setPreferredSize(new java.awt.Dimension(318, 341));
169
170         jLabel1.setText("タイムライン更新間隔 [秒]");
171
172         jSpinner1.addChangeListener(new javax.swing.event.ChangeListener() {
173             public void stateChanged(javax.swing.event.ChangeEvent evt) {
174                 jSpinner1StateChanged(evt);
175             }
176         });
177
178         jLabel2.setText("Mention更新間隔 [秒]");
179
180         jSpinner2.addChangeListener(new javax.swing.event.ChangeListener() {
181             public void stateChanged(javax.swing.event.ChangeEvent evt) {
182                 jSpinner2StateChanged(evt);
183             }
184         });
185
186         jLabel3.setText("ダイレクトメッセージ更新間隔 [秒]");
187
188         jSpinner3.addChangeListener(new javax.swing.event.ChangeListener() {
189             public void stateChanged(javax.swing.event.ChangeEvent evt) {
190                 jSpinner3StateChanged(evt);
191             }
192         });
193
194         jLabel4.setText("送信済みダイレクトメッセージ更新間隔 [秒]");
195
196         jSpinner4.addChangeListener(new javax.swing.event.ChangeListener() {
197             public void stateChanged(javax.swing.event.ChangeEvent evt) {
198                 jSpinner4StateChanged(evt);
199             }
200         });
201
202         jLabel13.setText("Streaming API利用時は、情報の定期的な取得は行いません");
203
204         javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
205         jPanel1.setLayout(jPanel1Layout);
206         jPanel1Layout.setHorizontalGroup(
207             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
208             .addGroup(jPanel1Layout.createSequentialGroup()
209                 .addContainerGap()
210                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
211                     .addGroup(jPanel1Layout.createSequentialGroup()
212                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
213                             .addComponent(jLabel1)
214                             .addComponent(jLabel2)
215                             .addComponent(jLabel3)
216                             .addComponent(jLabel4))
217                         .addGap(24, 24, 24)
218                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
219                             .addComponent(jSpinner4, javax.swing.GroupLayout.DEFAULT_SIZE, 207, Short.MAX_VALUE)
220                             .addComponent(jSpinner3, javax.swing.GroupLayout.DEFAULT_SIZE, 207, Short.MAX_VALUE)
221                             .addComponent(jSpinner2, javax.swing.GroupLayout.DEFAULT_SIZE, 207, Short.MAX_VALUE)
222                             .addComponent(jSpinner1, javax.swing.GroupLayout.DEFAULT_SIZE, 207, Short.MAX_VALUE)))
223                     .addComponent(jLabel13, javax.swing.GroupLayout.DEFAULT_SIZE, 434, Short.MAX_VALUE))
224                 .addContainerGap())
225         );
226         jPanel1Layout.setVerticalGroup(
227             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
228             .addGroup(jPanel1Layout.createSequentialGroup()
229                 .addContainerGap()
230                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
231                     .addComponent(jLabel1)
232                     .addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
233                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
234                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
235                     .addComponent(jLabel2)
236                     .addComponent(jSpinner2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
237                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
238                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
239                     .addComponent(jLabel3)
240                     .addComponent(jSpinner3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
241                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
242                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
243                     .addComponent(jLabel4)
244                     .addComponent(jSpinner4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
245                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 183, Short.MAX_VALUE)
246                 .addComponent(jLabel13)
247                 .addContainerGap())
248         );
249
250         jTabbedPane1.addTab("更新間隔設定", jPanel1);
251
252         jLabel5.setText("タイムラインのフォント");
253
254         jLabel6.setText("詳細情報のフォント");
255
256         jLabel7.setText("タイムラインのフォントサイズ");
257
258         jLabel8.setText("詳細情報のフォントサイズ");
259
260         jComboBox1.setModel(fontModel);
261
262         jComboBox2.setModel(fontModel2);
263
264         jComboBox3.setModel(fontSizeModel);
265
266         jComboBox4.setModel(fontSizeModel2);
267
268         javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
269         jPanel2.setLayout(jPanel2Layout);
270         jPanel2Layout.setHorizontalGroup(
271             jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
272             .addGroup(jPanel2Layout.createSequentialGroup()
273                 .addContainerGap()
274                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
275                     .addComponent(jLabel5)
276                     .addComponent(jLabel6)
277                     .addComponent(jLabel7)
278                     .addComponent(jLabel8))
279                 .addGap(23, 23, 23)
280                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
281                     .addComponent(jComboBox4, 0, 229, Short.MAX_VALUE)
282                     .addComponent(jComboBox3, 0, 229, Short.MAX_VALUE)
283                     .addComponent(jComboBox2, 0, 229, Short.MAX_VALUE)
284                     .addComponent(jComboBox1, 0, 229, Short.MAX_VALUE))
285                 .addContainerGap())
286         );
287         jPanel2Layout.setVerticalGroup(
288             jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
289             .addGroup(jPanel2Layout.createSequentialGroup()
290                 .addContainerGap()
291                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
292                     .addComponent(jLabel5)
293                     .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
294                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
295                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
296                     .addComponent(jLabel6)
297                     .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
298                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
299                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
300                     .addComponent(jLabel7)
301                     .addComponent(jComboBox3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
302                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
303                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
304                     .addComponent(jLabel8)
305                     .addComponent(jComboBox4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
306                 .addContainerGap(198, Short.MAX_VALUE))
307         );
308
309         jTabbedPane1.addTab("フォント", jPanel2);
310
311         jLabel9.setText("最新情報の背景色");
312
313         jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorder());
314
315         jLabel10.setBackground(java.awt.Color.black);
316         jLabel10.setOpaque(true);
317         jLabel10.addMouseListener(new java.awt.event.MouseAdapter() {
318             public void mouseClicked(java.awt.event.MouseEvent evt) {
319                 jLabel10MouseClicked(evt);
320             }
321         });
322
323         javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
324         jPanel5.setLayout(jPanel5Layout);
325         jPanel5Layout.setHorizontalGroup(
326             jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
327             .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, 305, Short.MAX_VALUE)
328         );
329         jPanel5Layout.setVerticalGroup(
330             jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
331             .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
332         );
333
334         jPanel6.setBorder(javax.swing.BorderFactory.createEtchedBorder());
335
336         jLabel14.setBackground(java.awt.Color.black);
337         jLabel14.setOpaque(true);
338         jLabel14.addMouseListener(new java.awt.event.MouseAdapter() {
339             public void mouseClicked(java.awt.event.MouseEvent evt) {
340                 jLabel14MouseClicked(evt);
341             }
342         });
343
344         javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
345         jPanel6.setLayout(jPanel6Layout);
346         jPanel6Layout.setHorizontalGroup(
347             jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
348             .addComponent(jLabel14, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 305, Short.MAX_VALUE)
349         );
350         jPanel6Layout.setVerticalGroup(
351             jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
352             .addComponent(jLabel14, javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
353         );
354
355         jPanel7.setBorder(javax.swing.BorderFactory.createEtchedBorder());
356
357         jLabel15.setBackground(java.awt.Color.black);
358         jLabel15.setOpaque(true);
359         jLabel15.addMouseListener(new java.awt.event.MouseAdapter() {
360             public void mouseClicked(java.awt.event.MouseEvent evt) {
361                 jLabel15MouseClicked(evt);
362             }
363         });
364
365         javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
366         jPanel7.setLayout(jPanel7Layout);
367         jPanel7Layout.setHorizontalGroup(
368             jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
369             .addComponent(jLabel15, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 305, Short.MAX_VALUE)
370         );
371         jPanel7Layout.setVerticalGroup(
372             jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
373             .addComponent(jLabel15, javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
374         );
375
376         jLabel16.setText("テーブルの偶数行の色");
377
378         jLabel17.setText("テーブルの奇数行の色");
379
380         javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
381         jPanel3.setLayout(jPanel3Layout);
382         jPanel3Layout.setHorizontalGroup(
383             jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
384             .addGroup(jPanel3Layout.createSequentialGroup()
385                 .addContainerGap()
386                 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
387                     .addComponent(jLabel16)
388                     .addGroup(jPanel3Layout.createSequentialGroup()
389                         .addComponent(jLabel9)
390                         .addGap(31, 31, 31)
391                         .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
392                     .addComponent(jLabel17))
393                 .addContainerGap())
394             .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
395                 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
396                     .addGap(137, 137, 137)
397                     .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
398                     .addContainerGap()))
399             .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
400                 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
401                     .addGap(137, 137, 137)
402                     .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
403                     .addContainerGap()))
404         );
405         jPanel3Layout.setVerticalGroup(
406             jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
407             .addGroup(jPanel3Layout.createSequentialGroup()
408                 .addContainerGap()
409                 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
410                     .addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE, 35, Short.MAX_VALUE)
411                     .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
412                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
413                 .addComponent(jLabel17, javax.swing.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE)
414                 .addGap(9, 9, 9)
415                 .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
416                 .addGap(202, 202, 202))
417             .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
418                 .addGroup(jPanel3Layout.createSequentialGroup()
419                     .addGap(46, 46, 46)
420                     .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
421                     .addContainerGap(233, Short.MAX_VALUE)))
422             .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
423                 .addGroup(jPanel3Layout.createSequentialGroup()
424                     .addGap(83, 83, 83)
425                     .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
426                     .addContainerGap(196, Short.MAX_VALUE)))
427         );
428
429         jPanel3Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jPanel5, jPanel6, jPanel7});
430
431         jTabbedPane1.addTab("カラー", jPanel3);
432
433         jLabel11.setText("タイムラインのテーブルの高さ");
434
435         jSpinner5.addChangeListener(new javax.swing.event.ChangeListener() {
436             public void stateChanged(javax.swing.event.ChangeEvent evt) {
437                 jSpinner5StateChanged(evt);
438             }
439         });
440
441         jCheckBox1.setSelected(true);
442         jCheckBox1.setText("自分宛のMentionメッセージをタスクバーから通知する");
443         jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
444             public void actionPerformed(java.awt.event.ActionEvent evt) {
445                 jCheckBox1ActionPerformed(evt);
446             }
447         });
448
449         jCheckBox2.setSelected(true);
450         jCheckBox2.setText("自分宛のDirectメッセージをタスクバーから通知する");
451
452         jSpinner6.addChangeListener(new javax.swing.event.ChangeListener() {
453             public void stateChanged(javax.swing.event.ChangeEvent evt) {
454                 jSpinner6StateChanged(evt);
455             }
456         });
457
458         jLabel12.setText("テーブルに表示するツイート数");
459
460         jCheckBox3.setText("クライアントの最新情報を通知する");
461
462         jCheckBox4.setText("自分の発言がお気に入りに登録されたら通知する(ストリーミングAPI利用時のみ)");
463
464         javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
465         jPanel4.setLayout(jPanel4Layout);
466         jPanel4Layout.setHorizontalGroup(
467             jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
468             .addGroup(jPanel4Layout.createSequentialGroup()
469                 .addContainerGap()
470                 .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
471                     .addComponent(jCheckBox3, javax.swing.GroupLayout.DEFAULT_SIZE, 434, Short.MAX_VALUE)
472                     .addComponent(jCheckBox1, javax.swing.GroupLayout.DEFAULT_SIZE, 434, Short.MAX_VALUE)
473                     .addComponent(jCheckBox2, javax.swing.GroupLayout.DEFAULT_SIZE, 434, Short.MAX_VALUE)
474                     .addGroup(jPanel4Layout.createSequentialGroup()
475                         .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
476                             .addComponent(jLabel12)
477                             .addComponent(jLabel11))
478                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
479                         .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
480                             .addComponent(jSpinner5, javax.swing.GroupLayout.DEFAULT_SIZE, 293, Short.MAX_VALUE)
481                             .addComponent(jSpinner6, javax.swing.GroupLayout.DEFAULT_SIZE, 293, Short.MAX_VALUE)))
482                     .addComponent(jCheckBox4, javax.swing.GroupLayout.DEFAULT_SIZE, 434, Short.MAX_VALUE))
483                 .addContainerGap())
484         );
485         jPanel4Layout.setVerticalGroup(
486             jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
487             .addGroup(jPanel4Layout.createSequentialGroup()
488                 .addContainerGap()
489                 .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
490                     .addComponent(jSpinner5)
491                     .addComponent(jLabel11))
492                 .addGap(5, 5, 5)
493                 .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
494                     .addComponent(jLabel12, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
495                     .addComponent(jSpinner6, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
496                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
497                 .addComponent(jCheckBox1)
498                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
499                 .addComponent(jCheckBox2)
500                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
501                 .addComponent(jCheckBox4)
502                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
503                 .addComponent(jCheckBox3)
504                 .addGap(171, 171, 171))
505         );
506
507         jTabbedPane1.addTab("表示", jPanel4);
508
509         jButton1.setText("設定を保存");
510         jButton1.addActionListener(new java.awt.event.ActionListener() {
511             public void actionPerformed(java.awt.event.ActionEvent evt) {
512                 jButton1ActionPerformed(evt);
513             }
514         });
515
516         jButton2.setText("キャンセル");
517         jButton2.addActionListener(new java.awt.event.ActionListener() {
518             public void actionPerformed(java.awt.event.ActionEvent evt) {
519                 jButton2ActionPerformed(evt);
520             }
521         });
522
523         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
524         getContentPane().setLayout(layout);
525         layout.setHorizontalGroup(
526             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
527             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
528                 .addContainerGap(230, Short.MAX_VALUE)
529                 .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)
530                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
531                 .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)
532                 .addGap(8, 8, 8))
533             .addGroup(layout.createSequentialGroup()
534                 .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 463, Short.MAX_VALUE)
535                 .addContainerGap())
536         );
537         layout.setVerticalGroup(
538             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
539             .addGroup(layout.createSequentialGroup()
540                 .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 341, javax.swing.GroupLayout.PREFERRED_SIZE)
541                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
542                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
543                     .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
544                     .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE))
545                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
546         );
547
548         pack();
549     }// </editor-fold>//GEN-END:initComponents
550
551     private void jLabel10MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel10MouseClicked
552         Color c = JColorChooser.showDialog(this, "テーブルカラーの選択",
553                 mainAction.getNewTableColor());
554         if (c != null) {
555             jLabel10.setBackground(c);
556         }
557     }//GEN-LAST:event_jLabel10MouseClicked
558
559     private void jSpinner5StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinner5StateChanged
560                 // テーブルの高さを更新
561         Integer val = Integer.parseInt( jSpinner5.getValue().toString() );
562         if( val == null ) {
563             val = 50;
564         }
565         if( val < 0 ) {
566             val = 0;
567             jSpinner5.setValue(0);
568         }
569         mainAction.updateTableHeight( val );
570     }//GEN-LAST:event_jSpinner5StateChanged
571
572     private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
573         this.setVisible(false);
574     }//GEN-LAST:event_jButton2ActionPerformed
575
576     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
577         try {
578             // 更新間隔情報
579             mainAction.setGetTimelinePeriod(Integer.parseInt(jSpinner1.getValue().toString()));
580             mainAction.setGetMentionPeriod(Integer.parseInt(jSpinner2.getValue().toString()));
581             mainAction.setGetDirectMessagePeriod(Integer.parseInt(jSpinner3.getValue().toString()));
582             mainAction.setGetSendDirectMessagePeriod(Integer.parseInt(jSpinner4.getValue().toString()));
583
584             mainAction.setNewTableColor(jLabel10.getBackground());
585             mainAction.setOddTableColor(jLabel14.getBackground());
586             mainAction.setEvenTableColor(jLabel15.getBackground());
587
588             // フォント情報
589             mainAction.setTlFontName((String) jComboBox1.getSelectedItem());
590             mainAction.setDetailFontName((String) jComboBox2.getSelectedItem());
591             mainAction.setTlFontSize(Integer.parseInt((String) jComboBox3.getSelectedItem()));
592             mainAction.setDetailFontSize(Integer.parseInt((String) jComboBox4.getSelectedItem()));
593             // フォント情報反映
594             mainAction.updateFontInformationToComponent();
595
596             //更新間隔反映
597             mainAction.updatePeriodInformationToComponent();
598
599             // 表示
600             mainAction.setTableElementHeight(Integer.parseInt( jSpinner5.getValue().toString() ));
601             mainAction.setNotifyMention( jCheckBox1.isSelected() );
602             mainAction.setNotifyDirectMessage( jCheckBox2.isSelected() );
603             mainAction.setUpdateNotify( jCheckBox3.isSelected() );
604             //fav通知ウィンドウ変更
605             mainAction.setFavNotify( jCheckBox4.isSelected());
606             mainAction.updateNotifyInformation();
607             
608             //ツイート表示数
609             mainAction.setTableElementMaxSize(Integer.parseInt( jSpinner6.getValue().toString() ));
610         } catch (Exception e1) {
611             e1.printStackTrace();
612         }
613
614         try {
615             //設定保存
616             mainAction.saveProperties();
617         } catch (IOException ex) {
618             Logger.getLogger(ConfigurationDialog.class.getName()).log(Level.SEVERE, null, ex);
619         }
620
621         this.setVisible(false);
622     }//GEN-LAST:event_jButton1ActionPerformed
623
624     private void jSpinner1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinner1StateChanged
625         Integer val = Integer.parseInt(jSpinner1.getValue().toString());
626         if (val == null) {
627             //最小値30
628             val = MIN_PERIOD * 2;
629         }
630         if (val < MIN_PERIOD) {
631             val = MIN_PERIOD;
632             jSpinner1.setValue(MIN_PERIOD);
633         }
634     }//GEN-LAST:event_jSpinner1StateChanged
635
636     private void jSpinner2StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinner2StateChanged
637         Integer val = Integer.parseInt(jSpinner2.getValue().toString());
638         if (val == null) {
639             //最小値30
640             val = MIN_PERIOD * 2;
641         }
642         if (val < MIN_PERIOD) {
643             val = MIN_PERIOD;
644             jSpinner2.setValue(MIN_PERIOD);
645         }
646     }//GEN-LAST:event_jSpinner2StateChanged
647
648     private void jSpinner3StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinner3StateChanged
649         Integer val = Integer.parseInt(jSpinner3.getValue().toString());
650         if (val == null) {
651             //最小値30
652             val = MIN_PERIOD * 2;
653         }
654         if (val < MIN_PERIOD) {
655             val = MIN_PERIOD;
656             jSpinner3.setValue(MIN_PERIOD);
657         }
658     }//GEN-LAST:event_jSpinner3StateChanged
659
660     private void jSpinner4StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinner4StateChanged
661         Integer val = Integer.parseInt(jSpinner4.getValue().toString());
662         if (val == null) {
663             //最小値30
664             val = MIN_PERIOD * 2;
665         }
666         if (val < MIN_PERIOD) {
667             val = MIN_PERIOD;
668             jSpinner4.setValue(MIN_PERIOD);
669         }
670     }//GEN-LAST:event_jSpinner4StateChanged
671
672     private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox1ActionPerformed
673         // TODO add your handling code here:
674     }//GEN-LAST:event_jCheckBox1ActionPerformed
675
676 private void jSpinner6StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinner6StateChanged
677 // TODO add your handling code here:
678 }//GEN-LAST:event_jSpinner6StateChanged
679
680 private void jLabel14MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel14MouseClicked
681     Color c = JColorChooser.showDialog(this, "テーブルカラーの選択",
682             mainAction.getOddTableColor());
683     if (c != null) {
684         jLabel14.setBackground(c);
685     }
686 }//GEN-LAST:event_jLabel14MouseClicked
687
688 private void jLabel15MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel15MouseClicked
689     Color c = JColorChooser.showDialog(this, "テーブルカラーの選択",
690             mainAction.getEvenTableColor());
691     if (c != null) {
692         jLabel15.setBackground(c);
693     }
694 }//GEN-LAST:event_jLabel15MouseClicked
695
696     //twitter
697     private TweetMainAction mainAction;
698     // 利用可能なフォント一覧
699         private String[] fonts = null;
700     // フォント一覧コンボボックスのモデル
701         private final DefaultComboBoxModel fontModel = new DefaultComboBoxModel();
702         private final DefaultComboBoxModel fontModel2 = new DefaultComboBoxModel();
703         // フォントサイズコンボボックスのモデル
704         private final DefaultComboBoxModel fontSizeModel = new DefaultComboBoxModel();
705         private final DefaultComboBoxModel fontSizeModel2 = new DefaultComboBoxModel();
706
707     //情報更新最小値
708     private final int MIN_PERIOD = 30;
709
710     // Variables declaration - do not modify//GEN-BEGIN:variables
711     private javax.swing.JButton jButton1;
712     private javax.swing.JButton jButton2;
713     private javax.swing.JCheckBox jCheckBox1;
714     private javax.swing.JCheckBox jCheckBox2;
715     private javax.swing.JCheckBox jCheckBox3;
716     private javax.swing.JCheckBox jCheckBox4;
717     private javax.swing.JComboBox jComboBox1;
718     private javax.swing.JComboBox jComboBox2;
719     private javax.swing.JComboBox jComboBox3;
720     private javax.swing.JComboBox jComboBox4;
721     private javax.swing.JLabel jLabel1;
722     private javax.swing.JLabel jLabel10;
723     private javax.swing.JLabel jLabel11;
724     private javax.swing.JLabel jLabel12;
725     private javax.swing.JLabel jLabel13;
726     private javax.swing.JLabel jLabel14;
727     private javax.swing.JLabel jLabel15;
728     private javax.swing.JLabel jLabel16;
729     private javax.swing.JLabel jLabel17;
730     private javax.swing.JLabel jLabel2;
731     private javax.swing.JLabel jLabel3;
732     private javax.swing.JLabel jLabel4;
733     private javax.swing.JLabel jLabel5;
734     private javax.swing.JLabel jLabel6;
735     private javax.swing.JLabel jLabel7;
736     private javax.swing.JLabel jLabel8;
737     private javax.swing.JLabel jLabel9;
738     private javax.swing.JPanel jPanel1;
739     private javax.swing.JPanel jPanel2;
740     private javax.swing.JPanel jPanel3;
741     private javax.swing.JPanel jPanel4;
742     private javax.swing.JPanel jPanel5;
743     private javax.swing.JPanel jPanel6;
744     private javax.swing.JPanel jPanel7;
745     private javax.swing.JSpinner jSpinner1;
746     private javax.swing.JSpinner jSpinner2;
747     private javax.swing.JSpinner jSpinner3;
748     private javax.swing.JSpinner jSpinner4;
749     private javax.swing.JSpinner jSpinner5;
750     private javax.swing.JSpinner jSpinner6;
751     private javax.swing.JTabbedPane jTabbedPane1;
752     // End of variables declaration//GEN-END:variables
753
754 }