OSDN Git Service

タブを閉じたときにStreamingAPIの更新もストップするようにした
authorspark_xp <spark_xp@d8c9ecd3-d47d-4367-8645-de82c00e513f>
Tue, 23 Aug 2011 18:08:09 +0000 (18:08 +0000)
committerspark_xp <spark_xp@d8c9ecd3-d47d-4367-8645-de82c00e513f>
Tue, 23 Aug 2011 18:08:09 +0000 (18:08 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/nt-manager/NishioTweetManager/trunk@170 d8c9ecd3-d47d-4367-8645-de82c00e513f

13 files changed:
src/twitter/action/TweetDirectMessageGetter.java
src/twitter/action/TweetFavoriteGetter.java
src/twitter/action/TweetGetter.java
src/twitter/action/TweetListGetter.java
src/twitter/action/TweetMentionGetter.java
src/twitter/action/TweetSearchResultGetter.java
src/twitter/action/TweetSendDirectMessageGetter.java
src/twitter/action/TweetTimelineGetter.java
src/twitter/action/TweetUserTimelineGetter.java
src/twitter/gui/action/TweetMainAction.java
src/twitter/gui/component/TweetTabbedTable.java
src/twitter/manage/TweetSearchStream.java
src/twitter/manage/TweetUserStreamManager.java

index 036f50c..d81cd65 100644 (file)
@@ -93,5 +93,12 @@ public class TweetDirectMessageGetter implements TweetGetter{
 
        }
 
+       /**
+     * streaming api有効時のアップデートを受け取るlistenerを削除
+     */
+    public void stopUpdateListener() {
+       //TODO
+    }
+
 }
 
index 43a3d12..0067628 100644 (file)
@@ -83,4 +83,11 @@ public class TweetFavoriteGetter implements TweetGetter{
 
        }
 
+       /**
+     * streaming api有効時のアップデートを受け取るlistenerを削除
+     */
+    public void stopUpdateListener() {
+       //TODO
+    }
+
 }
\ No newline at end of file
index 34e96cc..7adc2b5 100644 (file)
@@ -30,8 +30,13 @@ public interface TweetGetter {
     public List<Status> getNewTweetData();
 
     /**
-     * streaming api有効時、アップデートを受け取るlisterをセット
+     * streaming api有効時、アップデートを受け取るlistenerをセット
      * @param listener
      */
     public void setUpdateListener(TweetStreamingListener listener);
+
+    /**
+     * streaming api有効時のアップデートを受け取るlistenerを削除
+     */
+    public void stopUpdateListener();
 }
index bc0cd84..4943140 100644 (file)
@@ -68,5 +68,12 @@ public class TweetListGetter implements TweetGetter{
                // TODO 自動生成されたメソッド・スタブ
 
        }
+       
+       /**
+     * streaming api有効時のアップデートを受け取るlistenerを削除
+     */
+    public void stopUpdateListener() {
+       //TODO
+    }
 
 }
index ce08479..bbc6972 100644 (file)
@@ -96,4 +96,11 @@ public class TweetMentionGetter implements TweetGetter{
                }
        }
 
+       /**
+     * streaming api有効時のアップデートを受け取るlistenerを削除
+     */
+    public void stopUpdateListener() {
+       this.tweetManager.getStreamManager().stopMentionListener();
+    }
+
 }
index 2fb8600..37f4f4d 100644 (file)
@@ -7,6 +7,8 @@ package twitter.action;
 
 import java.util.List;
 
+import javax.xml.bind.Marshaller.Listener;
+
 import twitter.action.streaming.TweetStreamingListener;
 import twitter.manage.TweetManager;
 import twitter4j.Status;
@@ -74,4 +76,11 @@ public class TweetSearchResultGetter implements TweetGetter{
                }
        }
 
+       /**
+     * streaming api有効時のアップデートを受け取るlistenerを削除
+     */
+    public void stopUpdateListener() {
+       tweetManager.getStreamManager().stopSearchListener(this.searchWord);
+    }
+
 }
index d8455fe..299418e 100644 (file)
@@ -68,6 +68,13 @@ public class TweetSendDirectMessageGetter implements TweetGetter{
                // TODO 自動生成されたメソッド・スタブ
 
        }
+       
+       /**
+     * streaming api有効時のアップデートを受け取るlistenerを削除
+     */
+    public void stopUpdateListener() {
+       //TODO
+    }
 
 }
 
index 87407ac..ab5ecd0 100644 (file)
@@ -95,5 +95,11 @@ public class TweetTimelineGetter implements TweetGetter{
                }
        }
 
+       /**
+     * streaming api有効時のアップデートを受け取るlistenerを削除
+     */
+    public void stopUpdateListener() {
+       this.tweetManager.getStreamManager().stopTimelineListener();
+    }
 }
 
index c0100f6..a422bb9 100644 (file)
@@ -89,4 +89,11 @@ public class TweetUserTimelineGetter implements TweetGetter{
 
        }
 
+       /**
+     * streaming api有効時のアップデートを受け取るlistenerを削除
+     */
+    public void stopUpdateListener() {
+       //TODO
+    }
+
 }
\ No newline at end of file
index 046a20c..9417b1d 100644 (file)
@@ -874,29 +874,7 @@ public class TweetMainAction {
                                break;
                        }
                }
-
-               if (deleteTabIndex >= 0) {
-                       int selected = this.tweetTabbedTableList.get(deleteTabIndex)
-                                       .getTabSetNum();
-                       // タブを削除
-                       this.tweetMainTab.remove(selected);
-                       // 削除
-                       this.tweetTabbedTableList.remove(deleteTabIndex);
-                       // 自動更新しているタブを削除
-                       this.tweetTaskManager.shutdownTask(timerID);
-                       // ID削除
-                       TimerID idManager = TimerID.getInstance();
-                       idManager.removeID(timerID);
-
-                       // checkboxの状態更新
-                       this.updateCheckboxInformation();
-                       //設定保存
-                       try {
-                               saveProperties();
-                       } catch (IOException e) {
-                               e.printStackTrace();
-                       }
-               }
+               actionRemoveTabbedTable(deleteTabIndex);
        }
 
        /**
@@ -927,6 +905,16 @@ public class TweetMainAction {
                        String timerID = this.tweetTabbedTableList.get(deleteTabIndex)
                                        .getTimerID();
                        // 削除
+                       TweetTabbedTable table = this.tweetTabbedTableList.get(deleteTabIndex);
+                       if( table != null ) {
+                               //streaming api使っている場合はlistenerをストップ
+                               TweetGetter getter = table.getTweetGetter();
+                               if( getter != null ) {
+                                       //streaming apiのストップ
+                                       getter.stopUpdateListener();
+                               }
+                       }
+                       // 削除
                        this.tweetTabbedTableList.remove(deleteTabIndex);
                        // 自動更新しているタブを削除
                        this.tweetTaskManager.shutdownTask(timerID);
index c67ff7f..53a91ec 100644 (file)
@@ -587,6 +587,22 @@ public class TweetTabbedTable implements TweetStreamingListener {
        }
 
        /**
+        * tweetGetterを取得します。
+        * @return tweetGetter
+        */
+       public TweetGetter getTweetGetter() {
+           return tweetGetter;
+       }
+
+       /**
+        * tweetGetterを設定します。
+        * @param tweetGetter tweetGetter
+        */
+       public void setTweetGetter(TweetGetter tweetGetter) {
+           this.tweetGetter = tweetGetter;
+       }
+
+       /**
         * @return the title
         */
        public String getTitle() {
index e059fdb..184cf7c 100644 (file)
@@ -107,6 +107,7 @@ public class TweetSearchStream extends StatusAdapter implements Runnable{
                                TweetStreamingListener listener = listeners.get(word);\r
                                listener.update(status);\r
                        }\r
+                       System.out.println("WORD:" + word + " searching -- " + status.getText());\r
                }\r
        }\r
 \r
index ff3c2c0..eece6c8 100644 (file)
@@ -44,6 +44,13 @@ public class TweetUserStreamManager extends UserStreamAdapter {
        }\r
 \r
        /**\r
+        * タイムライン監視リスナーを削除\r
+        */\r
+       public void stopTimelineListener() {\r
+               this.userStream.setTimelineListener(null);\r
+       }\r
+\r
+       /**\r
         * Mentionを監視するリスナー\r
         * @param listener\r
         * @param notifyManager メッセージをバルーン通知するためのマネージャー, nullなら通知しない\r
@@ -54,6 +61,14 @@ public class TweetUserStreamManager extends UserStreamAdapter {
        }\r
 \r
        /**\r
+        * Mentionを監視するリスナーをストップ\r
+        */\r
+       public void stopMentionListener() {\r
+               this.userStream.setMentionListener(null);\r
+               this.userStream.setMentionNotifyManager(null);\r
+       }\r
+\r
+       /**\r
         * 検索ワードを監視するリスナー\r
         * @param word\r
         * @param listener\r
@@ -61,4 +76,12 @@ public class TweetUserStreamManager extends UserStreamAdapter {
        public void setSearchListener(String word, TweetStreamingListener listener) {\r
                searchStream.addSearchWord(word, listener);\r
        }\r
+\r
+       /**\r
+        * 検索ワードを監視するリスナーを停止\r
+        * @param word\r
+        */\r
+       public void stopSearchListener(String word) {\r
+               searchStream.removeSearchWord(word);\r
+       }\r
 }\r