Quellcode durchsuchen

Use FrameClosingEvents in WindowManager.

Change-Id: Iba5bc03ad28b1bb28def0b7a1f27c9cf4e2fe7d0
Reviewed-on: http://gerrit.dmdirc.com/3813
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
pull/1/head
Greg Holmes vor 9 Jahren
Ursprung
Commit
06179bfd89
2 geänderte Dateien mit 12 neuen und 19 gelöschten Zeilen
  1. 9
    18
      src/com/dmdirc/ui/WindowManager.java
  2. 3
    1
      test/com/dmdirc/ui/WindowManagerTest.java

+ 9
- 18
src/com/dmdirc/ui/WindowManager.java Datei anzeigen

@@ -23,9 +23,10 @@
23 23
 package com.dmdirc.ui;
24 24
 
25 25
 import com.dmdirc.CustomWindow;
26
+import com.dmdirc.DMDircMBassador;
26 27
 import com.dmdirc.FrameContainer;
27 28
 import com.dmdirc.Precondition;
28
-import com.dmdirc.interfaces.FrameCloseListener;
29
+import com.dmdirc.events.FrameClosingEvent;
29 30
 import com.dmdirc.interfaces.ui.FrameListener;
30 31
 import com.dmdirc.util.collections.ListenerList;
31 32
 
@@ -39,6 +40,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
39 40
 import javax.inject.Inject;
40 41
 import javax.inject.Singleton;
41 42
 
43
+import net.engio.mbassy.listener.Handler;
44
+
42 45
 import static com.google.common.base.Preconditions.checkArgument;
43 46
 import static com.google.common.base.Preconditions.checkNotNull;
44 47
 import static com.google.common.base.Preconditions.checkState;
@@ -53,14 +56,13 @@ public class WindowManager {
53 56
     private final List<FrameContainer> rootWindows = new CopyOnWriteArrayList<>();
54 57
     /** A list of frame listeners. */
55 58
     private final ListenerList listeners = new ListenerList();
56
-    /** Listener for frame close events. */
57
-    private final FrameCloseListener closeListener = new CloseListener();
58 59
 
59 60
     /**
60 61
      * Creates a new instance of {@link WindowManager}.
61 62
      */
62 63
     @Inject
63
-    public WindowManager() {
64
+    public WindowManager(final DMDircMBassador eventBus) {
65
+        eventBus.subscribe(this);
64 66
     }
65 67
 
66 68
     /**
@@ -156,8 +158,6 @@ public class WindowManager {
156 158
         rootWindows.add(window);
157 159
 
158 160
         fireAddWindow(window, focus);
159
-
160
-        window.addCloseListener(closeListener);
161 161
     }
162 162
 
163 163
     /**
@@ -197,8 +197,6 @@ public class WindowManager {
197 197
         parent.addChild(child);
198 198
 
199 199
         fireAddWindow(parent, child, focus);
200
-
201
-        child.addCloseListener(closeListener);
202 200
     }
203 201
 
204 202
     /**
@@ -369,16 +367,9 @@ public class WindowManager {
369 367
         }
370 368
     }
371 369
 
372
-    /**
373
-     * Frame close listener that removes the window from this manager.
374
-     */
375
-    private class CloseListener implements FrameCloseListener {
376
-
377
-        @Override
378
-        public void windowClosing(final FrameContainer window) {
379
-            removeWindow(window);
380
-        }
381
-
370
+    @Handler
371
+    public void frameClosing(final FrameClosingEvent event) {
372
+        removeWindow(event.getContainer());
382 373
     }
383 374
 
384 375
 }

+ 3
- 1
test/com/dmdirc/ui/WindowManagerTest.java Datei anzeigen

@@ -22,6 +22,7 @@
22 22
 package com.dmdirc.ui;
23 23
 
24 24
 import com.dmdirc.CustomWindow;
25
+import com.dmdirc.DMDircMBassador;
25 26
 import com.dmdirc.FrameContainer;
26 27
 import com.dmdirc.interfaces.ui.FrameListener;
27 28
 
@@ -55,11 +56,12 @@ public class WindowManagerTest {
55 56
     @Mock private FrameContainer container;
56 57
     @Mock private FrameContainer child;
57 58
     @Mock private FrameContainer grandchild;
59
+    @Mock private DMDircMBassador eventBus;
58 60
     private WindowManager manager;
59 61
 
60 62
     @Before
61 63
     public void setup() {
62
-        manager = new WindowManager();
64
+        manager = new WindowManager(eventBus);
63 65
     }
64 66
 
65 67
     @Test

Laden…
Abbrechen
Speichern