瀏覽代碼

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 9 年之前
父節點
當前提交
06179bfd89
共有 2 個文件被更改,包括 12 次插入19 次删除
  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 查看文件

23
 package com.dmdirc.ui;
23
 package com.dmdirc.ui;
24
 
24
 
25
 import com.dmdirc.CustomWindow;
25
 import com.dmdirc.CustomWindow;
26
+import com.dmdirc.DMDircMBassador;
26
 import com.dmdirc.FrameContainer;
27
 import com.dmdirc.FrameContainer;
27
 import com.dmdirc.Precondition;
28
 import com.dmdirc.Precondition;
28
-import com.dmdirc.interfaces.FrameCloseListener;
29
+import com.dmdirc.events.FrameClosingEvent;
29
 import com.dmdirc.interfaces.ui.FrameListener;
30
 import com.dmdirc.interfaces.ui.FrameListener;
30
 import com.dmdirc.util.collections.ListenerList;
31
 import com.dmdirc.util.collections.ListenerList;
31
 
32
 
39
 import javax.inject.Inject;
40
 import javax.inject.Inject;
40
 import javax.inject.Singleton;
41
 import javax.inject.Singleton;
41
 
42
 
43
+import net.engio.mbassy.listener.Handler;
44
+
42
 import static com.google.common.base.Preconditions.checkArgument;
45
 import static com.google.common.base.Preconditions.checkArgument;
43
 import static com.google.common.base.Preconditions.checkNotNull;
46
 import static com.google.common.base.Preconditions.checkNotNull;
44
 import static com.google.common.base.Preconditions.checkState;
47
 import static com.google.common.base.Preconditions.checkState;
53
     private final List<FrameContainer> rootWindows = new CopyOnWriteArrayList<>();
56
     private final List<FrameContainer> rootWindows = new CopyOnWriteArrayList<>();
54
     /** A list of frame listeners. */
57
     /** A list of frame listeners. */
55
     private final ListenerList listeners = new ListenerList();
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
      * Creates a new instance of {@link WindowManager}.
61
      * Creates a new instance of {@link WindowManager}.
61
      */
62
      */
62
     @Inject
63
     @Inject
63
-    public WindowManager() {
64
+    public WindowManager(final DMDircMBassador eventBus) {
65
+        eventBus.subscribe(this);
64
     }
66
     }
65
 
67
 
66
     /**
68
     /**
156
         rootWindows.add(window);
158
         rootWindows.add(window);
157
 
159
 
158
         fireAddWindow(window, focus);
160
         fireAddWindow(window, focus);
159
-
160
-        window.addCloseListener(closeListener);
161
     }
161
     }
162
 
162
 
163
     /**
163
     /**
197
         parent.addChild(child);
197
         parent.addChild(child);
198
 
198
 
199
         fireAddWindow(parent, child, focus);
199
         fireAddWindow(parent, child, focus);
200
-
201
-        child.addCloseListener(closeListener);
202
     }
200
     }
203
 
201
 
204
     /**
202
     /**
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 查看文件

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

Loading…
取消
儲存