浏览代码

Don't show each message twice.

Fixes CLIENT-268

Change-Id: I10690003ee1439e4feb518c98dab2392aff65470
Reviewed-on: http://gerrit.dmdirc.com/2041
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
tags/0.7rc1
Greg Holmes 13 年前
父节点
当前提交
9c89b0efee
共有 1 个文件被更改,包括 14 次插入16 次删除
  1. 14
    16
      src/com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.java

+ 14
- 16
src/com/dmdirc/addons/ui_swing/components/statusbar/MessageLabel.java 查看文件

@@ -33,10 +33,10 @@ import java.awt.Window;
33 33
 import java.awt.event.MouseEvent;
34 34
 import java.awt.event.MouseListener;
35 35
 import java.util.Date;
36
-import java.util.LinkedList;
37 36
 import java.util.Queue;
38 37
 import java.util.Timer;
39 38
 import java.util.TimerTask;
39
+import java.util.concurrent.ConcurrentLinkedQueue;
40 40
 
41 41
 import javax.swing.JLabel;
42 42
 import javax.swing.JPanel;
@@ -71,10 +71,12 @@ public class MessageLabel extends JPanel implements StatusBarComponent,
71 71
 
72 72
     /**
73 73
      * Instantiates a new message label.
74
+     *
75
+     * @param parentWindow Parent window
74 76
      */
75 77
     public MessageLabel(final Window parentWindow) {
76 78
         super(new MigLayout("fill, ins 0, gap 0  0"));
77
-        queue = new LinkedList<StatusMessage>();
79
+        queue = new ConcurrentLinkedQueue<StatusMessage>();
78 80
         defaultMessage = new StatusMessage(null, "Ready.", null, -1,
79 81
                 IdentityManager.getGlobalConfig());
80 82
         currentMessage = defaultMessage;
@@ -185,12 +187,10 @@ public class MessageLabel extends JPanel implements StatusBarComponent,
185 187
      * @param message Message object to show
186 188
      */
187 189
     public void setMessage(final StatusMessage message) {
188
-        synchronized(queue) {
189
-            queue.add(message);
190
-            if (queue.size() == 1) {
191
-                currentMessage = message;
192
-                updateCurrentMessage();
193
-            }
190
+        queue.add(message);
191
+        if (queue.size() == 1) {
192
+            currentMessage = message;
193
+            updateCurrentMessage();
194 194
         }
195 195
     }
196 196
 
@@ -229,15 +229,13 @@ public class MessageLabel extends JPanel implements StatusBarComponent,
229 229
      * Removes the message from the status bar.
230 230
      */
231 231
     public void clearMessage() {
232
-        synchronized(queue) {
233
-            historyLabel.addMessage(currentMessage);
234
-            if (queue.peek() == null) {
235
-                currentMessage = defaultMessage;
236
-            } else {
237
-                currentMessage = queue.poll();
238
-            }
239
-            updateCurrentMessage();
232
+        historyLabel.addMessage(currentMessage);
233
+        if (queue.size() <= 1) {
234
+            currentMessage = defaultMessage;
235
+        } else {
236
+            currentMessage = queue.poll();
240 237
         }
238
+        updateCurrentMessage();
241 239
     }
242 240
 
243 241
     /**

正在加载...
取消
保存