OSDN Git Service

今すぐ更新ボタンを押すと,しばらく動きが固まってしまうバグを修正
authorspark_xp <spark_xp@d8c9ecd3-d47d-4367-8645-de82c00e513f>
Wed, 15 Sep 2010 17:56:47 +0000 (17:56 +0000)
committerspark_xp <spark_xp@d8c9ecd3-d47d-4367-8645-de82c00e513f>
Wed, 15 Sep 2010 17:56:47 +0000 (17:56 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/nt-manager/NishioTweetManager/trunk@50 d8c9ecd3-d47d-4367-8645-de82c00e513f

src/twitter/gui/action/TweetMainAction.java
src/twitter/task/TweetTaskManager.java

index 2b46254..b4bd453 100644 (file)
@@ -274,16 +274,16 @@ public class TweetMainAction {
             String timerID = t.getTimerID();
             if( timerID.equals( TimerID.createTimelineID() ) ) {
                 //TLの周期情報更新
-                this.tweetTaskManager.updateTaskPeriod(timerID, this.getGetTimelinePeriod());
+                this.tweetTaskManager.updateTaskPeriod(timerID, this.getGetTimelinePeriod(), false);
             }else if( timerID.equals( TimerID.createMentionID() ) ) {
                 //Mentionの周期情報更新
-                this.tweetTaskManager.updateTaskPeriod(timerID, this.getGetMentionPeriod() );
+                this.tweetTaskManager.updateTaskPeriod(timerID, this.getGetMentionPeriod(), false );
             }else if( timerID.equals( TimerID.createDirectMessageID() ) ) {
                 //DMの周期情報更新
-                this.tweetTaskManager.updateTaskPeriod(timerID, this.getGetDirectMessagePeriod());
+                this.tweetTaskManager.updateTaskPeriod(timerID, this.getGetDirectMessagePeriod(), false);
             }else if( timerID.equals( TimerID.createSendDirectMessageID() ) ) {
                 //SendDMの周期情報更新
-                this.tweetTaskManager.updateTaskPeriod(timerID, this.getGetSendDirectMessagePeriod());
+                this.tweetTaskManager.updateTaskPeriod(timerID, this.getGetSendDirectMessagePeriod(), false);
             }
         }
     }
@@ -796,7 +796,8 @@ public class TweetMainAction {
         try {
             //タブ上に存在するテーブルの情報を更新
             for(TweetTabbedTable t : this.tweetTabbedTableList ) {
-                t.updateTweetTable();
+                String timerID = t.getTimerID();
+                this.tweetTaskManager.resetTask(timerID, true);
             }
 
             // API残り回数を取得
index 37f5206..2eeedfa 100644 (file)
@@ -76,12 +76,18 @@ public class TweetTaskManager {
 
         /**
          * 更新リセット
+         * @param immediatelyUpdate すぐに更新するかどうか
          */
-        public void reset() {
+        public void reset(boolean immediatelyUpdate) {
             stop();
             if (future != null) {
-                future = scheduler.scheduleAtFixedRate(task, getPeriod(), getPeriod(),
-                        TimeUnit.MILLISECONDS);
+                if( immediatelyUpdate == true ) {
+                    future = scheduler.scheduleAtFixedRate(task, 0, getPeriod(),
+                            TimeUnit.MILLISECONDS);
+                }else {
+                    future = scheduler.scheduleAtFixedRate(task, getPeriod(), getPeriod(),
+                            TimeUnit.MILLISECONDS);
+                }
             }
         }
 
@@ -236,13 +242,14 @@ public class TweetTaskManager {
     /**
      * タイマーの更新間隔をリセットする
      * @param timerID
+     * @param immediatelyUpdate すぐに更新するかどうか
      * @return
      */
-    public boolean resetTask(String timerID) {
+    public boolean resetTask(String timerID, boolean immediatelyUpdate) {
         boolean found = false;
         for (TimerData t : timerList) {
             if (t.getTimerID().equals(timerID)) {
-                t.reset();
+                t.reset( immediatelyUpdate );
                 found = true;
                 break;
             }
@@ -254,14 +261,15 @@ public class TweetTaskManager {
      * タスクの周期を更新する
      * @param timerID
      * @param period
+     * @param immediatelyUpdate すぐに情報を更新するかどうか
      * @return
      */
-    public boolean updateTaskPeriod(String timerID, long period) {
+    public boolean updateTaskPeriod(String timerID, long period, boolean immediatelyUpdate) {
         boolean found = false;
         for (TimerData t : timerList) {
             if (t.getTimerID().equals(timerID)) {
                 t.setPeriod(period);
-                t.reset();
+                t.reset( immediatelyUpdate );
                 found = true;
                 break;
             }