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