OSDN Git Service

ソフトウェアアップデート通知をするように改良
[nt-manager/nt-manager.git] / src / twitter / gui / form / NishioTweetManager.java
1 /*
2  * To change this template, choose Tools | Templates
3  * and open the template in the editor.
4  */
5
6 /*
7  * NishioTweetManager.java
8  *
9  * Created on 2010/09/06, 3:32:04
10  */
11 package twitter.gui.form;
12
13 import java.awt.AWTException;
14 import java.awt.Image;
15 import java.awt.MenuItem;
16 import java.awt.PopupMenu;
17 import java.awt.SystemTray;
18 import java.awt.TrayIcon;
19 import java.awt.event.ActionEvent;
20 import java.awt.event.ActionListener;
21 import java.awt.event.MouseAdapter;
22 import java.awt.event.MouseEvent;
23 import java.awt.image.BufferedImage;
24 import java.io.IOException;
25 import java.net.URL;
26 import java.util.logging.Level;
27 import java.util.logging.Logger;
28 import javax.swing.ImageIcon;
29 import javax.swing.JButton;
30 import javax.swing.JFrame;
31 import javax.swing.JPopupMenu;
32 import javax.swing.UIManager;
33 import javax.swing.WindowConstants;
34 import javax.swing.text.Style;
35 import javax.swing.text.StyleConstants;
36 import javax.swing.text.html.HTMLDocument;
37 import javax.swing.text.html.StyleSheet;
38 import twitter.action.list.ListGetterSelection;
39 import twitter.gui.action.TweetMainAction;
40 import twitter.gui.component.TweetHashtagHyperlinkHandler;
41 import twitter.gui.component.TweetHyperlinkHandler;
42 import twitter.gui.component.TweetTextFieldPopupMenu;
43 import twitter.manage.ClientVersionManager;
44 import twitter.manage.TweetManager;
45 import twitter.manage.VersionInfo;
46 import twitter.task.TimerID;
47
48 /**
49  *
50  * @author nishio
51  */
52 public class NishioTweetManager extends javax.swing.JFrame {
53
54         private SystemTray systemTray;
55         private TrayIcon trayIcon;
56         private TweetHashtagHyperlinkHandler hashTagHyperlinkListener = new TweetHashtagHyperlinkHandler();
57
58         /** Creates new form NishioTweetManager */
59         public NishioTweetManager() {
60                 initComponents();
61                 // component初期化
62                 initComponents2();
63                 // twitterコード初期化
64                 init();
65                 // checkboxの更新
66                 updateSelectedInformation();
67         }
68
69         /**
70          * コンポーネント初期化
71          */
72         private void initComponents2() {
73                 Image image = null;
74                 try {
75                         // トレイイメージ
76                         /*
77                          * URL resource = getClass().getResource("icon.png"); image = new
78                          * ImageIcon(resource).getImage();
79                          */
80                         image = new ImageIcon("resources/icon.png").getImage();
81                         // フレームのアイコン設定
82                         this.setIconImage(image);
83                 } catch (Exception e) {
84                         e.printStackTrace();
85                         image = new BufferedImage(32, 32, BufferedImage.TYPE_INT_RGB);
86                 }
87                 // システムトライ関係
88                 systemTray = SystemTray.getSystemTray();
89                 final JFrame frame = this;
90                 final PopupMenu popup = new PopupMenu();
91                 trayIcon = new TrayIcon(image, "Nishio Tweet Manager", popup);
92
93                 // 左クリックした時に「画面を開く」アクションをする
94                 trayIcon.addMouseListener(new MouseAdapter() {
95
96                         @Override
97                         public void mousePressed(MouseEvent me) {
98                                 // 左クリック
99                                 if (me.getButton() == MouseEvent.BUTTON1) {
100                                         frame.setVisible(true);
101                                 }
102                         }
103                 });
104
105                 // 右クリック時のポップアップメニュー
106                 MenuItem item1 = new MenuItem("画面を開く");
107                 item1.addActionListener(new ActionListener() {
108
109                         @Override
110                         public void actionPerformed(ActionEvent e) {
111                                 frame.setVisible(true);
112                         }
113                 });
114                 MenuItem item2 = new MenuItem("終了");
115                 item2.addActionListener(new ActionListener() {
116
117                         @Override
118                         public void actionPerformed(ActionEvent e) {
119                                 systemTray.remove(trayIcon);
120                                 frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
121                                 frame.dispose();
122                                 System.exit(0);
123                         }
124                 });
125                 popup.add(item1);
126                 popup.add(item2);
127
128                 try {
129                         systemTray.add(trayIcon);
130                 } catch (AWTException e) {
131                         e.printStackTrace();
132                 }
133
134                 //tweet発言するボックスの右クリック対応
135                 this.jTextPane.setComponentPopupMenu(
136                                 new TweetTextFieldPopupMenu( this.jTextPane ) );
137         }
138
139         /**
140          * This method is called from within the constructor to initialize the form.
141          * WARNING: Do NOT modify this code. The content of this method is always
142          * regenerated by the Form Editor.
143          */
144         @SuppressWarnings("unchecked")
145         // <editor-fold defaultstate="collapsed"
146     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
147     private void initComponents() {
148
149         jTabbedPane1 = new twitter.gui.component.DnDTabbedPane();
150         jPanel1 = new javax.swing.JPanel();
151         userImageLabel = new javax.swing.JLabel();
152         jScrollPane5 = new javax.swing.JScrollPane();
153         tweetMessageBox = new javax.swing.JEditorPane();
154         jLabel3 = new javax.swing.JLabel();
155         jLabel4 = new javax.swing.JLabel();
156         jLabel5 = new javax.swing.JLabel();
157         userNameLabel = new javax.swing.JLabel();
158         updateTimeLabel = new javax.swing.JLabel();
159         locationLabel = new javax.swing.JLabel();
160         jLabel9 = new javax.swing.JLabel();
161         followingLabel = new javax.swing.JLabel();
162         followerLabel = new javax.swing.JLabel();
163         jLabel12 = new javax.swing.JLabel();
164         jLabel13 = new javax.swing.JLabel();
165         updateLabel = new javax.swing.JLabel();
166         jScrollPane6 = new javax.swing.JScrollPane();
167         userIntroBox = new javax.swing.JEditorPane();
168         jScrollPane7 = new javax.swing.JScrollPane();
169         userWebBox = new javax.swing.JEditorPane();
170         jScrollPane8 = new javax.swing.JScrollPane();
171         clientNameLabel = new javax.swing.JEditorPane();
172         jPanel2 = new javax.swing.JPanel();
173         statusBar = new javax.swing.JLabel();
174         jToolBar1 = new javax.swing.JToolBar();
175         jButton1 = new javax.swing.JButton();
176         jSeparator1 = new javax.swing.JToolBar.Separator();
177         jButton2 = new javax.swing.JButton();
178         jSeparator2 = new javax.swing.JToolBar.Separator();
179         jToggleButton1 = new javax.swing.JToggleButton();
180         jToggleButton2 = new javax.swing.JToggleButton();
181         jSeparator3 = new javax.swing.JToolBar.Separator();
182         jToggleButton3 = new javax.swing.JToggleButton();
183         jToggleButton4 = new javax.swing.JToggleButton();
184         jToggleButton5 = new javax.swing.JToggleButton();
185         jToggleButton6 = new javax.swing.JToggleButton();
186         jPanel3 = new javax.swing.JPanel();
187         jScrollPane9 = new javax.swing.JScrollPane();
188         jTextPane = new javax.swing.JTextPane();
189         jButton4 = new javax.swing.JButton();
190         tweetLengthLabel = new javax.swing.JLabel();
191         jLabel15 = new javax.swing.JLabel();
192         jMenuBar1 = new javax.swing.JMenuBar();
193         jMenu1 = new javax.swing.JMenu();
194         jMenuItem1 = new javax.swing.JMenuItem();
195         jMenu6 = new javax.swing.JMenu();
196         jMenuItem10 = new javax.swing.JMenuItem();
197         jMenuItem7 = new javax.swing.JMenuItem();
198         jMenuItem8 = new javax.swing.JMenuItem();
199         jSeparator4 = new javax.swing.JPopupMenu.Separator();
200         jMenuItem11 = new javax.swing.JMenuItem();
201         jMenuItem12 = new javax.swing.JMenuItem();
202         jMenuItem13 = new javax.swing.JMenuItem();
203         jMenuItem15 = new javax.swing.JMenuItem();
204         jMenuItem14 = new javax.swing.JMenuItem();
205         jMenuItem16 = new javax.swing.JMenuItem();
206         jSeparator5 = new javax.swing.JPopupMenu.Separator();
207         jMenuItem17 = new javax.swing.JMenuItem();
208         jMenuItem18 = new javax.swing.JMenuItem();
209         jMenuItem21 = new javax.swing.JMenuItem();
210         jMenuItem35 = new javax.swing.JMenuItem();
211         jMenuItem36 = new javax.swing.JMenuItem();
212         jSeparator6 = new javax.swing.JPopupMenu.Separator();
213         jMenuItem30 = new javax.swing.JMenuItem();
214         jMenuItem22 = new javax.swing.JMenuItem();
215         jMenuItem19 = new javax.swing.JMenuItem();
216         jMenuItem20 = new javax.swing.JMenuItem();
217         jMenuItem33 = new javax.swing.JMenuItem();
218         jMenu4 = new javax.swing.JMenu();
219         jMenuItem5 = new javax.swing.JMenuItem();
220         jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem();
221         jCheckBoxMenuItem2 = new javax.swing.JCheckBoxMenuItem();
222         jCheckBoxMenuItem3 = new javax.swing.JCheckBoxMenuItem();
223         jCheckBoxMenuItem4 = new javax.swing.JCheckBoxMenuItem();
224         jCheckBoxMenuItem5 = new javax.swing.JCheckBoxMenuItem();
225         jCheckBoxMenuItem6 = new javax.swing.JCheckBoxMenuItem();
226         jMenuItem9 = new javax.swing.JMenuItem();
227         jMenu5 = new javax.swing.JMenu();
228         jMenuItem6 = new javax.swing.JMenuItem();
229         jMenuItem23 = new javax.swing.JMenuItem();
230         jMenuItem31 = new javax.swing.JMenuItem();
231         jMenuItem34 = new javax.swing.JMenuItem();
232         jMenu7 = new javax.swing.JMenu();
233         jMenuItem25 = new javax.swing.JMenuItem();
234         jMenuItem24 = new javax.swing.JMenuItem();
235         jMenuItem26 = new javax.swing.JMenuItem();
236         jSeparator7 = new javax.swing.JPopupMenu.Separator();
237         jMenuItem27 = new javax.swing.JMenuItem();
238         jMenuItem28 = new javax.swing.JMenuItem();
239         jMenuItem29 = new javax.swing.JMenuItem();
240         jMenu2 = new javax.swing.JMenu();
241         jMenuItem2 = new javax.swing.JMenuItem();
242         jMenuItem4 = new javax.swing.JMenuItem();
243         jMenu8 = new javax.swing.JMenu();
244         logSaveCheckItem = new javax.swing.JCheckBoxMenuItem();
245         jMenuItem32 = new javax.swing.JMenuItem();
246         jMenu3 = new javax.swing.JMenu();
247         jMenuItem3 = new javax.swing.JMenuItem();
248
249         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
250         setTitle("Nishio Tweet Manager");
251
252         jTabbedPane1.addContainerListener(new java.awt.event.ContainerAdapter() {
253             public void componentRemoved(java.awt.event.ContainerEvent evt) {
254                 jTabbedPane1ComponentRemoved(evt);
255             }
256         });
257
258         jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
259
260         userImageLabel.setBackground(java.awt.Color.black);
261         userImageLabel.setOpaque(true);
262
263         jScrollPane5.setHorizontalScrollBar(null);
264
265         tweetMessageBox.setContentType("text/html");
266         tweetMessageBox.setEditable(false);
267         tweetMessageBox.addComponentListener(new java.awt.event.ComponentAdapter() {
268             public void componentResized(java.awt.event.ComponentEvent evt) {
269                 tweetMessageBoxComponentResized(evt);
270             }
271         });
272         tweetMessageBox.addHyperlinkListener(hashTagHyperlinkListener);
273         jScrollPane5.setViewportView(tweetMessageBox);
274
275         jLabel3.setText("ユーザ名");
276
277         jLabel4.setText("更新日");
278
279         jLabel5.setText("現在地");
280
281         userNameLabel.setText("UserName");
282
283         updateTimeLabel.setText("Date");
284
285         locationLabel.setText("Information");
286
287         jLabel9.setText("Following");
288
289         followingLabel.setText("0");
290
291         followerLabel.setText("0");
292
293         jLabel12.setText("Follower");
294
295         jLabel13.setText("更新回数");
296
297         updateLabel.setText("0");
298
299         jScrollPane6.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
300
301         userIntroBox.setContentType("text/html");
302         userIntroBox.setEditable(false);
303         userIntroBox.setMinimumSize(new java.awt.Dimension(120, 20));
304         jScrollPane6.setViewportView(userIntroBox);
305
306         jScrollPane7.setBorder(null);
307         jScrollPane7.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
308         jScrollPane7.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
309
310         userWebBox.setBorder(null);
311         userWebBox.setContentType("text/html");
312         userWebBox.setEditable(false);
313         userWebBox.setEditable(false);
314         userWebBox.addHyperlinkListener(new TweetHyperlinkHandler());
315         try {
316             // htmlフォント変更
317             HTMLDocument doc = (HTMLDocument) userWebBox.getDocument();
318             StyleSheet[] style = doc.getStyleSheet().getStyleSheets();
319             for (int i = style.length - 1; i >= 0; i--) {
320                 Style body = style[i].getStyle("body");
321                 if (body != null) {
322                     // TODO: change default font size
323                     StyleConstants.setFontSize(body, 13);
324                 }
325             }
326         } catch (Exception e) {
327             e.printStackTrace();
328         }
329         jScrollPane7.setViewportView(userWebBox);
330
331         jScrollPane8.setBorder(null);
332         jScrollPane8.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
333         jScrollPane8.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
334
335         clientNameLabel.setBorder(null);
336         clientNameLabel.setContentType("text/html");
337         clientNameLabel.setEditable(false);
338         clientNameLabel.setEditable(false);
339         clientNameLabel.addHyperlinkListener(new TweetHyperlinkHandler());
340         try {
341             // htmlフォント変更
342             HTMLDocument doc = (HTMLDocument) clientNameLabel.getDocument();
343             StyleSheet[] style = doc.getStyleSheet().getStyleSheets();
344             for (int i = style.length - 1; i >= 0; i--) {
345                 Style body = style[i].getStyle("body");
346                 if (body != null) {
347                     // TODO: default font size
348                     StyleConstants.setFontSize(body, 13);
349                 }
350             }
351         } catch (Exception e) {
352             e.printStackTrace();
353         }
354         jScrollPane8.setViewportView(clientNameLabel);
355
356         javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
357         jPanel1.setLayout(jPanel1Layout);
358         jPanel1Layout.setHorizontalGroup(
359             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
360             .addGroup(jPanel1Layout.createSequentialGroup()
361                 .addComponent(userImageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
362                 .addGap(3, 3, 3)
363                 .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 666, Short.MAX_VALUE))
364             .addGroup(jPanel1Layout.createSequentialGroup()
365                 .addContainerGap()
366                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
367                     .addGroup(jPanel1Layout.createSequentialGroup()
368                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
369                             .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
370                             .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
371                             .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
372                         .addGap(18, 18, 18)
373                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
374                             .addComponent(locationLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 183, javax.swing.GroupLayout.PREFERRED_SIZE)
375                             .addComponent(userNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 183, javax.swing.GroupLayout.PREFERRED_SIZE)
376                             .addComponent(updateTimeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 183, javax.swing.GroupLayout.PREFERRED_SIZE))
377                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
378                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
379                             .addComponent(jLabel13, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
380                             .addComponent(jLabel12, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
381                             .addComponent(jLabel9))
382                         .addGap(18, 18, 18)
383                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
384                             .addComponent(updateLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
385                             .addComponent(followerLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 68, Short.MAX_VALUE)
386                             .addComponent(followingLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
387                     .addGroup(jPanel1Layout.createSequentialGroup()
388                         .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, 220, javax.swing.GroupLayout.PREFERRED_SIZE)
389                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
390                         .addComponent(jScrollPane8, javax.swing.GroupLayout.PREFERRED_SIZE, 189, javax.swing.GroupLayout.PREFERRED_SIZE)))
391                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
392                 .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE))
393         );
394         jPanel1Layout.setVerticalGroup(
395             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
396             .addGroup(jPanel1Layout.createSequentialGroup()
397                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
398                     .addComponent(userImageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
399                     .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE))
400                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
401                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
402                     .addGroup(jPanel1Layout.createSequentialGroup()
403                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
404                             .addGroup(jPanel1Layout.createSequentialGroup()
405                                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
406                                     .addComponent(jLabel3)
407                                     .addComponent(userNameLabel))
408                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
409                                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
410                                     .addComponent(jLabel4)
411                                     .addComponent(updateTimeLabel))
412                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
413                                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
414                                     .addComponent(jLabel5)
415                                     .addComponent(locationLabel)))
416                             .addGroup(jPanel1Layout.createSequentialGroup()
417                                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
418                                     .addComponent(jLabel9)
419                                     .addComponent(followingLabel))
420                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
421                                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
422                                     .addComponent(jLabel12)
423                                     .addComponent(followerLabel))
424                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
425                                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
426                                     .addComponent(jLabel13)
427                                     .addComponent(updateLabel))))
428                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
429                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
430                             .addComponent(jScrollPane8, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
431                             .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)))
432                     .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE))
433                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
434         );
435
436         jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
437
438         statusBar.setText("Status");
439         statusBar.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
440             public void propertyChange(java.beans.PropertyChangeEvent evt) {
441                 statusBarPropertyChange(evt);
442             }
443         });
444
445         javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
446         jPanel2.setLayout(jPanel2Layout);
447         jPanel2Layout.setHorizontalGroup(
448             jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
449             .addComponent(statusBar, javax.swing.GroupLayout.PREFERRED_SIZE, 707, javax.swing.GroupLayout.PREFERRED_SIZE)
450         );
451         jPanel2Layout.setVerticalGroup(
452             jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
453             .addComponent(statusBar, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 20, Short.MAX_VALUE)
454         );
455
456         jToolBar1.setRollover(true);
457
458         jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/toolbarButtonGraphics/general/Refresh24.gif"))); // NOI18N
459         jButton1.setToolTipText("今すぐ更新");
460         jButton1.setFocusable(false);
461         jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
462         jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
463         jButton1.addActionListener(new java.awt.event.ActionListener() {
464             public void actionPerformed(java.awt.event.ActionEvent evt) {
465                 jButton1ActionPerformed(evt);
466             }
467         });
468         jToolBar1.add(jButton1);
469         jToolBar1.add(jSeparator1);
470
471         jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/toolbarButtonGraphics/general/Find24.gif"))); // NOI18N
472         jButton2.setFocusable(false);
473         jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
474         jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
475         jButton2.addActionListener(new java.awt.event.ActionListener() {
476             public void actionPerformed(java.awt.event.ActionEvent evt) {
477                 jButton2ActionPerformed(evt);
478             }
479         });
480         jToolBar1.add(jButton2);
481         jToolBar1.add(jSeparator2);
482
483         jToggleButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/syousai.PNG"))); // NOI18N
484         jToggleButton1.setSelected(true);
485         jToggleButton1.setFocusable(false);
486         jToggleButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
487         jToggleButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
488         jToggleButton1.addActionListener(new java.awt.event.ActionListener() {
489             public void actionPerformed(java.awt.event.ActionEvent evt) {
490                 jToggleButton1ActionPerformed(evt);
491             }
492         });
493         jToolBar1.add(jToggleButton1);
494
495         jToggleButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/write.PNG"))); // NOI18N
496         jToggleButton2.setSelected(true);
497         jToggleButton2.setFocusable(false);
498         jToggleButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
499         jToggleButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
500         jToggleButton2.addActionListener(new java.awt.event.ActionListener() {
501             public void actionPerformed(java.awt.event.ActionEvent evt) {
502                 jToggleButton2ActionPerformed(evt);
503             }
504         });
505         jToolBar1.add(jToggleButton2);
506         jToolBar1.add(jSeparator3);
507
508         jToggleButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/timeline.PNG"))); // NOI18N
509         jToggleButton3.setSelected(true);
510         jToggleButton3.setFocusable(false);
511         jToggleButton3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
512         jToggleButton3.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
513         jToggleButton3.addActionListener(new java.awt.event.ActionListener() {
514             public void actionPerformed(java.awt.event.ActionEvent evt) {
515                 jToggleButton3ActionPerformed(evt);
516             }
517         });
518         jToolBar1.add(jToggleButton3);
519
520         jToggleButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/mention.PNG"))); // NOI18N
521         jToggleButton4.setFocusable(false);
522         jToggleButton4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
523         jToggleButton4.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
524         jToggleButton4.addActionListener(new java.awt.event.ActionListener() {
525             public void actionPerformed(java.awt.event.ActionEvent evt) {
526                 jToggleButton4ActionPerformed(evt);
527             }
528         });
529         jToolBar1.add(jToggleButton4);
530
531         jToggleButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/directmessage.PNG"))); // NOI18N
532         jToggleButton5.setFocusable(false);
533         jToggleButton5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
534         jToggleButton5.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
535         jToggleButton5.addActionListener(new java.awt.event.ActionListener() {
536             public void actionPerformed(java.awt.event.ActionEvent evt) {
537                 jToggleButton5ActionPerformed(evt);
538             }
539         });
540         jToolBar1.add(jToggleButton5);
541
542         jToggleButton6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resource/sendMessage.PNG"))); // NOI18N
543         jToggleButton6.setFocusable(false);
544         jToggleButton6.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
545         jToggleButton6.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
546         jToggleButton6.addActionListener(new java.awt.event.ActionListener() {
547             public void actionPerformed(java.awt.event.ActionEvent evt) {
548                 jToggleButton6ActionPerformed(evt);
549             }
550         });
551         jToolBar1.add(jToggleButton6);
552
553         jScrollPane9.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
554         jScrollPane9.setMaximumSize(new java.awt.Dimension(32767, 80));
555         jScrollPane9.setMinimumSize(new java.awt.Dimension(26, 80));
556
557         jTextPane.setMaximumSize(new java.awt.Dimension(2147483647, 20));
558         jTextPane.addCaretListener(new javax.swing.event.CaretListener() {
559             public void caretUpdate(javax.swing.event.CaretEvent evt) {
560                 jTextPaneCaretUpdate(evt);
561             }
562         });
563         jTextPane.addFocusListener(new java.awt.event.FocusAdapter() {
564             public void focusGained(java.awt.event.FocusEvent evt) {
565                 jTextPaneFocusGained(evt);
566             }
567             public void focusLost(java.awt.event.FocusEvent evt) {
568                 jTextPaneFocusLost(evt);
569             }
570         });
571         jTextPane.addKeyListener(new java.awt.event.KeyAdapter() {
572             public void keyReleased(java.awt.event.KeyEvent evt) {
573                 jTextPaneKeyReleased(evt);
574             }
575         });
576         jScrollPane9.setViewportView(jTextPane);
577
578         jButton4.setText("つぶやく");
579         jButton4.addActionListener(new java.awt.event.ActionListener() {
580             public void actionPerformed(java.awt.event.ActionEvent evt) {
581                 jButton4ActionPerformed(evt);
582             }
583         });
584
585         tweetLengthLabel.setText("140");
586
587         jLabel15.setText("残り文字数");
588
589         javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
590         jPanel3.setLayout(jPanel3Layout);
591         jPanel3Layout.setHorizontalGroup(
592             jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
593             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
594                 .addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 529, Short.MAX_VALUE)
595                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
596                 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
597                     .addComponent(jLabel15)
598                     .addComponent(tweetLengthLabel))
599                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
600                 .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE)
601                 .addContainerGap())
602         );
603         jPanel3Layout.setVerticalGroup(
604             jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
605             .addGroup(jPanel3Layout.createSequentialGroup()
606                 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
607                     .addComponent(jButton4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE)
608                     .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel3Layout.createSequentialGroup()
609                         .addComponent(jLabel15)
610                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
611                         .addComponent(tweetLengthLabel)))
612                 .addGap(48, 48, 48))
613             .addGroup(jPanel3Layout.createSequentialGroup()
614                 .addComponent(jScrollPane9, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
615                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
616         );
617
618         jMenu1.setMnemonic('F');
619         /*
620         org.openide.awt.Mnemonics.setLocalizedText(jMenu1, "ファイル(F)");
621         */
622         jMenu1.setText("ファイル(F)");
623
624         jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
625         jMenuItem1.setMnemonic('X');
626         jMenuItem1.setText("終了(X)");
627         jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
628             public void actionPerformed(java.awt.event.ActionEvent evt) {
629                 jMenuItem1ActionPerformed(evt);
630             }
631         });
632         jMenu1.add(jMenuItem1);
633
634         jMenuBar1.add(jMenu1);
635
636         jMenu6.setMnemonic('O');
637         jMenu6.setText("操作(O)");
638
639         jMenuItem10.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, 0));
640         jMenuItem10.setMnemonic('U');
641         jMenuItem10.setText("今すぐ更新(U)");
642         jMenuItem10.addActionListener(new java.awt.event.ActionListener() {
643             public void actionPerformed(java.awt.event.ActionEvent evt) {
644                 jMenuItem10ActionPerformed(evt);
645             }
646         });
647         jMenu6.add(jMenuItem10);
648
649         jMenuItem7.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, java.awt.event.InputEvent.CTRL_MASK));
650         jMenuItem7.setMnemonic('A');
651         jMenuItem7.setText("すべての情報を今すぐ更新(A)");
652         jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
653             public void actionPerformed(java.awt.event.ActionEvent evt) {
654                 jMenuItem7ActionPerformed(evt);
655             }
656         });
657         jMenu6.add(jMenuItem7);
658
659         jMenuItem8.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, java.awt.event.InputEvent.ALT_MASK));
660         jMenuItem8.setMnemonic('I');
661         jMenuItem8.setText("時間情報を更新(I)");
662         jMenuItem8.addActionListener(new java.awt.event.ActionListener() {
663             public void actionPerformed(java.awt.event.ActionEvent evt) {
664                 jMenuItem8ActionPerformed(evt);
665             }
666         });
667         jMenu6.add(jMenuItem8);
668         jMenu6.add(jSeparator4);
669
670         jMenuItem11.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK));
671         jMenuItem11.setMnemonic('R');
672         jMenuItem11.setText("発言に返信(Reply)");
673         jMenuItem11.addActionListener(new java.awt.event.ActionListener() {
674             public void actionPerformed(java.awt.event.ActionEvent evt) {
675                 jMenuItem11ActionPerformed(evt);
676             }
677         });
678         jMenu6.add(jMenuItem11);
679
680         jMenuItem12.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
681         jMenuItem12.setMnemonic('A');
682         jMenuItem12.setText("発言に返信(Reply All)");
683         jMenuItem12.addActionListener(new java.awt.event.ActionListener() {
684             public void actionPerformed(java.awt.event.ActionEvent evt) {
685                 jMenuItem12ActionPerformed(evt);
686             }
687         });
688         jMenu6.add(jMenuItem12);
689
690         jMenuItem13.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.CTRL_MASK));
691         jMenuItem13.setMnemonic('T');
692         jMenuItem13.setText("発言を公式リツイート(RT)");
693         jMenuItem13.addActionListener(new java.awt.event.ActionListener() {
694             public void actionPerformed(java.awt.event.ActionEvent evt) {
695                 jMenuItem13ActionPerformed(evt);
696             }
697         });
698         jMenu6.add(jMenuItem13);
699
700         jMenuItem15.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
701         jMenuItem15.setText("発言をコメント付リツイート(非公式RT)");
702         jMenuItem15.addActionListener(new java.awt.event.ActionListener() {
703             public void actionPerformed(java.awt.event.ActionEvent evt) {
704                 jMenuItem15ActionPerformed(evt);
705             }
706         });
707         jMenu6.add(jMenuItem15);
708
709         jMenuItem14.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
710         jMenuItem14.setMnemonic('Q');
711         jMenuItem14.setText("発言を引用ツイート(QT)");
712         jMenuItem14.addActionListener(new java.awt.event.ActionListener() {
713             public void actionPerformed(java.awt.event.ActionEvent evt) {
714                 jMenuItem14ActionPerformed(evt);
715             }
716         });
717         jMenu6.add(jMenuItem14);
718
719         jMenuItem16.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.CTRL_MASK));
720         jMenuItem16.setMnemonic('D');
721         jMenuItem16.setText("ダイレクトメッセージを送信(D)");
722         jMenuItem16.addActionListener(new java.awt.event.ActionListener() {
723             public void actionPerformed(java.awt.event.ActionEvent evt) {
724                 jMenuItem16ActionPerformed(evt);
725             }
726         });
727         jMenu6.add(jMenuItem16);
728         jMenu6.add(jSeparator5);
729
730         jMenuItem17.setText("選択した発言をブラウザで開く");
731         jMenuItem17.addActionListener(new java.awt.event.ActionListener() {
732             public void actionPerformed(java.awt.event.ActionEvent evt) {
733                 jMenuItem17ActionPerformed(evt);
734             }
735         });
736         jMenu6.add(jMenuItem17);
737
738         jMenuItem18.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
739         jMenuItem18.setMnemonic('S');
740         jMenuItem18.setText("選択したユーザの発言を別タブで開く(S)");
741         jMenuItem18.addActionListener(new java.awt.event.ActionListener() {
742             public void actionPerformed(java.awt.event.ActionEvent evt) {
743                 jMenuItem18ActionPerformed(evt);
744             }
745         });
746         jMenu6.add(jMenuItem18);
747
748         jMenuItem21.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, java.awt.event.InputEvent.CTRL_MASK));
749         jMenuItem21.setMnemonic('B');
750         jMenuItem21.setText("選択したユーザの発言をブラウザで開く(B)");
751         jMenuItem21.addActionListener(new java.awt.event.ActionListener() {
752             public void actionPerformed(java.awt.event.ActionEvent evt) {
753                 jMenuItem21ActionPerformed(evt);
754             }
755         });
756         jMenu6.add(jMenuItem21);
757
758         jMenuItem35.setText("選択したユーザがフォローしているユーザ一覧を開く");
759         jMenuItem35.addActionListener(new java.awt.event.ActionListener() {
760             public void actionPerformed(java.awt.event.ActionEvent evt) {
761                 jMenuItem35ActionPerformed(evt);
762             }
763         });
764         jMenu6.add(jMenuItem35);
765
766         jMenuItem36.setText("選択したユーザがフォローされているユーザ一覧を開く");
767         jMenuItem36.addActionListener(new java.awt.event.ActionListener() {
768             public void actionPerformed(java.awt.event.ActionEvent evt) {
769                 jMenuItem36ActionPerformed(evt);
770             }
771         });
772         jMenu6.add(jMenuItem36);
773         jMenu6.add(jSeparator6);
774
775         jMenuItem30.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
776         jMenuItem30.setText("自分のお気に入りを開く");
777         jMenuItem30.addActionListener(new java.awt.event.ActionListener() {
778             public void actionPerformed(java.awt.event.ActionEvent evt) {
779                 jMenuItem30ActionPerformed(evt);
780             }
781         });
782         jMenu6.add(jMenuItem30);
783
784         jMenuItem22.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.ALT_MASK));
785         jMenuItem22.setText("選択したユーザのお気に入りを開く");
786         jMenuItem22.addActionListener(new java.awt.event.ActionListener() {
787             public void actionPerformed(java.awt.event.ActionEvent evt) {
788                 jMenuItem22ActionPerformed(evt);
789             }
790         });
791         jMenu6.add(jMenuItem22);
792
793         jMenuItem19.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
794         jMenuItem19.setMnemonic('F');
795         jMenuItem19.setText("選択した発言をお気に入りに追加(F)");
796         jMenuItem19.addActionListener(new java.awt.event.ActionListener() {
797             public void actionPerformed(java.awt.event.ActionEvent evt) {
798                 jMenuItem19ActionPerformed(evt);
799             }
800         });
801         jMenu6.add(jMenuItem19);
802
803         jMenuItem20.setText("選択した発言をお気に入りから削除");
804         jMenuItem20.addActionListener(new java.awt.event.ActionListener() {
805             public void actionPerformed(java.awt.event.ActionEvent evt) {
806                 jMenuItem20ActionPerformed(evt);
807             }
808         });
809         jMenu6.add(jMenuItem20);
810
811         jMenuItem33.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
812         jMenuItem33.setMnemonic('C');
813         jMenuItem33.setText("つぶやき内のURLをbit.ly短縮URLに変換(C)");
814         jMenuItem33.addActionListener(new java.awt.event.ActionListener() {
815             public void actionPerformed(java.awt.event.ActionEvent evt) {
816                 jMenuItem33ActionPerformed(evt);
817             }
818         });
819         jMenu6.add(jMenuItem33);
820
821         jMenuBar1.add(jMenu6);
822
823         jMenu4.setMnemonic('V');
824         jMenu4.setText("表示(V)");
825
826         jMenuItem5.setMnemonic('D');
827         jMenuItem5.setText("選択しているタブを削除(D)");
828         jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
829             public void actionPerformed(java.awt.event.ActionEvent evt) {
830                 jMenuItem5ActionPerformed(evt);
831             }
832         });
833         jMenu4.add(jMenuItem5);
834
835         jCheckBoxMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, java.awt.event.InputEvent.CTRL_MASK));
836         jCheckBoxMenuItem1.setMnemonic('I');
837         jCheckBoxMenuItem1.setSelected(true);
838         jCheckBoxMenuItem1.setText("詳細情報ボタンの表示(I)");
839         jCheckBoxMenuItem1.addActionListener(new java.awt.event.ActionListener() {
840             public void actionPerformed(java.awt.event.ActionEvent evt) {
841                 jCheckBoxMenuItem1ActionPerformed(evt);
842             }
843         });
844         jMenu4.add(jCheckBoxMenuItem1);
845
846         jCheckBoxMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W, java.awt.event.InputEvent.CTRL_MASK));
847         jCheckBoxMenuItem2.setMnemonic('W');
848         jCheckBoxMenuItem2.setSelected(true);
849         jCheckBoxMenuItem2.setText("書き込みボタンの表示(W)");
850         jCheckBoxMenuItem2.addActionListener(new java.awt.event.ActionListener() {
851             public void actionPerformed(java.awt.event.ActionEvent evt) {
852                 jCheckBoxMenuItem2ActionPerformed(evt);
853             }
854         });
855         jMenu4.add(jCheckBoxMenuItem2);
856
857         jCheckBoxMenuItem3.setSelected(true);
858         jCheckBoxMenuItem3.setText("Timelineタブを表示");
859         jCheckBoxMenuItem3.addActionListener(new java.awt.event.ActionListener() {
860             public void actionPerformed(java.awt.event.ActionEvent evt) {
861                 jCheckBoxMenuItem3ActionPerformed(evt);
862             }
863         });
864         jMenu4.add(jCheckBoxMenuItem3);
865
866         jCheckBoxMenuItem4.setSelected(true);
867         jCheckBoxMenuItem4.setText("Mentionタブを表示");
868         jCheckBoxMenuItem4.addActionListener(new java.awt.event.ActionListener() {
869             public void actionPerformed(java.awt.event.ActionEvent evt) {
870                 jCheckBoxMenuItem4ActionPerformed(evt);
871             }
872         });
873         jMenu4.add(jCheckBoxMenuItem4);
874
875         jCheckBoxMenuItem5.setSelected(true);
876         jCheckBoxMenuItem5.setText("ダイレクトメッセージタブを表示");
877         jCheckBoxMenuItem5.addActionListener(new java.awt.event.ActionListener() {
878             public void actionPerformed(java.awt.event.ActionEvent evt) {
879                 jCheckBoxMenuItem5ActionPerformed(evt);
880             }
881         });
882         jMenu4.add(jCheckBoxMenuItem5);
883
884         jCheckBoxMenuItem6.setSelected(true);
885         jCheckBoxMenuItem6.setText("送信済みメッセージタブの表示");
886         jCheckBoxMenuItem6.addActionListener(new java.awt.event.ActionListener() {
887             public void actionPerformed(java.awt.event.ActionEvent evt) {
888                 jCheckBoxMenuItem6ActionPerformed(evt);
889             }
890         });
891         jMenu4.add(jCheckBoxMenuItem6);
892
893         jMenuItem9.setText("Debug");
894         jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
895             public void actionPerformed(java.awt.event.ActionEvent evt) {
896                 jMenuItem9ActionPerformed(evt);
897             }
898         });
899         jMenu4.add(jMenuItem9);
900
901         jMenuBar1.add(jMenu4);
902
903         jMenu5.setMnemonic('S');
904         jMenu5.setText("検索(S)");
905
906         jMenuItem6.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK));
907         jMenuItem6.setMnemonic('A');
908         jMenuItem6.setText("キーワードでTwitter全体を検索(A)");
909         jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
910             public void actionPerformed(java.awt.event.ActionEvent evt) {
911                 jMenuItem6ActionPerformed(evt);
912             }
913         });
914         jMenu5.add(jMenuItem6);
915
916         jMenuItem23.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_H, java.awt.event.InputEvent.CTRL_MASK));
917         jMenuItem23.setMnemonic('K');
918         jMenuItem23.setText("キーワードに関連するハッシュタグを検索(K)");
919         jMenuItem23.addActionListener(new java.awt.event.ActionListener() {
920             public void actionPerformed(java.awt.event.ActionEvent evt) {
921                 jMenuItem23ActionPerformed(evt);
922             }
923         });
924         jMenu5.add(jMenuItem23);
925
926         jMenuItem31.setMnemonic('U');
927         jMenuItem31.setText("指定したユーザを検索(U)");
928         jMenuItem31.addActionListener(new java.awt.event.ActionListener() {
929             public void actionPerformed(java.awt.event.ActionEvent evt) {
930                 jMenuItem31ActionPerformed(evt);
931             }
932         });
933         jMenu5.add(jMenuItem31);
934
935         jMenuItem34.setText("指定したユーザのFollowing/Followerを表示");
936         jMenuItem34.addActionListener(new java.awt.event.ActionListener() {
937             public void actionPerformed(java.awt.event.ActionEvent evt) {
938                 jMenuItem34ActionPerformed(evt);
939             }
940         });
941         jMenu5.add(jMenuItem34);
942
943         jMenuBar1.add(jMenu5);
944
945         jMenu7.setMnemonic('L');
946         jMenu7.setText("リスト(L)");
947
948         jMenuItem25.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.CTRL_MASK));
949         jMenuItem25.setMnemonic('C');
950         jMenuItem25.setText("自分が作成したリスト一覧(C)");
951         jMenuItem25.addActionListener(new java.awt.event.ActionListener() {
952             public void actionPerformed(java.awt.event.ActionEvent evt) {
953                 jMenuItem25ActionPerformed(evt);
954             }
955         });
956         jMenu7.add(jMenuItem25);
957
958         jMenuItem24.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.ALT_MASK));
959         jMenuItem24.setMnemonic('S');
960         jMenuItem24.setText("購読しているリスト一覧(S)");
961         jMenuItem24.addActionListener(new java.awt.event.ActionListener() {
962             public void actionPerformed(java.awt.event.ActionEvent evt) {
963                 jMenuItem24ActionPerformed(evt);
964             }
965         });
966         jMenu7.add(jMenuItem24);
967
968         jMenuItem26.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
969         jMenuItem26.setMnemonic('F');
970         jMenuItem26.setText("自分がフォローされているリスト一覧(F)");
971         jMenuItem26.addActionListener(new java.awt.event.ActionListener() {
972             public void actionPerformed(java.awt.event.ActionEvent evt) {
973                 jMenuItem26ActionPerformed(evt);
974             }
975         });
976         jMenu7.add(jMenuItem26);
977         jMenu7.add(jSeparator7);
978
979         jMenuItem27.setText("選択したユーザが作成したリスト一覧");
980         jMenuItem27.addActionListener(new java.awt.event.ActionListener() {
981             public void actionPerformed(java.awt.event.ActionEvent evt) {
982                 jMenuItem27ActionPerformed(evt);
983             }
984         });
985         jMenu7.add(jMenuItem27);
986
987         jMenuItem28.setText("選択したユーザが購読しているリスト一覧");
988         jMenuItem28.addActionListener(new java.awt.event.ActionListener() {
989             public void actionPerformed(java.awt.event.ActionEvent evt) {
990                 jMenuItem28ActionPerformed(evt);
991             }
992         });
993         jMenu7.add(jMenuItem28);
994
995         jMenuItem29.setText("選択したユーザがフォローされているリスト一覧");
996         jMenuItem29.addActionListener(new java.awt.event.ActionListener() {
997             public void actionPerformed(java.awt.event.ActionEvent evt) {
998                 jMenuItem29ActionPerformed(evt);
999             }
1000         });
1001         jMenu7.add(jMenuItem29);
1002
1003         jMenuBar1.add(jMenu7);
1004
1005         jMenu2.setMnemonic('O');
1006         jMenu2.setText("設定(O)");
1007
1008         jMenuItem2.setText("基本設定");
1009         jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
1010             public void actionPerformed(java.awt.event.ActionEvent evt) {
1011                 jMenuItem2ActionPerformed(evt);
1012             }
1013         });
1014         jMenu2.add(jMenuItem2);
1015
1016         jMenuItem4.setText("アカウント設定");
1017         jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
1018             public void actionPerformed(java.awt.event.ActionEvent evt) {
1019                 jMenuItem4ActionPerformed(evt);
1020             }
1021         });
1022         jMenu2.add(jMenuItem4);
1023
1024         jMenuBar1.add(jMenu2);
1025
1026         jMenu8.setMnemonic('M');
1027         jMenu8.setText("ログ管理(M)");
1028
1029         logSaveCheckItem.setSelected(true);
1030         logSaveCheckItem.setText("タイムラインをログとして保存する");
1031         logSaveCheckItem.addActionListener(new java.awt.event.ActionListener() {
1032             public void actionPerformed(java.awt.event.ActionEvent evt) {
1033                 logSaveCheckItemActionPerformed(evt);
1034             }
1035         });
1036         jMenu8.add(logSaveCheckItem);
1037
1038         jMenuItem32.setText("ログをCSV形式として保存");
1039         jMenuItem32.addActionListener(new java.awt.event.ActionListener() {
1040             public void actionPerformed(java.awt.event.ActionEvent evt) {
1041                 jMenuItem32ActionPerformed(evt);
1042             }
1043         });
1044         jMenu8.add(jMenuItem32);
1045
1046         jMenuBar1.add(jMenu8);
1047
1048         jMenu3.setMnemonic('H');
1049         jMenu3.setText("ヘルプ(H)");
1050
1051         jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0));
1052         jMenuItem3.setText("このプログラムについて");
1053         jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
1054             public void actionPerformed(java.awt.event.ActionEvent evt) {
1055                 jMenuItem3ActionPerformed(evt);
1056             }
1057         });
1058         jMenu3.add(jMenuItem3);
1059
1060         jMenuBar1.add(jMenu3);
1061
1062         setJMenuBar(jMenuBar1);
1063
1064         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
1065         getContentPane().setLayout(layout);
1066         layout.setHorizontalGroup(
1067             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1068             .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, 721, Short.MAX_VALUE)
1069             .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1070             .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 721, Short.MAX_VALUE)
1071             .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1072             .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 721, Short.MAX_VALUE)
1073         );
1074         layout.setVerticalGroup(
1075             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1076             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
1077                 .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 321, Short.MAX_VALUE)
1078                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1079                 .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1080                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1081                 .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
1082                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1083                 .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE)
1084                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1085                 .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
1086         );
1087
1088         pack();
1089     }// </editor-fold>//GEN-END:initComponents
1090
1091         private void jMenuItem31ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem31ActionPerformed
1092             mainAction.actionShowUserSearchDialog();
1093         }//GEN-LAST:event_jMenuItem31ActionPerformed
1094
1095         private void jMenuItem32ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem32ActionPerformed
1096             mainAction.actionShowOutputCSVLogDialog();
1097         }//GEN-LAST:event_jMenuItem32ActionPerformed
1098
1099         private void jMenuItem33ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem33ActionPerformed
1100             mainAction.actionConvertTweetBoxURLToBitly();
1101         }//GEN-LAST:event_jMenuItem33ActionPerformed
1102
1103         private void jMenuItem34ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem34ActionPerformed
1104             mainAction.actionShowFollowingFollowerDialog();
1105         }//GEN-LAST:event_jMenuItem34ActionPerformed
1106
1107         private void jMenuItem35ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem35ActionPerformed
1108             mainAction.actionOpenFollowing();
1109         }//GEN-LAST:event_jMenuItem35ActionPerformed
1110
1111         private void jMenuItem36ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem36ActionPerformed
1112             mainAction.actionOpenFollower();
1113         }//GEN-LAST:event_jMenuItem36ActionPerformed
1114
1115 private void logSaveCheckItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_logSaveCheckItemActionPerformed
1116     mainAction.setSaveLog(this.logSaveCheckItem.getState());
1117         try {
1118             mainAction.saveProperties();
1119         } catch (IOException ex) {
1120             Logger.getLogger(NishioTweetManager.class.getName()).log(Level.SEVERE, null, ex);
1121         }
1122 }//GEN-LAST:event_logSaveCheckItemActionPerformed
1123
1124         private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton4ActionPerformed
1125                 // メッセージをつぶやく
1126                 mainAction.actionTweet();
1127                 updateLen();
1128         }// GEN-LAST:event_jButton4ActionPerformed
1129
1130         private void tweetMessageBoxComponentResized(
1131                         java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_tweetMessageBoxComponentResized
1132         }// GEN-LAST:event_tweetMessageBoxComponentResized
1133
1134         private void jTextPaneKeyReleased(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_jTextPaneKeyReleased
1135                 // 残りつぶやける文字数情報を更新
1136                 mainAction.actionUpdateTweetMessageCount();
1137         }// GEN-LAST:event_jTextPaneKeyReleased
1138
1139         private void jTextPaneFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jTextPaneFocusGained
1140                 updateLen();
1141         }// GEN-LAST:event_jTextPaneFocusGained
1142
1143         private void jTextPaneFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jTextPaneFocusLost
1144                 updateLen();
1145         }// GEN-LAST:event_jTextPaneFocusLost
1146
1147         private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem1ActionPerformed
1148                 // 終了動作
1149                 mainAction.actionExitButton(evt);
1150         }// GEN-LAST:event_jMenuItem1ActionPerformed
1151
1152         private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem2ActionPerformed
1153                 // 基本設定ダイアログを開く
1154                 mainAction.actionBasicSettingDialog();
1155         }// GEN-LAST:event_jMenuItem2ActionPerformed
1156
1157         private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem3ActionPerformed
1158                 mainAction.actionShowAboutDialog();
1159         }// GEN-LAST:event_jMenuItem3ActionPerformed
1160
1161         private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem4ActionPerformed
1162                 mainAction.actionShowAccountDialog();
1163         }// GEN-LAST:event_jMenuItem4ActionPerformed
1164
1165         private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem5ActionPerformed
1166                 // 選択しているタブを削除
1167                 mainAction.actionRemoveFocusedTabbedTable();
1168         }// GEN-LAST:event_jMenuItem5ActionPerformed
1169
1170         private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem6ActionPerformed
1171                 this.mainAction.actionShowKeywordSearchDialog();
1172         }// GEN-LAST:event_jMenuItem6ActionPerformed
1173
1174         private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem7ActionPerformed
1175                 mainAction.actionUpdateButton(evt);
1176                 // いますぐ更新ボタンを押したので,更新タイムを一度リセットする
1177                 // mainAction.resetTweetAutoUpdate();
1178         }// GEN-LAST:event_jMenuItem7ActionPerformed
1179
1180         private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem8ActionPerformed
1181                 // tweet取得時間情報を更新
1182                 mainAction.actionRefreshTime();
1183         }// GEN-LAST:event_jMenuItem8ActionPerformed
1184
1185         private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem9ActionPerformed
1186                 mainAction.debug();
1187         }// GEN-LAST:event_jMenuItem9ActionPerformed
1188
1189         private void jTextPaneCaretUpdate(javax.swing.event.CaretEvent evt) {// GEN-FIRST:event_jTextPaneCaretUpdate
1190                 // TODO add your handling code here:
1191         }// GEN-LAST:event_jTextPaneCaretUpdate
1192
1193         private void statusBarPropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_statusBarPropertyChange
1194
1195         }// GEN-LAST:event_statusBarPropertyChange
1196
1197         private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem10ActionPerformed
1198                 // フォーカスのあるタブだけ更新
1199                 mainAction.actionFocusedTableUpdate();
1200         }// GEN-LAST:event_jMenuItem10ActionPerformed
1201
1202         private void jCheckBoxMenuItem1ActionPerformed(
1203                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem1ActionPerformed
1204                 // 詳細情報ボタンを押した時の動作
1205                 mainAction.actionDetailInfoButton(evt);
1206                 jCheckBoxMenuItem1.setSelected(mainAction.isDetailInfoPanelVisible());
1207                 jToggleButton1.setSelected(mainAction.isDetailInfoPanelVisible());
1208         }// GEN-LAST:event_jCheckBoxMenuItem1ActionPerformed
1209
1210         private void jCheckBoxMenuItem2ActionPerformed(
1211                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem2ActionPerformed
1212                 // 書き込みボタン表示
1213                 mainAction.actionShowTweetboxButton(evt);
1214                 this.invalidate();
1215                 this.validate();
1216
1217                 jCheckBoxMenuItem2.setSelected(mainAction.isShowTweetBoxVisible());
1218                 jToggleButton2.setSelected(mainAction.isShowTweetBoxVisible());
1219         }// GEN-LAST:event_jCheckBoxMenuItem2ActionPerformed
1220
1221         private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton1ActionPerformed
1222                 jMenuItem10ActionPerformed(evt);
1223         }// GEN-LAST:event_jButton1ActionPerformed
1224
1225         private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton2ActionPerformed
1226                 jMenuItem6ActionPerformed(evt);
1227         }// GEN-LAST:event_jButton2ActionPerformed
1228
1229         private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton1ActionPerformed
1230                 jCheckBoxMenuItem1ActionPerformed(evt);
1231         }// GEN-LAST:event_jToggleButton1ActionPerformed
1232
1233         private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton2ActionPerformed
1234                 jCheckBoxMenuItem2ActionPerformed(evt);
1235         }// GEN-LAST:event_jToggleButton2ActionPerformed
1236
1237         private void jCheckBoxMenuItem3ActionPerformed(
1238                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem3ActionPerformed
1239                 if (mainAction.isExistTimelineTab()) {
1240                         // タイムラインタブを削除
1241                         mainAction.actionRemoveTabbedTable(TimerID.createTimelineID());
1242                         jCheckBoxMenuItem3.setSelected(false);
1243                         jToggleButton3.setSelected(false);
1244                 } else {
1245                         // タイムラインタブを追加
1246                         mainAction.actionAddTimelineTab(mainAction.getGetTimelinePeriod());
1247                         jCheckBoxMenuItem3.setSelected(true);
1248                         jToggleButton3.setSelected(true);
1249                 }
1250         }// GEN-LAST:event_jCheckBoxMenuItem3ActionPerformed
1251
1252         private void jToggleButton3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton3ActionPerformed
1253                 jCheckBoxMenuItem3ActionPerformed(evt);
1254         }// GEN-LAST:event_jToggleButton3ActionPerformed
1255
1256         private void jTabbedPane1ComponentRemoved(java.awt.event.ContainerEvent evt) {// GEN-FIRST:event_jTabbedPane1ComponentRemoved
1257
1258         }// GEN-LAST:event_jTabbedPane1ComponentRemoved
1259
1260         private void jCheckBoxMenuItem4ActionPerformed(
1261                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem4ActionPerformed
1262                 if (mainAction.isExistMentionTab()) {
1263                         // mentionタブを削除
1264                         mainAction.actionRemoveTabbedTable(TimerID.createMentionID());
1265                         jCheckBoxMenuItem4.setSelected(false);
1266                         jToggleButton4.setSelected(false);
1267                 } else {
1268                         // mentionタブを追加
1269                         mainAction.actionAddMentionTab(mainAction.getGetMentionPeriod());
1270                         jCheckBoxMenuItem4.setSelected(true);
1271                         jToggleButton4.setSelected(true);
1272                 }
1273         }// GEN-LAST:event_jCheckBoxMenuItem4ActionPerformed
1274
1275         private void jCheckBoxMenuItem5ActionPerformed(
1276                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem5ActionPerformed
1277                 if (mainAction.isExistDirectMessageTab()) {
1278                         // dmタブを削除
1279                         mainAction.actionRemoveTabbedTable(TimerID.createDirectMessageID());
1280                         jCheckBoxMenuItem5.setSelected(false);
1281                         jToggleButton5.setSelected(false);
1282                 } else {
1283                         // dmタブを追加
1284                         mainAction.actionAddDirectMessageTab(mainAction
1285                                         .getGetDirectMessagePeriod());
1286                         jCheckBoxMenuItem5.setSelected(true);
1287                         jToggleButton5.setSelected(true);
1288                 }
1289         }// GEN-LAST:event_jCheckBoxMenuItem5ActionPerformed
1290
1291         private void jCheckBoxMenuItem6ActionPerformed(
1292                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem6ActionPerformed
1293                 if (mainAction.isExistSendDirectMessageTab()) {
1294                         // タイムラインタブを削除
1295                         mainAction.actionRemoveTabbedTable(TimerID
1296                                         .createSendDirectMessageID());
1297                         jCheckBoxMenuItem6.setSelected(false);
1298                         jToggleButton6.setSelected(false);
1299                 } else {
1300                         // タイムラインタブを追加
1301                         mainAction.actionAddSendDirectMessageTab(mainAction
1302                                         .getGetSendDirectMessagePeriod());
1303                         jCheckBoxMenuItem6.setSelected(true);
1304                         jToggleButton6.setSelected(true);
1305                 }
1306         }// GEN-LAST:event_jCheckBoxMenuItem6ActionPerformed
1307
1308         private void jToggleButton4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton4ActionPerformed
1309                 jCheckBoxMenuItem4ActionPerformed(evt);
1310         }// GEN-LAST:event_jToggleButton4ActionPerformed
1311
1312         private void jToggleButton5ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton5ActionPerformed
1313                 jCheckBoxMenuItem5ActionPerformed(evt);
1314         }// GEN-LAST:event_jToggleButton5ActionPerformed
1315
1316         private void jToggleButton6ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton6ActionPerformed
1317                 jCheckBoxMenuItem6ActionPerformed(evt);
1318         }// GEN-LAST:event_jToggleButton6ActionPerformed
1319
1320         private void jMenuItem11ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem11ActionPerformed
1321                 // reply
1322                 this.mainAction.actionSetReplyStatusToTweetBoxPane();
1323         }// GEN-LAST:event_jMenuItem11ActionPerformed
1324
1325         private void jMenuItem12ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem12ActionPerformed
1326                 // reply all
1327                 this.mainAction.actionSetReplyAllStatusToTweetBoxPane();
1328         }// GEN-LAST:event_jMenuItem12ActionPerformed
1329
1330         private void jMenuItem13ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem13ActionPerformed
1331                 // official rt
1332                 this.mainAction.actionRetweet();
1333         }// GEN-LAST:event_jMenuItem13ActionPerformed
1334
1335         private void jMenuItem15ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem15ActionPerformed
1336                 this.mainAction.actionCopySelectedStatusToTweetBoxPane();
1337         }// GEN-LAST:event_jMenuItem15ActionPerformed
1338
1339         private void jMenuItem14ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem14ActionPerformed
1340                 this.mainAction.actionSetQuoteStatusToTweetBoxPane();
1341         }// GEN-LAST:event_jMenuItem14ActionPerformed
1342
1343         private void jMenuItem16ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem16ActionPerformed
1344                 this.mainAction.actionShowDirectMessageDialog();
1345         }// GEN-LAST:event_jMenuItem16ActionPerformed
1346
1347         private void jMenuItem17ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem17ActionPerformed
1348                 this.mainAction.actionOpenStatusURL();
1349         }// GEN-LAST:event_jMenuItem17ActionPerformed
1350
1351         private void jMenuItem18ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem18ActionPerformed
1352                 this.mainAction.actionSelectedUserTimeline();
1353         }// GEN-LAST:event_jMenuItem18ActionPerformed
1354
1355         private void jMenuItem21ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem21ActionPerformed
1356                 this.mainAction.actionOpenUserURL();
1357         }// GEN-LAST:event_jMenuItem21ActionPerformed
1358
1359         private void jMenuItem22ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem22ActionPerformed
1360                 this.mainAction.actionOpenUserFav();
1361         }// GEN-LAST:event_jMenuItem22ActionPerformed
1362
1363         private void jMenuItem19ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem19ActionPerformed
1364                 this.mainAction.actionCreateFavorite();
1365         }// GEN-LAST:event_jMenuItem19ActionPerformed
1366
1367         private void jMenuItem20ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem20ActionPerformed
1368                 this.mainAction.actionDestroyFavorite();
1369         }// GEN-LAST:event_jMenuItem20ActionPerformed
1370
1371         private void jMenuItem23ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem23ActionPerformed
1372                 this.mainAction.actionShowHashtagSearchDialog();
1373         }// GEN-LAST:event_jMenuItem23ActionPerformed
1374
1375         private void jMenuItem25ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem25ActionPerformed
1376                 this.mainAction.actionShowUserListDialog(mainAction.getScreenName(),
1377                                 ListGetterSelection.CREATED);
1378         }// GEN-LAST:event_jMenuItem25ActionPerformed
1379
1380         private void jMenuItem24ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem24ActionPerformed
1381                 this.mainAction.actionShowUserListDialog(mainAction.getScreenName(),
1382                                 ListGetterSelection.SUBSCRIPTION);
1383         }// GEN-LAST:event_jMenuItem24ActionPerformed
1384
1385         private void jMenuItem26ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem26ActionPerformed
1386                 this.mainAction.actionShowUserListDialog(mainAction.getScreenName(),
1387                                 ListGetterSelection.MEMBERSHIPS);
1388         }// GEN-LAST:event_jMenuItem26ActionPerformed
1389
1390         private void jMenuItem27ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem27ActionPerformed
1391                 this.mainAction.actionShowSelectedUserList(ListGetterSelection.CREATED);
1392         }// GEN-LAST:event_jMenuItem27ActionPerformed
1393
1394         private void jMenuItem28ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem28ActionPerformed
1395                 this.mainAction
1396                                 .actionShowSelectedUserList(ListGetterSelection.SUBSCRIPTION);
1397         }// GEN-LAST:event_jMenuItem28ActionPerformed
1398
1399         private void jMenuItem29ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem29ActionPerformed
1400                 this.mainAction
1401                                 .actionShowSelectedUserList(ListGetterSelection.MEMBERSHIPS);
1402         }// GEN-LAST:event_jMenuItem29ActionPerformed
1403
1404         private void jMenuItem30ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem30ActionPerformed
1405                 this.mainAction.actionOpenFav();
1406         }// GEN-LAST:event_jMenuItem30ActionPerformed
1407
1408         /**
1409      *
1410      */
1411         private void updateLen() {
1412                 // 残りつぶやける文字数情報を更新
1413                 mainAction.actionUpdateTweetMessageCount();
1414         }
1415
1416         /**
1417          * @param args
1418          *            the command line arguments
1419          */
1420         public static void main(String args[]) {
1421                 java.awt.EventQueue.invokeLater(new Runnable() {
1422
1423                         @Override
1424                         public void run() {
1425                                 try {
1426                                         // UIをシステム標準のものとする
1427                                         UIManager.setLookAndFeel(UIManager
1428                                                         .getSystemLookAndFeelClassName());
1429
1430                                 } catch (Exception e) {
1431                                         e.printStackTrace();
1432                                 }
1433                                 new NishioTweetManager().setVisible(true);
1434                         }
1435                 });
1436         }
1437
1438         /**
1439          * Twitter初期化
1440          */
1441         private void init() {
1442                 // twitterログイン
1443                 boolean login = false;
1444                 try {
1445                     tweetManager = new TweetManager();
1446                     tweetManager.loginTwitter();
1447                     login = true;
1448                 } catch (Exception e) {
1449                         e.printStackTrace();
1450                 }
1451
1452                 // メインアクション初期化
1453                 mainAction = new TweetMainAction(this, tweetManager, statusBar,
1454                                 jTextPane, jPanel3, tweetLengthLabel, jPanel1, jTabbedPane1,
1455                                 tweetMessageBox, userImageLabel, userNameLabel,
1456                                 updateTimeLabel, followerLabel, followingLabel, locationLabel,
1457                                 clientNameLabel, updateLabel, userIntroBox, userWebBox,
1458                                 jToggleButton3, jToggleButton4, jToggleButton5, jToggleButton6,
1459                                 jCheckBoxMenuItem3, jCheckBoxMenuItem4, jCheckBoxMenuItem5,
1460                                 jCheckBoxMenuItem6, trayIcon);
1461                 // ハッシュタグ用のハイパーリンクリスナーにアクション登録
1462                 this.hashTagHyperlinkListener.setMainAction(mainAction);
1463                 // もしログインに失敗したら,アカウント設定画面を出す
1464                 if (login == false) {
1465                         mainAction.actionShowAccountDialog();
1466                 } else {
1467                         // TLなどを表示するタブを追加
1468                         // 自動更新も開始
1469                         //タブがひとつもないかどうか
1470                         boolean isNoTab = true;
1471                         // TL, Mention, DMのタブなどを表示するかしないかの設定を読み込んで反映するようにする
1472                         if( this.mainAction.isTempOpenedTimelineTab() ) {
1473                                 this.mainAction.actionAddTimelineTab(this.mainAction
1474                                                 .getGetTimelinePeriod());
1475                                 isNoTab = false;
1476                         }
1477                         if( this.mainAction.isTempOpenedMentionTab() ) {
1478                                 this.mainAction.actionAddMentionTab(this.mainAction
1479                                                 .getGetMentionPeriod());
1480                                 isNoTab = false;
1481                         }
1482                         if( this.mainAction.isTempOpenedDMTab() ) {
1483                                 this.mainAction.actionAddDirectMessageTab(this.mainAction
1484                                                 .getGetDirectMessagePeriod());
1485                                 isNoTab = false;
1486                         }
1487                         if( this.mainAction.isTempOpenedSendDMTab() ) {
1488                                 this.mainAction.actionAddSendDirectMessageTab(
1489                                  this.mainAction.getGetSendDirectMessagePeriod() );
1490                                 isNoTab = false;
1491                         }
1492
1493                         //タブがひとつもないとき
1494                         if( isNoTab == true ) {
1495                                 //Timelineタブを追加
1496                                 this.mainAction.actionAddTimelineTab(this.mainAction
1497                                                 .getGetTimelinePeriod());
1498                         }
1499                         // フォーカスを一番初めのテーブルに移す
1500                         this.mainAction.actionRequestFocusToTab(0);
1501                 }
1502                 try {
1503                     ClientVersionManager version = ClientVersionManager.getInstance();
1504                     VersionInfo latest = version.getLatestVersionInfo();
1505                     if( latest != null && !latest.getVersion().equals( version.getCurrentversion() )) {
1506                         if( this.mainAction.isUpdateNotify() ) {
1507                             //最新クライアント情報を通知するかどうか
1508                             this.mainAction.actionShowUpdateDialog();
1509                         }
1510                     }
1511                 }catch(Exception e) {
1512                     e.printStackTrace();
1513                 }
1514         }
1515
1516         /**
1517          * チェックボックスすべてのチェック状態を更新
1518          */
1519         public void updateSelectedInformation() {
1520                 // checkボタンの状態を設定
1521                 // 詳細情報
1522                 jCheckBoxMenuItem1.setSelected(mainAction.isDetailInfoPanelVisible());
1523                 jToggleButton1.setSelected(mainAction.isDetailInfoPanelVisible());
1524                 // 書き込みボタン
1525                 jCheckBoxMenuItem2.setSelected(mainAction.isShowTweetBoxVisible());
1526                 jToggleButton2.setSelected(mainAction.isShowTweetBoxVisible());
1527                 //log保存
1528                 logSaveCheckItem.setSelected(mainAction.isSaveLog());
1529                 // TL表示
1530                 mainAction.updateCheckboxInformation();
1531         }
1532
1533         // nishio tweet manager
1534         private JPopupMenu rightClickPopup = null;
1535         private TweetMainAction mainAction = null;
1536         // TweetManager
1537         private TweetManager tweetManager = null;
1538     // Variables declaration - do not modify//GEN-BEGIN:variables
1539     private javax.swing.JEditorPane clientNameLabel;
1540     private javax.swing.JLabel followerLabel;
1541     private javax.swing.JLabel followingLabel;
1542     private javax.swing.JButton jButton1;
1543     private javax.swing.JButton jButton2;
1544     private javax.swing.JButton jButton4;
1545     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1;
1546     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem2;
1547     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem3;
1548     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem4;
1549     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem5;
1550     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem6;
1551     private javax.swing.JLabel jLabel12;
1552     private javax.swing.JLabel jLabel13;
1553     private javax.swing.JLabel jLabel15;
1554     private javax.swing.JLabel jLabel3;
1555     private javax.swing.JLabel jLabel4;
1556     private javax.swing.JLabel jLabel5;
1557     private javax.swing.JLabel jLabel9;
1558     private javax.swing.JMenu jMenu1;
1559     private javax.swing.JMenu jMenu2;
1560     private javax.swing.JMenu jMenu3;
1561     private javax.swing.JMenu jMenu4;
1562     private javax.swing.JMenu jMenu5;
1563     private javax.swing.JMenu jMenu6;
1564     private javax.swing.JMenu jMenu7;
1565     private javax.swing.JMenu jMenu8;
1566     private javax.swing.JMenuBar jMenuBar1;
1567     private javax.swing.JMenuItem jMenuItem1;
1568     private javax.swing.JMenuItem jMenuItem10;
1569     private javax.swing.JMenuItem jMenuItem11;
1570     private javax.swing.JMenuItem jMenuItem12;
1571     private javax.swing.JMenuItem jMenuItem13;
1572     private javax.swing.JMenuItem jMenuItem14;
1573     private javax.swing.JMenuItem jMenuItem15;
1574     private javax.swing.JMenuItem jMenuItem16;
1575     private javax.swing.JMenuItem jMenuItem17;
1576     private javax.swing.JMenuItem jMenuItem18;
1577     private javax.swing.JMenuItem jMenuItem19;
1578     private javax.swing.JMenuItem jMenuItem2;
1579     private javax.swing.JMenuItem jMenuItem20;
1580     private javax.swing.JMenuItem jMenuItem21;
1581     private javax.swing.JMenuItem jMenuItem22;
1582     private javax.swing.JMenuItem jMenuItem23;
1583     private javax.swing.JMenuItem jMenuItem24;
1584     private javax.swing.JMenuItem jMenuItem25;
1585     private javax.swing.JMenuItem jMenuItem26;
1586     private javax.swing.JMenuItem jMenuItem27;
1587     private javax.swing.JMenuItem jMenuItem28;
1588     private javax.swing.JMenuItem jMenuItem29;
1589     private javax.swing.JMenuItem jMenuItem3;
1590     private javax.swing.JMenuItem jMenuItem30;
1591     private javax.swing.JMenuItem jMenuItem31;
1592     private javax.swing.JMenuItem jMenuItem32;
1593     private javax.swing.JMenuItem jMenuItem33;
1594     private javax.swing.JMenuItem jMenuItem34;
1595     private javax.swing.JMenuItem jMenuItem35;
1596     private javax.swing.JMenuItem jMenuItem36;
1597     private javax.swing.JMenuItem jMenuItem4;
1598     private javax.swing.JMenuItem jMenuItem5;
1599     private javax.swing.JMenuItem jMenuItem6;
1600     private javax.swing.JMenuItem jMenuItem7;
1601     private javax.swing.JMenuItem jMenuItem8;
1602     private javax.swing.JMenuItem jMenuItem9;
1603     private javax.swing.JPanel jPanel1;
1604     private javax.swing.JPanel jPanel2;
1605     private javax.swing.JPanel jPanel3;
1606     private javax.swing.JScrollPane jScrollPane5;
1607     private javax.swing.JScrollPane jScrollPane6;
1608     private javax.swing.JScrollPane jScrollPane7;
1609     private javax.swing.JScrollPane jScrollPane8;
1610     private javax.swing.JScrollPane jScrollPane9;
1611     private javax.swing.JToolBar.Separator jSeparator1;
1612     private javax.swing.JToolBar.Separator jSeparator2;
1613     private javax.swing.JToolBar.Separator jSeparator3;
1614     private javax.swing.JPopupMenu.Separator jSeparator4;
1615     private javax.swing.JPopupMenu.Separator jSeparator5;
1616     private javax.swing.JPopupMenu.Separator jSeparator6;
1617     private javax.swing.JPopupMenu.Separator jSeparator7;
1618     private javax.swing.JTabbedPane jTabbedPane1;
1619     private javax.swing.JTextPane jTextPane;
1620     private javax.swing.JToggleButton jToggleButton1;
1621     private javax.swing.JToggleButton jToggleButton2;
1622     private javax.swing.JToggleButton jToggleButton3;
1623     private javax.swing.JToggleButton jToggleButton4;
1624     private javax.swing.JToggleButton jToggleButton5;
1625     private javax.swing.JToggleButton jToggleButton6;
1626     private javax.swing.JToolBar jToolBar1;
1627     private javax.swing.JLabel locationLabel;
1628     private javax.swing.JCheckBoxMenuItem logSaveCheckItem;
1629     private javax.swing.JLabel statusBar;
1630     private javax.swing.JLabel tweetLengthLabel;
1631     private javax.swing.JEditorPane tweetMessageBox;
1632     private javax.swing.JLabel updateLabel;
1633     private javax.swing.JLabel updateTimeLabel;
1634     private javax.swing.JLabel userImageLabel;
1635     private javax.swing.JEditorPane userIntroBox;
1636     private javax.swing.JLabel userNameLabel;
1637     private javax.swing.JEditorPane userWebBox;
1638     // End of variables declaration//GEN-END:variables
1639 }