OSDN Git Service

公式RTされたものを非公式RT, QT, replyするとき,一番初めに発言した人の情報を引用するように変更.
authorspark_xp <spark_xp@d8c9ecd3-d47d-4367-8645-de82c00e513f>
Fri, 17 Sep 2010 14:46:15 +0000 (14:46 +0000)
committerspark_xp <spark_xp@d8c9ecd3-d47d-4367-8645-de82c00e513f>
Fri, 17 Sep 2010 14:46:15 +0000 (14:46 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/nt-manager/NishioTweetManager/trunk@60 d8c9ecd3-d47d-4367-8645-de82c00e513f

src/twitter/gui/action/TweetMainAction.java
src/twitter/gui/component/TweetTabbedTable.java

index 32d5d46..1df8100 100644 (file)
@@ -492,8 +492,13 @@ public class TweetMainAction {
     public void actionSetReplyStatusToTweetBoxPane() {
         //選択した部分
         this.setReplyStatus( currentStatus );
+
+        Status s = this.getCurrentStatus();
+        if( s.isRetweet() ) {
+            s = s.getRetweetedStatus();
+        }
         // コメントしたユーザ名
-        String username = this.getCurrentStatus().getUser().getScreenName();
+        String username = s.getUser().getScreenName();
         this.tweetBoxPane.setText("@" + username + " ");
 
         //情報表示
@@ -506,10 +511,14 @@ public class TweetMainAction {
     public void actionSetQuoteStatusToTweetBoxPane() {
         //選択した部分
         this.setReplyStatus( currentStatus );
+        Status s = this.getCurrentStatus();
+        if( s.isRetweet() ) {
+            s = s.getRetweetedStatus();
+        }
         // コメントしたユーザ名
-        String username = this.getCurrentStatus().getUser().getScreenName();
+        String username = s.getUser().getScreenName();
         // コメント
-        String message = this.getCurrentStatus().getText();
+        String message = s.getText();
         this.tweetBoxPane.setText("QT @" + username + ": " + message);
 
         //情報表示
@@ -520,10 +529,14 @@ public class TweetMainAction {
      * 選択したtweetを非公式RT
      */
     public void actionCopySelectedStatusToTweetBoxPane() {
+        Status s = this.getCurrentStatus();
+        if( s.isRetweet() ) {
+            s = s.getRetweetedStatus();
+        }
         // コメントしたユーザ名
-        String username = this.getCurrentStatus().getUser().getScreenName();
+        String username = s.getUser().getScreenName();
         // コメント
-        String message = this.getCurrentStatus().getText();
+        String message = s.getText();
         this.tweetBoxPane.setText("RT @" + username + ": " + message);
     }
 
@@ -628,7 +641,11 @@ public class TweetMainAction {
      */
     public void actionOpenUserURL() {
         try {
-            String userName = this.getCurrentStatus().getUser().getScreenName();
+            Status s = this.getCurrentStatus();
+            if( s.isRetweet() ) {
+                s = s.getRetweetedStatus();
+            }
+            String userName = s.getUser().getScreenName();
             Desktop.getDesktop().browse(new URI(TWITTER_URL + userName));
         } catch (Exception ex) {
             ex.printStackTrace();
@@ -950,6 +967,10 @@ public class TweetMainAction {
         //選択している行が1行だけの場合,情報を表示する
         if (sc == 1 && table != null) {
             Status st = getTweetTableInformation(table, table.getModel());
+            //RTの場合,もとの発言を表示
+            if( st.isRetweet() ) {
+                st = st.getRetweetedStatus();
+            }
             infoMessage = st.getText();
             // tweetMessageBox内のURLをhtmlリンクへ変換
             infoMessage = actionReplaceTweetMessageBoxURLLink(infoMessage);
index 4bda806..a99024a 100644 (file)
@@ -52,8 +52,6 @@ public class TweetTabbedTable {
     private TweetManager tweetManager;
     //メインアクション
     private TweetMainAction mainAction;
-    //右クリックを押した時のポップアップ
-    private JPopupMenu rightClickPopup = null;
     //テーブルの高さ
     private int tableElementHeight;
     //新しく取得した部分のテーブルの色
@@ -287,86 +285,108 @@ public class TweetTabbedTable {
      * @return
      */
     private JPopupMenu getRightClickPopup() {
-        if (rightClickPopup == null) {
-            rightClickPopup = new JPopupMenu();
+        //if (rightClickPopup == null) {
+        JPopupMenu rightClickPopup = new JPopupMenu();
 
-            JMenuItem replyMenuItem = new JMenuItem("この発言に返信する(Reply)");
-            replyMenuItem.addActionListener(new java.awt.event.ActionListener() {
+        JMenuItem replyMenuItem = new JMenuItem("この発言に返信する(Reply)");
+        replyMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
-                public void actionPerformed(java.awt.event.ActionEvent e) {
-                    // 選択したセルのステータスにreply
-                    mainAction.actionSetReplyStatusToTweetBoxPane();
-                }
-            });
-            rightClickPopup.add(replyMenuItem);
-            
-            JMenuItem retweetMenuItem = new JMenuItem("発言を公式リツイート(RT)");
-            retweetMenuItem.addActionListener(new java.awt.event.ActionListener() {
-
-                @Override
-                public void actionPerformed(java.awt.event.ActionEvent e) {
-                    // 選択したセルのステータスをRetweet
-                    mainAction.actionRetweet();
-                }
-            });
-            rightClickPopup.add(retweetMenuItem);
+            public void actionPerformed(java.awt.event.ActionEvent e) {
+                // 選択したセルのステータスにreply
+                mainAction.actionSetReplyStatusToTweetBoxPane();
+            }
+        });
+        JMenuItem retweetMenuItem = new JMenuItem("発言を公式リツイート(RT)");
+        retweetMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
-            JMenuItem quoteMenuItem = new JMenuItem("発言を引用ツイート(QT)");
-            quoteMenuItem.addActionListener(new java.awt.event.ActionListener() {
+            @Override
+            public void actionPerformed(java.awt.event.ActionEvent e) {
+                // 選択したセルのステータスをRetweet
+                mainAction.actionRetweet();
+            }
+        });
+       
+        JMenuItem quoteMenuItem = new JMenuItem("発言を引用ツイート(QT)");
+        quoteMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
-                @Override
-                public void actionPerformed(java.awt.event.ActionEvent e) {
-                    // 選択したセルのステータスをQT
-                    mainAction.actionSetQuoteStatusToTweetBoxPane();
-                }
-            });
-            rightClickPopup.add(quoteMenuItem);
+            @Override
+            public void actionPerformed(java.awt.event.ActionEvent e) {
+                // 選択したセルのステータスをQT
+                mainAction.actionSetQuoteStatusToTweetBoxPane();
+            }
+        });
+        
+        JMenuItem unofficialRetweetMenuItem = new JMenuItem("発言をコメント付きリツイート(非公式RT)");
+        unofficialRetweetMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
-            JMenuItem unofficialRetweetMenuItem = new JMenuItem("発言をコメント付きリツイート(非公式RT)");
-            unofficialRetweetMenuItem.addActionListener(new java.awt.event.ActionListener() {
+            @Override
+            public void actionPerformed(java.awt.event.ActionEvent e) {
+                // 選択したセルのステータスをコメント付Retweet
+                mainAction.actionCopySelectedStatusToTweetBoxPane();
+            }
+        });
 
-                @Override
-                public void actionPerformed(java.awt.event.ActionEvent e) {
-                    // 選択したセルのステータスをコメント付Retweet
-                    mainAction.actionCopySelectedStatusToTweetBoxPane();
-                }
-            });
-            rightClickPopup.add(unofficialRetweetMenuItem);
+        JMenuItem directMessageMenuItem = new JMenuItem("ダイレクトメッセージを送信");
+        directMessageMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
-            JMenuItem directMessageMenuItem = new JMenuItem("ダイレクトメッセージを送信");
-            directMessageMenuItem.addActionListener(new java.awt.event.ActionListener() {
+            @Override
+            public void actionPerformed(java.awt.event.ActionEvent e) {
+                // ダイレクトメッセージ送信ダイアログを表示
+                mainAction.actionShowDirectMessageDialog();
+            }
+        });
 
-                @Override
-                public void actionPerformed(java.awt.event.ActionEvent e) {
-                    // ダイレクトメッセージ送信ダイアログを表示
-                    mainAction.actionShowDirectMessageDialog();
-                }
-            });
-            rightClickPopup.add(directMessageMenuItem);
+        JMenuItem statusBrowserMenuItem = new JMenuItem("この発言をブラウザで開く");
+        statusBrowserMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
-            JMenuItem statusBrowserMenuItem = new JMenuItem("この発言をブラウザで開く");
-            statusBrowserMenuItem.addActionListener(new java.awt.event.ActionListener() {
+            @Override
+            public void actionPerformed(java.awt.event.ActionEvent e) {
+                // 選択したセルのステータスをブラウザで開く
+                mainAction.actionOpenStatusURL();
+            }
+        });
 
-                @Override
-                public void actionPerformed(java.awt.event.ActionEvent e) {
-                    // 選択したセルのステータスをブラウザで開く
-                    mainAction.actionOpenStatusURL();
-                }
-            });
-            rightClickPopup.add(statusBrowserMenuItem);
+        JMenuItem openBrowserUserInformationMenuItem = new JMenuItem(
+                "この人のTimelineをブラウザで開く");
+        openBrowserUserInformationMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
-            JMenuItem openBrowserUserInformationMenuItem = new JMenuItem(
-                    "この人のTimelineをブラウザで開く");
-            openBrowserUserInformationMenuItem.addActionListener(new java.awt.event.ActionListener() {
+            @Override
+            public void actionPerformed(java.awt.event.ActionEvent e) {
+                // 選択したセルのユーザ情報をブラウザで開く
+                mainAction.actionOpenUserURL();
+            }
+        });
 
-                @Override
-                public void actionPerformed(java.awt.event.ActionEvent e) {
-                    // 選択したセルのユーザ情報をブラウザで開く
-                    mainAction.actionOpenUserURL();
-                }
-            });
+        //指定した発言がRTかどうか判定
+        int sc = table.getSelectedRowCount();
+        if (sc == 1 && table != null) {
+            Status st = mainAction.getTweetTableInformation(table, table.getModel());
+
+            //メニューアイテムを追加
+            //返信
+            rightClickPopup.add(replyMenuItem);
+            //公式RT
+            rightClickPopup.add(retweetMenuItem);
+            //QT
+            rightClickPopup.add(quoteMenuItem);
+            //非公式RT
+            rightClickPopup.add(unofficialRetweetMenuItem);
+            //ダイレクトメッセージ
+            rightClickPopup.add(directMessageMenuItem);
+            //発言をブラウザで開く
+            rightClickPopup.add(statusBrowserMenuItem);
+            //この人のtimelineを開く
             rightClickPopup.add(openBrowserUserInformationMenuItem);
+
+            if( st.isRetweet() ) {
+                //Retweetのときのみ表示するメニュー
+            }
+            if( st.isFavorited() ) {
+                //お気に入りに追加されている時のみ表示するメニュー
+            }
         }
+        //}
         return rightClickPopup;
     }