OSDN Git Service

version0.6.2に変更
[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.PREFERRED_SIZE, 553, javax.swing.GroupLayout.PREFERRED_SIZE)
443                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
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.setFloatable(false);
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, 127, javax.swing.GroupLayout.PREFERRED_SIZE))
598         );
599         jPanel3Layout.setVerticalGroup(
600             jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
601             .addGroup(jPanel3Layout.createSequentialGroup()
602                 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
603                     .addComponent(jButton4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE)
604                     .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel3Layout.createSequentialGroup()
605                         .addComponent(jLabel15)
606                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
607                         .addComponent(tweetLengthLabel)))
608                 .addGap(38, 38, 38))
609             .addGroup(jPanel3Layout.createSequentialGroup()
610                 .addComponent(jScrollPane9, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
611                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
612         );
613
614         userImageLabel.setBackground(java.awt.Color.black);
615         userImageLabel.setOpaque(true);
616
617         jScrollPane5.setHorizontalScrollBar(null);
618
619         tweetMessageBox.setContentType("text/html");
620         tweetMessageBox.setEditable(false);
621         tweetMessageBox.addComponentListener(new java.awt.event.ComponentAdapter() {
622             public void componentResized(java.awt.event.ComponentEvent evt) {
623                 tweetMessageBoxComponentResized(evt);
624             }
625         });
626         tweetMessageBox.addHyperlinkListener(hashTagHyperlinkListener);
627         jScrollPane5.setViewportView(tweetMessageBox);
628
629         javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
630         jPanel4.setLayout(jPanel4Layout);
631         jPanel4Layout.setHorizontalGroup(
632             jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
633             .addGroup(jPanel4Layout.createSequentialGroup()
634                 .addComponent(userImageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
635                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
636                 .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 667, Short.MAX_VALUE))
637         );
638         jPanel4Layout.setVerticalGroup(
639             jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
640             .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 58, Short.MAX_VALUE)
641             .addComponent(userImageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
642         );
643
644         jMenu1.setMnemonic('F');
645         /*
646         org.openide.awt.Mnemonics.setLocalizedText(jMenu1, "ファイル(F)");
647         */
648         jMenu1.setText("ファイル(F)");
649
650         jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
651         jMenuItem1.setMnemonic('X');
652         jMenuItem1.setText("終了(X)");
653         jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
654             public void actionPerformed(java.awt.event.ActionEvent evt) {
655                 jMenuItem1ActionPerformed(evt);
656             }
657         });
658         jMenu1.add(jMenuItem1);
659
660         jMenuBar1.add(jMenu1);
661
662         jMenu6.setMnemonic('O');
663         jMenu6.setText("操作(O)");
664
665         jMenuItem10.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, 0));
666         jMenuItem10.setMnemonic('U');
667         jMenuItem10.setText("今すぐ更新(U)");
668         jMenuItem10.addActionListener(new java.awt.event.ActionListener() {
669             public void actionPerformed(java.awt.event.ActionEvent evt) {
670                 jMenuItem10ActionPerformed(evt);
671             }
672         });
673         jMenu6.add(jMenuItem10);
674
675         jMenuItem7.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, java.awt.event.InputEvent.CTRL_MASK));
676         jMenuItem7.setMnemonic('A');
677         jMenuItem7.setText("すべての情報を今すぐ更新(A)");
678         jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
679             public void actionPerformed(java.awt.event.ActionEvent evt) {
680                 jMenuItem7ActionPerformed(evt);
681             }
682         });
683         jMenu6.add(jMenuItem7);
684
685         jMenuItem8.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, java.awt.event.InputEvent.ALT_MASK));
686         jMenuItem8.setMnemonic('I');
687         jMenuItem8.setText("時間情報を更新(I)");
688         jMenuItem8.addActionListener(new java.awt.event.ActionListener() {
689             public void actionPerformed(java.awt.event.ActionEvent evt) {
690                 jMenuItem8ActionPerformed(evt);
691             }
692         });
693         jMenu6.add(jMenuItem8);
694         jMenu6.add(jSeparator4);
695
696         jMenuItem11.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK));
697         jMenuItem11.setMnemonic('R');
698         jMenuItem11.setText("発言に返信(Reply)");
699         jMenuItem11.addActionListener(new java.awt.event.ActionListener() {
700             public void actionPerformed(java.awt.event.ActionEvent evt) {
701                 jMenuItem11ActionPerformed(evt);
702             }
703         });
704         jMenu6.add(jMenuItem11);
705
706         jMenuItem12.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
707         jMenuItem12.setMnemonic('A');
708         jMenuItem12.setText("発言に返信(Reply All)");
709         jMenuItem12.addActionListener(new java.awt.event.ActionListener() {
710             public void actionPerformed(java.awt.event.ActionEvent evt) {
711                 jMenuItem12ActionPerformed(evt);
712             }
713         });
714         jMenu6.add(jMenuItem12);
715
716         jMenuItem13.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.CTRL_MASK));
717         jMenuItem13.setMnemonic('T');
718         jMenuItem13.setText("発言を公式リツイート(RT)");
719         jMenuItem13.addActionListener(new java.awt.event.ActionListener() {
720             public void actionPerformed(java.awt.event.ActionEvent evt) {
721                 jMenuItem13ActionPerformed(evt);
722             }
723         });
724         jMenu6.add(jMenuItem13);
725
726         jMenuItem15.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
727         jMenuItem15.setText("発言をコメント付リツイート(非公式RT)");
728         jMenuItem15.addActionListener(new java.awt.event.ActionListener() {
729             public void actionPerformed(java.awt.event.ActionEvent evt) {
730                 jMenuItem15ActionPerformed(evt);
731             }
732         });
733         jMenu6.add(jMenuItem15);
734
735         jMenuItem14.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
736         jMenuItem14.setMnemonic('Q');
737         jMenuItem14.setText("発言を引用ツイート(QT)");
738         jMenuItem14.addActionListener(new java.awt.event.ActionListener() {
739             public void actionPerformed(java.awt.event.ActionEvent evt) {
740                 jMenuItem14ActionPerformed(evt);
741             }
742         });
743         jMenu6.add(jMenuItem14);
744
745         jMenuItem16.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.CTRL_MASK));
746         jMenuItem16.setMnemonic('D');
747         jMenuItem16.setText("ダイレクトメッセージを送信(D)");
748         jMenuItem16.addActionListener(new java.awt.event.ActionListener() {
749             public void actionPerformed(java.awt.event.ActionEvent evt) {
750                 jMenuItem16ActionPerformed(evt);
751             }
752         });
753         jMenu6.add(jMenuItem16);
754         jMenu6.add(jSeparator5);
755
756         jMenuItem17.setText("選択した発言をブラウザで開く");
757         jMenuItem17.addActionListener(new java.awt.event.ActionListener() {
758             public void actionPerformed(java.awt.event.ActionEvent evt) {
759                 jMenuItem17ActionPerformed(evt);
760             }
761         });
762         jMenu6.add(jMenuItem17);
763
764         jMenuItem18.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
765         jMenuItem18.setMnemonic('S');
766         jMenuItem18.setText("選択したユーザの発言を別タブで開く(S)");
767         jMenuItem18.addActionListener(new java.awt.event.ActionListener() {
768             public void actionPerformed(java.awt.event.ActionEvent evt) {
769                 jMenuItem18ActionPerformed(evt);
770             }
771         });
772         jMenu6.add(jMenuItem18);
773
774         jMenuItem21.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, java.awt.event.InputEvent.CTRL_MASK));
775         jMenuItem21.setMnemonic('B');
776         jMenuItem21.setText("選択したユーザの発言をブラウザで開く(B)");
777         jMenuItem21.addActionListener(new java.awt.event.ActionListener() {
778             public void actionPerformed(java.awt.event.ActionEvent evt) {
779                 jMenuItem21ActionPerformed(evt);
780             }
781         });
782         jMenu6.add(jMenuItem21);
783
784         jMenuItem35.setText("選択したユーザがフォローしているユーザ一覧を開く");
785         jMenuItem35.addActionListener(new java.awt.event.ActionListener() {
786             public void actionPerformed(java.awt.event.ActionEvent evt) {
787                 jMenuItem35ActionPerformed(evt);
788             }
789         });
790         jMenu6.add(jMenuItem35);
791
792         jMenuItem36.setText("選択したユーザがフォローされているユーザ一覧を開く");
793         jMenuItem36.addActionListener(new java.awt.event.ActionListener() {
794             public void actionPerformed(java.awt.event.ActionEvent evt) {
795                 jMenuItem36ActionPerformed(evt);
796             }
797         });
798         jMenu6.add(jMenuItem36);
799         jMenu6.add(jSeparator6);
800
801         jMenuItem30.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
802         jMenuItem30.setText("自分のお気に入りを開く");
803         jMenuItem30.addActionListener(new java.awt.event.ActionListener() {
804             public void actionPerformed(java.awt.event.ActionEvent evt) {
805                 jMenuItem30ActionPerformed(evt);
806             }
807         });
808         jMenu6.add(jMenuItem30);
809
810         jMenuItem22.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.ALT_MASK));
811         jMenuItem22.setText("選択したユーザのお気に入りを開く");
812         jMenuItem22.addActionListener(new java.awt.event.ActionListener() {
813             public void actionPerformed(java.awt.event.ActionEvent evt) {
814                 jMenuItem22ActionPerformed(evt);
815             }
816         });
817         jMenu6.add(jMenuItem22);
818
819         jMenuItem19.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
820         jMenuItem19.setMnemonic('F');
821         jMenuItem19.setText("選択した発言をお気に入りに追加(F)");
822         jMenuItem19.addActionListener(new java.awt.event.ActionListener() {
823             public void actionPerformed(java.awt.event.ActionEvent evt) {
824                 jMenuItem19ActionPerformed(evt);
825             }
826         });
827         jMenu6.add(jMenuItem19);
828
829         jMenuItem20.setText("選択した発言をお気に入りから削除");
830         jMenuItem20.addActionListener(new java.awt.event.ActionListener() {
831             public void actionPerformed(java.awt.event.ActionEvent evt) {
832                 jMenuItem20ActionPerformed(evt);
833             }
834         });
835         jMenu6.add(jMenuItem20);
836
837         jMenuItem33.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
838         jMenuItem33.setMnemonic('C');
839         jMenuItem33.setText("つぶやき内のURLをbit.ly短縮URLに変換(C)");
840         jMenuItem33.addActionListener(new java.awt.event.ActionListener() {
841             public void actionPerformed(java.awt.event.ActionEvent evt) {
842                 jMenuItem33ActionPerformed(evt);
843             }
844         });
845         jMenu6.add(jMenuItem33);
846
847         jMenuBar1.add(jMenu6);
848
849         jMenu4.setMnemonic('V');
850         jMenu4.setText("表示(V)");
851
852         jMenuItem5.setMnemonic('D');
853         jMenuItem5.setText("選択しているタブを削除(D)");
854         jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
855             public void actionPerformed(java.awt.event.ActionEvent evt) {
856                 jMenuItem5ActionPerformed(evt);
857             }
858         });
859         jMenu4.add(jMenuItem5);
860
861         jCheckBoxMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, java.awt.event.InputEvent.CTRL_MASK));
862         jCheckBoxMenuItem1.setMnemonic('I');
863         jCheckBoxMenuItem1.setSelected(true);
864         jCheckBoxMenuItem1.setText("詳細情報ボタンの表示(I)");
865         jCheckBoxMenuItem1.addActionListener(new java.awt.event.ActionListener() {
866             public void actionPerformed(java.awt.event.ActionEvent evt) {
867                 jCheckBoxMenuItem1ActionPerformed(evt);
868             }
869         });
870         jMenu4.add(jCheckBoxMenuItem1);
871
872         jCheckBoxMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W, java.awt.event.InputEvent.CTRL_MASK));
873         jCheckBoxMenuItem2.setMnemonic('W');
874         jCheckBoxMenuItem2.setSelected(true);
875         jCheckBoxMenuItem2.setText("書き込みボタンの表示(W)");
876         jCheckBoxMenuItem2.addActionListener(new java.awt.event.ActionListener() {
877             public void actionPerformed(java.awt.event.ActionEvent evt) {
878                 jCheckBoxMenuItem2ActionPerformed(evt);
879             }
880         });
881         jMenu4.add(jCheckBoxMenuItem2);
882
883         jCheckBoxMenuItem3.setSelected(true);
884         jCheckBoxMenuItem3.setText("Timelineタブを表示");
885         jCheckBoxMenuItem3.addActionListener(new java.awt.event.ActionListener() {
886             public void actionPerformed(java.awt.event.ActionEvent evt) {
887                 jCheckBoxMenuItem3ActionPerformed(evt);
888             }
889         });
890         jMenu4.add(jCheckBoxMenuItem3);
891
892         jCheckBoxMenuItem4.setSelected(true);
893         jCheckBoxMenuItem4.setText("Mentionタブを表示");
894         jCheckBoxMenuItem4.addActionListener(new java.awt.event.ActionListener() {
895             public void actionPerformed(java.awt.event.ActionEvent evt) {
896                 jCheckBoxMenuItem4ActionPerformed(evt);
897             }
898         });
899         jMenu4.add(jCheckBoxMenuItem4);
900
901         jCheckBoxMenuItem5.setSelected(true);
902         jCheckBoxMenuItem5.setText("ダイレクトメッセージタブを表示");
903         jCheckBoxMenuItem5.addActionListener(new java.awt.event.ActionListener() {
904             public void actionPerformed(java.awt.event.ActionEvent evt) {
905                 jCheckBoxMenuItem5ActionPerformed(evt);
906             }
907         });
908         jMenu4.add(jCheckBoxMenuItem5);
909
910         jCheckBoxMenuItem6.setSelected(true);
911         jCheckBoxMenuItem6.setText("送信済みメッセージタブの表示");
912         jCheckBoxMenuItem6.addActionListener(new java.awt.event.ActionListener() {
913             public void actionPerformed(java.awt.event.ActionEvent evt) {
914                 jCheckBoxMenuItem6ActionPerformed(evt);
915             }
916         });
917         jMenu4.add(jCheckBoxMenuItem6);
918
919         jMenuItem9.setText("Debug");
920         jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
921             public void actionPerformed(java.awt.event.ActionEvent evt) {
922                 jMenuItem9ActionPerformed(evt);
923             }
924         });
925         jMenu4.add(jMenuItem9);
926
927         jMenuBar1.add(jMenu4);
928
929         jMenu5.setMnemonic('S');
930         jMenu5.setText("検索(S)");
931
932         jMenuItem6.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK));
933         jMenuItem6.setMnemonic('A');
934         jMenuItem6.setText("キーワードでTwitter全体を検索(A)");
935         jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
936             public void actionPerformed(java.awt.event.ActionEvent evt) {
937                 jMenuItem6ActionPerformed(evt);
938             }
939         });
940         jMenu5.add(jMenuItem6);
941
942         jMenuItem23.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_H, java.awt.event.InputEvent.CTRL_MASK));
943         jMenuItem23.setMnemonic('K');
944         jMenuItem23.setText("キーワードに関連するハッシュタグを検索(K)");
945         jMenuItem23.addActionListener(new java.awt.event.ActionListener() {
946             public void actionPerformed(java.awt.event.ActionEvent evt) {
947                 jMenuItem23ActionPerformed(evt);
948             }
949         });
950         jMenu5.add(jMenuItem23);
951
952         jMenuItem31.setMnemonic('U');
953         jMenuItem31.setText("指定したユーザを検索(U)");
954         jMenuItem31.addActionListener(new java.awt.event.ActionListener() {
955             public void actionPerformed(java.awt.event.ActionEvent evt) {
956                 jMenuItem31ActionPerformed(evt);
957             }
958         });
959         jMenu5.add(jMenuItem31);
960
961         jMenuItem34.setText("指定したユーザのFollowing/Followerを表示");
962         jMenuItem34.addActionListener(new java.awt.event.ActionListener() {
963             public void actionPerformed(java.awt.event.ActionEvent evt) {
964                 jMenuItem34ActionPerformed(evt);
965             }
966         });
967         jMenu5.add(jMenuItem34);
968
969         jMenuBar1.add(jMenu5);
970
971         jMenu7.setMnemonic('L');
972         jMenu7.setText("リスト(L)");
973
974         jMenuItem25.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.CTRL_MASK));
975         jMenuItem25.setMnemonic('C');
976         jMenuItem25.setText("自分が作成したリスト一覧(C)");
977         jMenuItem25.addActionListener(new java.awt.event.ActionListener() {
978             public void actionPerformed(java.awt.event.ActionEvent evt) {
979                 jMenuItem25ActionPerformed(evt);
980             }
981         });
982         jMenu7.add(jMenuItem25);
983
984         jMenuItem24.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.ALT_MASK));
985         jMenuItem24.setMnemonic('S');
986         jMenuItem24.setText("購読しているリスト一覧(S)");
987         jMenuItem24.addActionListener(new java.awt.event.ActionListener() {
988             public void actionPerformed(java.awt.event.ActionEvent evt) {
989                 jMenuItem24ActionPerformed(evt);
990             }
991         });
992         jMenu7.add(jMenuItem24);
993
994         jMenuItem26.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
995         jMenuItem26.setMnemonic('F');
996         jMenuItem26.setText("自分がフォローされているリスト一覧(F)");
997         jMenuItem26.addActionListener(new java.awt.event.ActionListener() {
998             public void actionPerformed(java.awt.event.ActionEvent evt) {
999                 jMenuItem26ActionPerformed(evt);
1000             }
1001         });
1002         jMenu7.add(jMenuItem26);
1003         jMenu7.add(jSeparator7);
1004
1005         jMenuItem27.setText("選択したユーザが作成したリスト一覧");
1006         jMenuItem27.addActionListener(new java.awt.event.ActionListener() {
1007             public void actionPerformed(java.awt.event.ActionEvent evt) {
1008                 jMenuItem27ActionPerformed(evt);
1009             }
1010         });
1011         jMenu7.add(jMenuItem27);
1012
1013         jMenuItem28.setText("選択したユーザが購読しているリスト一覧");
1014         jMenuItem28.addActionListener(new java.awt.event.ActionListener() {
1015             public void actionPerformed(java.awt.event.ActionEvent evt) {
1016                 jMenuItem28ActionPerformed(evt);
1017             }
1018         });
1019         jMenu7.add(jMenuItem28);
1020
1021         jMenuItem29.setText("選択したユーザがフォローされているリスト一覧");
1022         jMenuItem29.addActionListener(new java.awt.event.ActionListener() {
1023             public void actionPerformed(java.awt.event.ActionEvent evt) {
1024                 jMenuItem29ActionPerformed(evt);
1025             }
1026         });
1027         jMenu7.add(jMenuItem29);
1028
1029         jMenuBar1.add(jMenu7);
1030
1031         jMenu2.setMnemonic('O');
1032         jMenu2.setText("設定(O)");
1033
1034         jMenuItem2.setText("基本設定");
1035         jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
1036             public void actionPerformed(java.awt.event.ActionEvent evt) {
1037                 jMenuItem2ActionPerformed(evt);
1038             }
1039         });
1040         jMenu2.add(jMenuItem2);
1041
1042         jMenuItem4.setText("アカウント設定");
1043         jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
1044             public void actionPerformed(java.awt.event.ActionEvent evt) {
1045                 jMenuItem4ActionPerformed(evt);
1046             }
1047         });
1048         jMenu2.add(jMenuItem4);
1049
1050         jMenuBar1.add(jMenu2);
1051
1052         jMenu8.setMnemonic('M');
1053         jMenu8.setText("ログ管理(M)");
1054
1055         logSaveCheckItem.setSelected(true);
1056         logSaveCheckItem.setText("タイムラインをログとして保存する");
1057         logSaveCheckItem.addActionListener(new java.awt.event.ActionListener() {
1058             public void actionPerformed(java.awt.event.ActionEvent evt) {
1059                 logSaveCheckItemActionPerformed(evt);
1060             }
1061         });
1062         jMenu8.add(logSaveCheckItem);
1063
1064         jMenuItem32.setText("ログをCSV形式として保存");
1065         jMenuItem32.addActionListener(new java.awt.event.ActionListener() {
1066             public void actionPerformed(java.awt.event.ActionEvent evt) {
1067                 jMenuItem32ActionPerformed(evt);
1068             }
1069         });
1070         jMenu8.add(jMenuItem32);
1071
1072         jMenuBar1.add(jMenu8);
1073
1074         jMenu9.setText("ストリーミング");
1075
1076         isUsingStreamingMenuItem.setSelected(true);
1077         isUsingStreamingMenuItem.setText("ストリーミングAPIを利用する");
1078         isUsingStreamingMenuItem.addActionListener(new java.awt.event.ActionListener() {
1079             public void actionPerformed(java.awt.event.ActionEvent evt) {
1080                 isUsingStreamingMenuItemActionPerformed(evt);
1081             }
1082         });
1083         jMenu9.add(isUsingStreamingMenuItem);
1084
1085         jMenuBar1.add(jMenu9);
1086
1087         jMenu3.setMnemonic('H');
1088         jMenu3.setText("ヘルプ(H)");
1089
1090         jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0));
1091         jMenuItem3.setText("このプログラムについて");
1092         jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
1093             public void actionPerformed(java.awt.event.ActionEvent evt) {
1094                 jMenuItem3ActionPerformed(evt);
1095             }
1096         });
1097         jMenu3.add(jMenuItem3);
1098
1099         jMenuBar1.add(jMenu3);
1100
1101         setJMenuBar(jMenuBar1);
1102
1103         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
1104         getContentPane().setLayout(layout);
1105         layout.setHorizontalGroup(
1106             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1107             .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 720, Short.MAX_VALUE)
1108             .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1109             .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1110             .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 720, Short.MAX_VALUE)
1111             .addComponent(jPanel4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1112             .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1113         );
1114         layout.setVerticalGroup(
1115             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1116             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
1117                 .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 434, Short.MAX_VALUE)
1118                 .addGap(1, 1, 1)
1119                 .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1120                 .addGap(2, 2, 2)
1121                 .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)
1122                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1123                 .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
1124                 .addGap(1, 1, 1)
1125                 .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
1126                 .addGap(1, 1, 1)
1127                 .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
1128         );
1129
1130         pack();
1131     }// </editor-fold>//GEN-END:initComponents
1132
1133         private void jMenuItem31ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem31ActionPerformed
1134             mainAction.actionShowUserSearchDialog();
1135         }//GEN-LAST:event_jMenuItem31ActionPerformed
1136
1137         private void jMenuItem32ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem32ActionPerformed
1138             mainAction.actionShowOutputCSVLogDialog();
1139         }//GEN-LAST:event_jMenuItem32ActionPerformed
1140
1141         private void jMenuItem33ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem33ActionPerformed
1142             mainAction.actionConvertTweetBoxURLToBitly();
1143         }//GEN-LAST:event_jMenuItem33ActionPerformed
1144
1145         private void jMenuItem34ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem34ActionPerformed
1146             mainAction.actionShowFollowingFollowerDialog();
1147         }//GEN-LAST:event_jMenuItem34ActionPerformed
1148
1149         private void jMenuItem35ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem35ActionPerformed
1150             mainAction.actionOpenFollowing();
1151         }//GEN-LAST:event_jMenuItem35ActionPerformed
1152
1153         private void jMenuItem36ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem36ActionPerformed
1154             mainAction.actionOpenFollower();
1155         }//GEN-LAST:event_jMenuItem36ActionPerformed
1156
1157     private void logSaveCheckItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_logSaveCheckItemActionPerformed
1158         mainAction.setSaveLog(this.logSaveCheckItem.getState());
1159         try {
1160             mainAction.saveProperties();
1161         } catch (IOException ex) {
1162             Logger.getLogger(NishioTweetManager.class.getName()).log(Level.SEVERE, null, ex);
1163         }
1164     }//GEN-LAST:event_logSaveCheckItemActionPerformed
1165
1166     private void isUsingStreamingMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_isUsingStreamingMenuItemActionPerformed
1167         if( mainAction.isUsingStreaming() ) {
1168             mainAction.stopStreaming();
1169         }else {
1170             mainAction.startStreaming();
1171         }
1172     }//GEN-LAST:event_isUsingStreamingMenuItemActionPerformed
1173
1174     private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton4ActionPerformed
1175         // メッセージをつぶやく
1176         mainAction.actionTweet();
1177         updateLen();
1178     }// GEN-LAST:event_jButton4ActionPerformed
1179
1180     private void tweetMessageBoxComponentResized(
1181                                                  java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_tweetMessageBoxComponentResized
1182     }// GEN-LAST:event_tweetMessageBoxComponentResized
1183
1184     private void jTextPaneKeyReleased(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_jTextPaneKeyReleased
1185         // 残りつぶやける文字数情報を更新
1186         mainAction.actionUpdateTweetMessageCount();
1187     }// GEN-LAST:event_jTextPaneKeyReleased
1188
1189     private void jTextPaneFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jTextPaneFocusGained
1190         updateLen();
1191     }// GEN-LAST:event_jTextPaneFocusGained
1192
1193     private void jTextPaneFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_jTextPaneFocusLost
1194         updateLen();
1195     }// GEN-LAST:event_jTextPaneFocusLost
1196
1197         private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem1ActionPerformed
1198                 // 終了動作
1199                 mainAction.actionExitButton(evt);
1200         }// GEN-LAST:event_jMenuItem1ActionPerformed
1201
1202         private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem2ActionPerformed
1203                 // 基本設定ダイアログを開く
1204                 mainAction.actionBasicSettingDialog();
1205         }// GEN-LAST:event_jMenuItem2ActionPerformed
1206
1207         private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem3ActionPerformed
1208                 mainAction.actionShowAboutDialog();
1209         }// GEN-LAST:event_jMenuItem3ActionPerformed
1210
1211         private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem4ActionPerformed
1212                 mainAction.actionShowAccountDialog();
1213         }// GEN-LAST:event_jMenuItem4ActionPerformed
1214
1215         private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem5ActionPerformed
1216                 // 選択しているタブを削除
1217                 mainAction.actionRemoveFocusedTabbedTable();
1218         }// GEN-LAST:event_jMenuItem5ActionPerformed
1219
1220         private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem6ActionPerformed
1221                 this.mainAction.actionShowKeywordSearchDialog();
1222         }// GEN-LAST:event_jMenuItem6ActionPerformed
1223
1224         private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem7ActionPerformed
1225                 mainAction.actionUpdateButton(evt);
1226                 // いますぐ更新ボタンを押したので,更新タイムを一度リセットする
1227                 // mainAction.resetTweetAutoUpdate();
1228         }// GEN-LAST:event_jMenuItem7ActionPerformed
1229
1230         private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem8ActionPerformed
1231                 // tweet取得時間情報を更新
1232                 mainAction.actionRefreshTime();
1233         }// GEN-LAST:event_jMenuItem8ActionPerformed
1234
1235         private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem9ActionPerformed
1236                 mainAction.debug();
1237         }// GEN-LAST:event_jMenuItem9ActionPerformed
1238
1239         private void jTextPaneCaretUpdate(javax.swing.event.CaretEvent evt) {// GEN-FIRST:event_jTextPaneCaretUpdate
1240                 // TODO add your handling code here:
1241         }// GEN-LAST:event_jTextPaneCaretUpdate
1242
1243         private void statusBarPropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_statusBarPropertyChange
1244
1245         }// GEN-LAST:event_statusBarPropertyChange
1246
1247         private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem10ActionPerformed
1248                 // フォーカスのあるタブだけ更新
1249                 mainAction.actionFocusedTableUpdate();
1250         }// GEN-LAST:event_jMenuItem10ActionPerformed
1251
1252         private void jCheckBoxMenuItem1ActionPerformed(
1253                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem1ActionPerformed
1254                 // 詳細情報ボタンを押した時の動作
1255                 mainAction.actionDetailInfoButton(evt);
1256                 jCheckBoxMenuItem1.setSelected(mainAction.isDetailInfoPanelVisible());
1257                 jToggleButton1.setSelected(mainAction.isDetailInfoPanelVisible());
1258         }// GEN-LAST:event_jCheckBoxMenuItem1ActionPerformed
1259
1260         private void jCheckBoxMenuItem2ActionPerformed(
1261                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem2ActionPerformed
1262                 // 書き込みボタン表示
1263                 mainAction.actionShowTweetboxButton(evt);
1264                 this.invalidate();
1265                 this.validate();
1266
1267                 jCheckBoxMenuItem2.setSelected(mainAction.isShowTweetBoxVisible());
1268                 jToggleButton2.setSelected(mainAction.isShowTweetBoxVisible());
1269         }// GEN-LAST:event_jCheckBoxMenuItem2ActionPerformed
1270
1271         private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton1ActionPerformed
1272                 jMenuItem10ActionPerformed(evt);
1273         }// GEN-LAST:event_jButton1ActionPerformed
1274
1275         private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton2ActionPerformed
1276                 jMenuItem6ActionPerformed(evt);
1277         }// GEN-LAST:event_jButton2ActionPerformed
1278
1279         private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton1ActionPerformed
1280                 jCheckBoxMenuItem1ActionPerformed(evt);
1281         }// GEN-LAST:event_jToggleButton1ActionPerformed
1282
1283         private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton2ActionPerformed
1284                 jCheckBoxMenuItem2ActionPerformed(evt);
1285         }// GEN-LAST:event_jToggleButton2ActionPerformed
1286
1287         private void jCheckBoxMenuItem3ActionPerformed(
1288                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem3ActionPerformed
1289                 if (mainAction.isExistTimelineTab()) {
1290                         // タイムラインタブを削除
1291                         mainAction.actionRemoveTabbedTable(TimerID.createTimelineID());
1292                         jCheckBoxMenuItem3.setSelected(false);
1293                         jToggleButton3.setSelected(false);
1294                 } else {
1295                         // タイムラインタブを追加
1296                         mainAction.actionAddTimelineTab(mainAction.getGetTimelinePeriod());
1297                         jCheckBoxMenuItem3.setSelected(true);
1298                         jToggleButton3.setSelected(true);
1299                 }
1300         }// GEN-LAST:event_jCheckBoxMenuItem3ActionPerformed
1301
1302         private void jToggleButton3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton3ActionPerformed
1303                 jCheckBoxMenuItem3ActionPerformed(evt);
1304         }// GEN-LAST:event_jToggleButton3ActionPerformed
1305
1306         private void jTabbedPane1ComponentRemoved(java.awt.event.ContainerEvent evt) {// GEN-FIRST:event_jTabbedPane1ComponentRemoved
1307
1308         }// GEN-LAST:event_jTabbedPane1ComponentRemoved
1309
1310         private void jCheckBoxMenuItem4ActionPerformed(
1311                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem4ActionPerformed
1312                 if (mainAction.isExistMentionTab()) {
1313                         // mentionタブを削除
1314                         mainAction.actionRemoveTabbedTable(TimerID.createMentionID());
1315                         jCheckBoxMenuItem4.setSelected(false);
1316                         jToggleButton4.setSelected(false);
1317                 } else {
1318                         // mentionタブを追加
1319                         mainAction.actionAddMentionTab(mainAction.getGetMentionPeriod());
1320                         jCheckBoxMenuItem4.setSelected(true);
1321                         jToggleButton4.setSelected(true);
1322                 }
1323         }// GEN-LAST:event_jCheckBoxMenuItem4ActionPerformed
1324
1325         private void jCheckBoxMenuItem5ActionPerformed(
1326                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem5ActionPerformed
1327                 if (mainAction.isExistDirectMessageTab()) {
1328                         // dmタブを削除
1329                         mainAction.actionRemoveTabbedTable(TimerID.createDirectMessageID());
1330                         jCheckBoxMenuItem5.setSelected(false);
1331                         jToggleButton5.setSelected(false);
1332                 } else {
1333                         // dmタブを追加
1334                         mainAction.actionAddDirectMessageTab(mainAction
1335                                         .getGetDirectMessagePeriod());
1336                         jCheckBoxMenuItem5.setSelected(true);
1337                         jToggleButton5.setSelected(true);
1338                 }
1339         }// GEN-LAST:event_jCheckBoxMenuItem5ActionPerformed
1340
1341         private void jCheckBoxMenuItem6ActionPerformed(
1342                         java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jCheckBoxMenuItem6ActionPerformed
1343                 if (mainAction.isExistSendDirectMessageTab()) {
1344                         // タイムラインタブを削除
1345                         mainAction.actionRemoveTabbedTable(TimerID
1346                                         .createSendDirectMessageID());
1347                         jCheckBoxMenuItem6.setSelected(false);
1348                         jToggleButton6.setSelected(false);
1349                 } else {
1350                         // タイムラインタブを追加
1351                         mainAction.actionAddSendDirectMessageTab(mainAction
1352                                         .getGetSendDirectMessagePeriod());
1353                         jCheckBoxMenuItem6.setSelected(true);
1354                         jToggleButton6.setSelected(true);
1355                 }
1356         }// GEN-LAST:event_jCheckBoxMenuItem6ActionPerformed
1357
1358         private void jToggleButton4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton4ActionPerformed
1359                 jCheckBoxMenuItem4ActionPerformed(evt);
1360         }// GEN-LAST:event_jToggleButton4ActionPerformed
1361
1362         private void jToggleButton5ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton5ActionPerformed
1363                 jCheckBoxMenuItem5ActionPerformed(evt);
1364         }// GEN-LAST:event_jToggleButton5ActionPerformed
1365
1366         private void jToggleButton6ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jToggleButton6ActionPerformed
1367                 jCheckBoxMenuItem6ActionPerformed(evt);
1368         }// GEN-LAST:event_jToggleButton6ActionPerformed
1369
1370         private void jMenuItem11ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem11ActionPerformed
1371                 // reply
1372                 this.mainAction.actionSetReplyStatusToTweetBoxPane();
1373         }// GEN-LAST:event_jMenuItem11ActionPerformed
1374
1375         private void jMenuItem12ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem12ActionPerformed
1376                 // reply all
1377                 this.mainAction.actionSetReplyAllStatusToTweetBoxPane();
1378         }// GEN-LAST:event_jMenuItem12ActionPerformed
1379
1380         private void jMenuItem13ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem13ActionPerformed
1381                 // official rt
1382                 this.mainAction.actionRetweet();
1383         }// GEN-LAST:event_jMenuItem13ActionPerformed
1384
1385         private void jMenuItem15ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem15ActionPerformed
1386                 this.mainAction.actionCopySelectedStatusToTweetBoxPane();
1387         }// GEN-LAST:event_jMenuItem15ActionPerformed
1388
1389         private void jMenuItem14ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem14ActionPerformed
1390                 this.mainAction.actionSetQuoteStatusToTweetBoxPane();
1391         }// GEN-LAST:event_jMenuItem14ActionPerformed
1392
1393         private void jMenuItem16ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem16ActionPerformed
1394                 this.mainAction.actionShowDirectMessageDialog();
1395         }// GEN-LAST:event_jMenuItem16ActionPerformed
1396
1397         private void jMenuItem17ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem17ActionPerformed
1398                 this.mainAction.actionOpenStatusURL();
1399         }// GEN-LAST:event_jMenuItem17ActionPerformed
1400
1401         private void jMenuItem18ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem18ActionPerformed
1402                 this.mainAction.actionSelectedUserTimeline();
1403         }// GEN-LAST:event_jMenuItem18ActionPerformed
1404
1405         private void jMenuItem21ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem21ActionPerformed
1406                 this.mainAction.actionOpenUserURL();
1407         }// GEN-LAST:event_jMenuItem21ActionPerformed
1408
1409         private void jMenuItem22ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem22ActionPerformed
1410                 this.mainAction.actionOpenUserFav();
1411         }// GEN-LAST:event_jMenuItem22ActionPerformed
1412
1413         private void jMenuItem19ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem19ActionPerformed
1414                 this.mainAction.actionCreateFavorite();
1415         }// GEN-LAST:event_jMenuItem19ActionPerformed
1416
1417         private void jMenuItem20ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem20ActionPerformed
1418                 this.mainAction.actionDestroyFavorite();
1419         }// GEN-LAST:event_jMenuItem20ActionPerformed
1420
1421         private void jMenuItem23ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem23ActionPerformed
1422                 this.mainAction.actionShowHashtagSearchDialog();
1423         }// GEN-LAST:event_jMenuItem23ActionPerformed
1424
1425         private void jMenuItem25ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem25ActionPerformed
1426                 this.mainAction.actionShowUserListDialog(mainAction.getScreenName(),
1427                                 ListGetterSelection.CREATED);
1428         }// GEN-LAST:event_jMenuItem25ActionPerformed
1429
1430         private void jMenuItem24ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem24ActionPerformed
1431                 this.mainAction.actionShowUserListDialog(mainAction.getScreenName(),
1432                                 ListGetterSelection.SUBSCRIPTION);
1433         }// GEN-LAST:event_jMenuItem24ActionPerformed
1434
1435         private void jMenuItem26ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem26ActionPerformed
1436                 this.mainAction.actionShowUserListDialog(mainAction.getScreenName(),
1437                                 ListGetterSelection.MEMBERSHIPS);
1438         }// GEN-LAST:event_jMenuItem26ActionPerformed
1439
1440         private void jMenuItem27ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem27ActionPerformed
1441                 this.mainAction.actionShowSelectedUserList(ListGetterSelection.CREATED);
1442         }// GEN-LAST:event_jMenuItem27ActionPerformed
1443
1444         private void jMenuItem28ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem28ActionPerformed
1445                 this.mainAction
1446                                 .actionShowSelectedUserList(ListGetterSelection.SUBSCRIPTION);
1447         }// GEN-LAST:event_jMenuItem28ActionPerformed
1448
1449         private void jMenuItem29ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem29ActionPerformed
1450                 this.mainAction
1451                                 .actionShowSelectedUserList(ListGetterSelection.MEMBERSHIPS);
1452         }// GEN-LAST:event_jMenuItem29ActionPerformed
1453
1454         private void jMenuItem30ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jMenuItem30ActionPerformed
1455                 this.mainAction.actionOpenFav();
1456         }// GEN-LAST:event_jMenuItem30ActionPerformed
1457
1458         /**
1459      *
1460      */
1461         private void updateLen() {
1462                 // 残りつぶやける文字数情報を更新
1463                 mainAction.actionUpdateTweetMessageCount();
1464         }
1465
1466         /**
1467          * @param args
1468          *            the command line arguments
1469          */
1470         public static void main(String args[]) {
1471                 java.awt.EventQueue.invokeLater(new Runnable() {
1472
1473                         @Override
1474                         public void run() {
1475                                 try {
1476                                         // UIをシステム標準のものとする
1477                                         UIManager.setLookAndFeel(UIManager
1478                                                         .getSystemLookAndFeelClassName());
1479
1480                                 } catch (Exception e) {
1481                                         e.printStackTrace();
1482                                 }
1483                                 new NishioTweetManager().setVisible(true);
1484                         }
1485                 });
1486         }
1487
1488         /**
1489          * Twitter初期化
1490          */
1491         private void init() {
1492                 // twitterログイン
1493                 boolean login = false;
1494                 try {
1495                     tweetManager = new TweetManager();
1496                     tweetManager.loginTwitter();
1497                     login = true;
1498                 } catch (Exception e) {
1499                         e.printStackTrace();
1500                 }
1501
1502                 // メインアクション初期化
1503                 mainAction = new TweetMainAction(this, tweetManager, statusBar,
1504                                 jTextPane, jPanel3, tweetLengthLabel, jPanel1, jTabbedPane1,
1505                                 tweetMessageBox, userImageLabel, userNameLabel,
1506                                 updateTimeLabel, followerLabel, followingLabel, locationLabel,
1507                                 clientNameLabel, updateLabel, userIntroBox, userWebBox,
1508                                 jToggleButton3, jToggleButton4, jToggleButton5, jToggleButton6,
1509                                 jCheckBoxMenuItem3, jCheckBoxMenuItem4, jCheckBoxMenuItem5,
1510                                 jCheckBoxMenuItem6, trayIcon);
1511                 // ハッシュタグ用のハイパーリンクリスナーにアクション登録
1512                 this.hashTagHyperlinkListener.setMainAction(mainAction);
1513                 // もしログインに失敗したら,アカウント設定画面を出す
1514                 if (login == false) {
1515                         mainAction.actionShowAccountDialog();
1516                 } else {
1517                         // TLなどを表示するタブを追加
1518                         // 自動更新も開始
1519                         //タブがひとつもないかどうか
1520                         boolean isNoTab = true;
1521                         // TL, Mention, DMのタブなどを表示するかしないかの設定を読み込んで反映するようにする
1522                         if( this.mainAction.isTempOpenedTimelineTab() ) {
1523                                 this.mainAction.actionAddTimelineTab(this.mainAction
1524                                                 .getGetTimelinePeriod());
1525                                 isNoTab = false;
1526                         }
1527                         if( this.mainAction.isTempOpenedMentionTab() ) {
1528                                 this.mainAction.actionAddMentionTab(this.mainAction
1529                                                 .getGetMentionPeriod());
1530                                 isNoTab = false;
1531                         }
1532                         if( this.mainAction.isTempOpenedDMTab() ) {
1533                                 this.mainAction.actionAddDirectMessageTab(this.mainAction
1534                                                 .getGetDirectMessagePeriod());
1535                                 isNoTab = false;
1536                         }
1537                         if( this.mainAction.isTempOpenedSendDMTab() ) {
1538                                 this.mainAction.actionAddSendDirectMessageTab(
1539                                  this.mainAction.getGetSendDirectMessagePeriod() );
1540                                 isNoTab = false;
1541                         }
1542
1543                         //タブがひとつもないとき
1544                         if( isNoTab == true ) {
1545                                 //Timelineタブを追加
1546                                 this.mainAction.actionAddTimelineTab(this.mainAction
1547                                                 .getGetTimelinePeriod());
1548                         }
1549                         // フォーカスを一番初めのテーブルに移す
1550                         this.mainAction.actionRequestFocusToTab(0);
1551                 }
1552                 try {
1553                     ClientVersionManager version = ClientVersionManager.getInstance();
1554                     VersionInfo latest = version.getLatestVersionInfo();
1555                     if( latest != null && !latest.getVersion().equals( version.getCurrentversion() )) {
1556                         if( this.mainAction.isUpdateNotify() ) {
1557                             //最新クライアント情報を通知するかどうか
1558                             this.mainAction.actionShowUpdateDialog();
1559                         }
1560                     }
1561                 }catch(Exception e) {
1562                     e.printStackTrace();
1563                 }
1564
1565                 //Streaming APIを利用しているかどうかを表示
1566                 this.tweetManager.getStreamManager().addCollectionLifeCycleListener(this);
1567                 //streaming利用時はstreamingを開始する
1568                 if( this.mainAction.isUsingStreaming() ) {
1569                     this.mainAction.startStreaming();
1570                 }
1571         }
1572
1573         /**
1574          * チェックボックスすべてのチェック状態を更新
1575          */
1576         public void updateSelectedInformation() {
1577                 // checkボタンの状態を設定
1578                 // 詳細情報
1579                 jCheckBoxMenuItem1.setSelected(mainAction.isDetailInfoPanelVisible());
1580                 jToggleButton1.setSelected(mainAction.isDetailInfoPanelVisible());
1581                 // 書き込みボタン
1582                 jCheckBoxMenuItem2.setSelected(mainAction.isShowTweetBoxVisible());
1583                 jToggleButton2.setSelected(mainAction.isShowTweetBoxVisible());
1584                 //log保存
1585                 logSaveCheckItem.setSelected(mainAction.isSaveLog());
1586                 // TL表示
1587                 mainAction.updateCheckboxInformation();
1588                 //streaming apiを利用するかどうか
1589                 isUsingStreamingMenuItem.setSelected(mainAction.isUsingStreaming());
1590         }
1591
1592         /**
1593          * streaming api接続時
1594          */
1595         public void onConnect() {
1596             streamingLabel.setText("StreamingAPI開始");
1597         }
1598
1599         /**
1600          * streaming api接続解除時
1601          */
1602         public void onDisconnect() {
1603             streamingLabel.setText("StreamingAPI停止中");
1604         }
1605
1606         /**
1607          * streaming apiクリーンアップ時
1608          */
1609         public void onCleanUp() {
1610             //nothing
1611         }
1612
1613         // nishio tweet manager
1614         private JPopupMenu rightClickPopup = null;
1615         private TweetMainAction mainAction = null;
1616         // TweetManager
1617         private TweetManager tweetManager = null;
1618     // Variables declaration - do not modify//GEN-BEGIN:variables
1619     private javax.swing.JEditorPane clientNameLabel;
1620     private javax.swing.JLabel followerLabel;
1621     private javax.swing.JLabel followingLabel;
1622     private javax.swing.JCheckBoxMenuItem isUsingStreamingMenuItem;
1623     private javax.swing.JButton jButton1;
1624     private javax.swing.JButton jButton2;
1625     private javax.swing.JButton jButton4;
1626     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1;
1627     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem2;
1628     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem3;
1629     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem4;
1630     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem5;
1631     private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem6;
1632     private javax.swing.JLabel jLabel12;
1633     private javax.swing.JLabel jLabel13;
1634     private javax.swing.JLabel jLabel15;
1635     private javax.swing.JLabel jLabel3;
1636     private javax.swing.JLabel jLabel4;
1637     private javax.swing.JLabel jLabel5;
1638     private javax.swing.JLabel jLabel9;
1639     private javax.swing.JMenu jMenu1;
1640     private javax.swing.JMenu jMenu2;
1641     private javax.swing.JMenu jMenu3;
1642     private javax.swing.JMenu jMenu4;
1643     private javax.swing.JMenu jMenu5;
1644     private javax.swing.JMenu jMenu6;
1645     private javax.swing.JMenu jMenu7;
1646     private javax.swing.JMenu jMenu8;
1647     private javax.swing.JMenu jMenu9;
1648     private javax.swing.JMenuBar jMenuBar1;
1649     private javax.swing.JMenuItem jMenuItem1;
1650     private javax.swing.JMenuItem jMenuItem10;
1651     private javax.swing.JMenuItem jMenuItem11;
1652     private javax.swing.JMenuItem jMenuItem12;
1653     private javax.swing.JMenuItem jMenuItem13;
1654     private javax.swing.JMenuItem jMenuItem14;
1655     private javax.swing.JMenuItem jMenuItem15;
1656     private javax.swing.JMenuItem jMenuItem16;
1657     private javax.swing.JMenuItem jMenuItem17;
1658     private javax.swing.JMenuItem jMenuItem18;
1659     private javax.swing.JMenuItem jMenuItem19;
1660     private javax.swing.JMenuItem jMenuItem2;
1661     private javax.swing.JMenuItem jMenuItem20;
1662     private javax.swing.JMenuItem jMenuItem21;
1663     private javax.swing.JMenuItem jMenuItem22;
1664     private javax.swing.JMenuItem jMenuItem23;
1665     private javax.swing.JMenuItem jMenuItem24;
1666     private javax.swing.JMenuItem jMenuItem25;
1667     private javax.swing.JMenuItem jMenuItem26;
1668     private javax.swing.JMenuItem jMenuItem27;
1669     private javax.swing.JMenuItem jMenuItem28;
1670     private javax.swing.JMenuItem jMenuItem29;
1671     private javax.swing.JMenuItem jMenuItem3;
1672     private javax.swing.JMenuItem jMenuItem30;
1673     private javax.swing.JMenuItem jMenuItem31;
1674     private javax.swing.JMenuItem jMenuItem32;
1675     private javax.swing.JMenuItem jMenuItem33;
1676     private javax.swing.JMenuItem jMenuItem34;
1677     private javax.swing.JMenuItem jMenuItem35;
1678     private javax.swing.JMenuItem jMenuItem36;
1679     private javax.swing.JMenuItem jMenuItem4;
1680     private javax.swing.JMenuItem jMenuItem5;
1681     private javax.swing.JMenuItem jMenuItem6;
1682     private javax.swing.JMenuItem jMenuItem7;
1683     private javax.swing.JMenuItem jMenuItem8;
1684     private javax.swing.JMenuItem jMenuItem9;
1685     private javax.swing.JPanel jPanel1;
1686     private javax.swing.JPanel jPanel2;
1687     private javax.swing.JPanel jPanel3;
1688     private javax.swing.JPanel jPanel4;
1689     private javax.swing.JScrollPane jScrollPane5;
1690     private javax.swing.JScrollPane jScrollPane6;
1691     private javax.swing.JScrollPane jScrollPane7;
1692     private javax.swing.JScrollPane jScrollPane8;
1693     private javax.swing.JScrollPane jScrollPane9;
1694     private javax.swing.JToolBar.Separator jSeparator1;
1695     private javax.swing.JToolBar.Separator jSeparator2;
1696     private javax.swing.JToolBar.Separator jSeparator3;
1697     private javax.swing.JPopupMenu.Separator jSeparator4;
1698     private javax.swing.JPopupMenu.Separator jSeparator5;
1699     private javax.swing.JPopupMenu.Separator jSeparator6;
1700     private javax.swing.JPopupMenu.Separator jSeparator7;
1701     private javax.swing.JTabbedPane jTabbedPane1;
1702     private javax.swing.JTextPane jTextPane;
1703     private javax.swing.JToggleButton jToggleButton1;
1704     private javax.swing.JToggleButton jToggleButton2;
1705     private javax.swing.JToggleButton jToggleButton3;
1706     private javax.swing.JToggleButton jToggleButton4;
1707     private javax.swing.JToggleButton jToggleButton5;
1708     private javax.swing.JToggleButton jToggleButton6;
1709     private javax.swing.JToolBar jToolBar1;
1710     private javax.swing.JLabel locationLabel;
1711     private javax.swing.JCheckBoxMenuItem logSaveCheckItem;
1712     private javax.swing.JLabel statusBar;
1713     private javax.swing.JLabel streamingLabel;
1714     private javax.swing.JLabel tweetLengthLabel;
1715     private javax.swing.JEditorPane tweetMessageBox;
1716     private javax.swing.JLabel updateLabel;
1717     private javax.swing.JLabel updateTimeLabel;
1718     private javax.swing.JLabel userImageLabel;
1719     private javax.swing.JEditorPane userIntroBox;
1720     private javax.swing.JLabel userNameLabel;
1721     private javax.swing.JEditorPane userWebBox;
1722     // End of variables declaration//GEN-END:variables
1723
1724 }