|
@@ -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
|
}
|