Browse Source

FrameManagers now own and manage an EventBus.

Change-Id: Ie23fdab32a811174b2634a2cc0c617aa91ae1fa2
Reviewed-on: http://gerrit.dmdirc.com/3471
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Greg Holmes <greg@dmdirc.com>
pull/1/head
Chris Smith 10 years ago
parent
commit
03ea5733d5

+ 2
- 17
src/com/dmdirc/Channel.java View File

@@ -44,7 +44,6 @@ import com.dmdirc.ui.input.TabCompleterFactory;
44 44
 import com.dmdirc.ui.input.TabCompletionType;
45 45
 import com.dmdirc.ui.messages.ColourManager;
46 46
 import com.dmdirc.ui.messages.Styliser;
47
-import com.dmdirc.util.ChildEventBusManager;
48 47
 import com.dmdirc.util.URLBuilder;
49 48
 import com.dmdirc.util.annotations.factory.Factory;
50 49
 import com.dmdirc.util.annotations.factory.Unbound;
@@ -91,10 +90,6 @@ public class Channel extends MessageTarget implements ConfigChangeListener, Grou
91 90
     private volatile boolean showModePrefix;
92 91
     /** Whether we should show colours in nicks. */
93 92
     private volatile boolean showColours;
94
-    /** The manager to use to manage our event bus. */
95
-    private final ChildEventBusManager eventBusManager;
96
-    /** The bus to despatch events on. */
97
-    private final EventBus eventBus;
98 93
 
99 94
     /**
100 95
      * Creates a new instance of Channel.
@@ -126,7 +121,7 @@ public class Channel extends MessageTarget implements ConfigChangeListener, Grou
126 121
                         CommandType.TYPE_CHAT),
127 122
                 messageSinkManager,
128 123
                 urlBuilder,
129
-                eventBus, // TODO: This should be the channel's own event bus.
124
+                newServer.getEventBus(),
130 125
                 Arrays.asList(WindowComponent.TEXTAREA.getIdentifier(),
131 126
                         WindowComponent.INPUTFIELD.getIdentifier(),
132 127
                         WindowComponent.TOPICBAR.getIdentifier(),
@@ -135,9 +130,6 @@ public class Channel extends MessageTarget implements ConfigChangeListener, Grou
135 130
         this.configMigrator = configMigrator;
136 131
         this.channelInfo = newChannelInfo;
137 132
         this.server = newServer;
138
-        this.eventBusManager = new ChildEventBusManager(eventBus);
139
-        this.eventBusManager.connect();
140
-        this.eventBus = eventBusManager.getChildBus();
141 133
 
142 134
         getConfigManager().addChangeListener("channel", this);
143 135
         getConfigManager().addChangeListener("ui", "shownickcoloursintext", this);
@@ -157,11 +149,6 @@ public class Channel extends MessageTarget implements ConfigChangeListener, Grou
157 149
         selfJoin();
158 150
     }
159 151
 
160
-    @Override
161
-    public EventBus getEventBus() {
162
-        return eventBus;
163
-    }
164
-
165 152
     public ChannelInfo getChannelInfo() {
166 153
         return channelInfo;
167 154
     }
@@ -329,12 +316,10 @@ public class Channel extends MessageTarget implements ConfigChangeListener, Grou
329 316
         }
330 317
 
331 318
         // Trigger action for the window closing
332
-        eventBus.post(new ChannelClosedEvent(this));
319
+        getEventBus().post(new ChannelClosedEvent(this));
333 320
 
334 321
         // Inform any parents that the window is closing
335 322
         server.delChannel(channelInfo.getName());
336
-
337
-        eventBusManager.disconnect();
338 323
     }
339 324
 
340 325
     /**

+ 2
- 3
src/com/dmdirc/ClientModule.java View File

@@ -197,10 +197,9 @@ public class ClientModule {
197 197
     public MessageSinkManager getMessageSinkManager(
198 198
             final StatusBarManager statusBarManager,
199 199
             final WindowManager windowManager,
200
-            final URLBuilder urlBuilder,
201
-            final EventBus eventBus) {
200
+            final URLBuilder urlBuilder) {
202 201
         final MessageSinkManager messageSinkManager = new MessageSinkManager();
203
-        messageSinkManager.loadDefaultSinks(statusBarManager, windowManager, urlBuilder, eventBus);
202
+        messageSinkManager.loadDefaultSinks(statusBarManager, windowManager, urlBuilder);
204 203
         return messageSinkManager;
205 204
     }
206 205
 

+ 3
- 4
src/com/dmdirc/CustomWindow.java View File

@@ -44,15 +44,14 @@ public class CustomWindow extends FrameContainer {
44 44
      * @param title      The title of this custom window
45 45
      * @param parent     The parent of this custom window
46 46
      * @param urlBuilder The URL builder to use when finding icons.
47
-     * @param eventBus   The bus to despatch events on.
48 47
      */
49 48
     public CustomWindow(
50 49
             final String name,
51 50
             final String title,
52 51
             final FrameContainer parent,
53
-            final URLBuilder urlBuilder,
54
-            final EventBus eventBus) {
55
-        super(parent, "custom", name, title, parent.getConfigManager(), urlBuilder, eventBus,
52
+            final URLBuilder urlBuilder) {
53
+        super(parent, "custom", name, title, parent.getConfigManager(), urlBuilder,
54
+                parent.getEventBus(),
56 55
                 Arrays.asList(WindowComponent.TEXTAREA.getIdentifier()));
57 56
     }
58 57
 

+ 19
- 4
src/com/dmdirc/FrameContainer.java View File

@@ -39,6 +39,7 @@ import com.dmdirc.ui.input.TabCompleter;
39 39
 import com.dmdirc.ui.messages.Formatter;
40 40
 import com.dmdirc.ui.messages.IRCDocument;
41 41
 import com.dmdirc.ui.messages.Styliser;
42
+import com.dmdirc.util.ChildEventBusManager;
42 43
 import com.dmdirc.util.URLBuilder;
43 44
 import com.dmdirc.util.collections.ListenerList;
44 45
 
@@ -93,6 +94,8 @@ public abstract class FrameContainer {
93 94
     private final Object styliserSync = new Object();
94 95
     /** Object used to synchronise styliser access. */
95 96
     private final Object documentSync = new Object();
97
+    /** The manager to use to manage our event bus. */
98
+    private final ChildEventBusManager eventBusManager;
96 99
     /** Event bus to despatch events to. */
97 100
     private final EventBus eventBus;
98 101
     /** The icon manager to use for this container. */
@@ -147,12 +150,15 @@ public abstract class FrameContainer {
147 150
         this.title = title;
148 151
         this.components = new HashSet<>(components);
149 152
         this.iconManager = new IconManager(configManager, urlBuilder);
150
-        this.eventBus = eventBus;
151 153
         this.writable = false;
152 154
         this.commandParser = Optional.absent();
153 155
         this.tabCompleter = Optional.absent();
154 156
         this.messageSinkManager = Optional.absent();
155 157
 
158
+        this.eventBusManager = new ChildEventBusManager(eventBus);
159
+        this.eventBusManager.connect();
160
+        this.eventBus = eventBusManager.getChildBus();
161
+
156 162
         setIcon(icon);
157 163
     }
158 164
 
@@ -168,7 +174,7 @@ public abstract class FrameContainer {
168 174
      * @param commandParser      The command parser to use for input.
169 175
      * @param tabCompleter       The tab completer to use.
170 176
      * @param messageSinkManager The manager to use to despatch notifications.
171
-     * @param eventbus           The bus to despatch events on.
177
+     * @param eventBus           The bus to despatch events on.
172 178
      * @param components         The UI components that this frame requires
173 179
      *
174 180
      * @since 0.6.4
@@ -183,7 +189,7 @@ public abstract class FrameContainer {
183 189
             final CommandParser commandParser,
184 190
             final TabCompleter tabCompleter,
185 191
             final MessageSinkManager messageSinkManager,
186
-            final EventBus eventbus,
192
+            final EventBus eventBus,
187 193
             final Collection<String> components) {
188 194
         this.parent = Optional.fromNullable(parent);
189 195
         this.configManager = config;
@@ -191,13 +197,16 @@ public abstract class FrameContainer {
191 197
         this.title = title;
192 198
         this.components = new HashSet<>(components);
193 199
         this.iconManager = new IconManager(configManager, urlBuilder);
194
-        this.eventBus = eventbus;
195 200
         this.writable = true;
196 201
         this.commandParser = Optional.of(commandParser);
197 202
         this.tabCompleter = Optional.of(tabCompleter);
198 203
         this.messageSinkManager = Optional.of(messageSinkManager);
199 204
         commandParser.setOwner(this);
200 205
 
206
+        this.eventBusManager = new ChildEventBusManager(eventBus);
207
+        this.eventBusManager.connect();
208
+        this.eventBus = eventBusManager.getChildBus();
209
+
201 210
         setIcon(icon);
202 211
     }
203 212
 
@@ -225,6 +234,10 @@ public abstract class FrameContainer {
225 234
         return configManager;
226 235
     }
227 236
 
237
+    public EventBus getEventBus() {
238
+        return eventBus;
239
+    }
240
+
228 241
     public boolean isWritable() {
229 242
         return writable;
230 243
     }
@@ -356,6 +369,8 @@ public abstract class FrameContainer {
356 369
      * Closes this container (and its associated frame).
357 370
      */
358 371
     public void close() {
372
+        eventBusManager.disconnect();
373
+
359 374
         for (FrameCloseListener listener : listeners.get(FrameCloseListener.class)) {
360 375
             listener.windowClosing(this);
361 376
             listeners.remove(FrameCloseListener.class, listener);

+ 9
- 15
src/com/dmdirc/Query.java View File

@@ -56,8 +56,6 @@ import com.dmdirc.util.URLBuilder;
56 56
 import com.dmdirc.util.annotations.factory.Factory;
57 57
 import com.dmdirc.util.annotations.factory.Unbound;
58 58
 
59
-import com.google.common.eventbus.EventBus;
60
-
61 59
 import java.awt.Toolkit;
62 60
 import java.util.ArrayList;
63 61
 import java.util.Arrays;
@@ -76,8 +74,6 @@ public class Query extends MessageTarget implements PrivateActionListener,
76 74
 
77 75
     /** The Server this Query is on. */
78 76
     private final Server server;
79
-    /** Event bus to post events on. */
80
-    private final EventBus eventBus;
81 77
     /** The full host of the client associated with this query. */
82 78
     private String host;
83 79
     /** The nickname of the client associated with this query. */
@@ -100,8 +96,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
100 96
             final TabCompleterFactory tabCompleterFactory,
101 97
             final CommandController commandController,
102 98
             final MessageSinkManager messageSinkManager,
103
-            final URLBuilder urlBuilder,
104
-            final EventBus eventBus) {
99
+            final URLBuilder urlBuilder) {
105 100
         super(newServer, "query", newServer.parseHostmask(newHost)[0],
106 101
                 newServer.parseHostmask(newHost)[0],
107 102
                 newServer.getConfigManager(),
@@ -111,12 +106,11 @@ public class Query extends MessageTarget implements PrivateActionListener,
111 106
                         CommandType.TYPE_QUERY, CommandType.TYPE_CHAT),
112 107
                 messageSinkManager,
113 108
                 urlBuilder,
114
-                eventBus,
109
+                newServer.getEventBus(),
115 110
                 Arrays.asList(
116 111
                         WindowComponent.TEXTAREA.getIdentifier(),
117 112
                         WindowComponent.INPUTFIELD.getIdentifier()));
118 113
 
119
-        this.eventBus = eventBus;
120 114
         this.server = newServer;
121 115
         this.host = newHost;
122 116
         this.nickname = server.parseHostmask(host)[0];
@@ -148,7 +142,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
148 142
                 final DisplayableEvent event = new QuerySelfMessageEvent(this, server.getParser().
149 143
                         getLocalClient(), part);
150 144
                 event.setDisplayFormat("querySelfMessage");
151
-                eventBus.post(event);
145
+                getEventBus().post(event);
152 146
             }
153 147
         }
154 148
     }
@@ -188,7 +182,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
188 182
             doNotification("querySelfAction", client, action);
189 183
             final DisplayableEvent event = new QuerySelfActionEvent(this, client, action);
190 184
             event.setDisplayFormat("querySelfAction");
191
-            eventBus.post(event);
185
+            getEventBus().post(event);
192 186
         } else {
193 187
             addLine("actionTooLong", action.length());
194 188
         }
@@ -203,7 +197,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
203 197
 
204 198
         final DisplayableEvent event = new QueryMessageEvent(this, parser.getClient(host), message);
205 199
         event.setDisplayFormat(buff.toString());
206
-        eventBus.post(event);
200
+        getEventBus().post(event);
207 201
 
208 202
         addLine(buff, parts[0], parts[1], parts[2], message);
209 203
     }
@@ -217,7 +211,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
217 211
 
218 212
         final DisplayableEvent event = new QueryActionEvent(this, parser.getClient(host), message);
219 213
         event.setDisplayFormat(buff.toString());
220
-        eventBus.post(event);
214
+        getEventBus().post(event);
221 215
 
222 216
         addLine(buff, parts[0], parts[1], parts[2], message);
223 217
     }
@@ -271,7 +265,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
271 265
 
272 266
             final DisplayableEvent event = new QueryNickchangeEvent(this, oldNick);
273 267
             event.setDisplayFormat("queryNickChanged");
274
-            eventBus.post(event);
268
+            getEventBus().post(event);
275 269
 
276 270
             server.updateQuery(this, oldNick, client.getNickname());
277 271
 
@@ -294,7 +288,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
294 288
 
295 289
             final DisplayableEvent event = new QueryQuitEvent(this, reason);
296 290
             event.setDisplayFormat(format.toString());
297
-            eventBus.post(event);
291
+            getEventBus().post(event);
298 292
 
299 293
             addLine(format, client.getNickname(),
300 294
                     client.getUsername(), client.getHostname(), reason);
@@ -326,7 +320,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
326 320
         }
327 321
 
328 322
         // Trigger action for the window closing
329
-        eventBus.post(new QueryClosedEvent(this));
323
+        getEventBus().post(new QueryClosedEvent(this));
330 324
 
331 325
         // Inform any parents that the window is closing
332 326
         if (server != null) {

+ 1
- 4
src/com/dmdirc/Raw.java View File

@@ -37,8 +37,6 @@ import com.dmdirc.util.URLBuilder;
37 37
 import com.dmdirc.util.annotations.factory.Factory;
38 38
 import com.dmdirc.util.annotations.factory.Unbound;
39 39
 
40
-import com.google.common.eventbus.EventBus;
41
-
42 40
 import java.util.Arrays;
43 41
 import java.util.Date;
44 42
 
@@ -65,13 +63,12 @@ public class Raw extends FrameContainer implements DataInListener, DataOutListen
65 63
             @Unbound final Server newServer,
66 64
             final CommandController commandController,
67 65
             final MessageSinkManager messageSinkManager,
68
-            final EventBus eventBus,
69 66
             final URLBuilder urlBuilder) {
70 67
         super(newServer, "raw", "Raw", "(Raw log)", newServer.getConfigManager(), urlBuilder,
71 68
                 new ServerCommandParser(newServer.getConfigManager(), commandController),
72 69
                 newServer.getTabCompleter(),
73 70
                 messageSinkManager,
74
-                eventBus,
71
+                newServer.getEventBus(),
75 72
                 Arrays.asList(
76 73
                         WindowComponent.TEXTAREA.getIdentifier(),
77 74
                         WindowComponent.INPUTFIELD.getIdentifier()));

+ 7
- 10
src/com/dmdirc/Server.java View File

@@ -174,8 +174,6 @@ public class Server extends FrameContainer implements ConfigChangeListener,
174 174
     private final QueryFactory queryFactory;
175 175
     /** Factory to use for creating raw windows. */
176 176
     private final RawFactory rawFactory;
177
-    /** The event bus to despatch events onto. */
178
-    private final EventBus eventBus;
179 177
     /** The config provider to write user settings to. */
180 178
     private final ConfigProvider userSettings;
181 179
     /** The manager to use to add status bar messages. */
@@ -254,7 +252,6 @@ public class Server extends FrameContainer implements ConfigChangeListener,
254 252
         this.queryFactory = queryFactory;
255 253
         this.rawFactory = rawFactory;
256 254
         this.executorService = executorService;
257
-        this.eventBus = eventBus;
258 255
         this.userSettings = userSettings;
259 256
         this.statusBarManager = statusBarManager;
260 257
 
@@ -380,7 +377,7 @@ public class Server extends FrameContainer implements ConfigChangeListener,
380 377
             }
381 378
         }
382 379
 
383
-        eventBus.post(new ServerConnectingEvent(this));
380
+        getEventBus().post(new ServerConnectingEvent(this));
384 381
     }
385 382
 
386 383
     @Override
@@ -538,7 +535,7 @@ public class Server extends FrameContainer implements ConfigChangeListener,
538 535
             final Query newQuery = queryFactory.getQuery(this, host);
539 536
 
540 537
             windowManager.addWindow(this, newQuery, focus);
541
-            eventBus.post(new QueryOpenedEvent(newQuery));
538
+            getEventBus().post(new QueryOpenedEvent(newQuery));
542 539
 
543 540
             getTabCompleter().addEntry(TabCompletionType.QUERY_NICK, nick);
544 541
             queries.put(lnick, newQuery);
@@ -622,7 +619,7 @@ public class Server extends FrameContainer implements ConfigChangeListener,
622 619
             final Channel newChan = channelFactory.getChannel(this, chan, channelConfig);
623 620
 
624 621
             windowManager.addWindow(this, newChan, focus);
625
-            eventBus.post(new ChannelOpenedEvent(newChan));
622
+            getEventBus().post(new ChannelOpenedEvent(newChan));
626 623
 
627 624
             getTabCompleter().addEntry(TabCompletionType.CHANNEL, chan.getName());
628 625
             channels.put(converter.toLowerCase(chan.getName()), newChan);
@@ -1201,7 +1198,7 @@ public class Server extends FrameContainer implements ConfigChangeListener,
1201 1198
 
1202 1199
         final ServerNumericEvent event = new ServerNumericEvent(this, numeric, tokens);
1203 1200
         event.setDisplayFormat(target.toString());
1204
-        eventBus.post(event);
1201
+        getEventBus().post(event);
1205 1202
 
1206 1203
         handleNotification(event.getDisplayFormat(), (Object[]) tokens);
1207 1204
     }
@@ -1230,7 +1227,7 @@ public class Server extends FrameContainer implements ConfigChangeListener,
1230 1227
 
1231 1228
         handleNotification("socketClosed", getAddress());
1232 1229
 
1233
-        eventBus.post(new ServerDisconnectedEvent(this));
1230
+        getEventBus().post(new ServerDisconnectedEvent(this));
1234 1231
 
1235 1232
         eventHandler.unregisterCallbacks();
1236 1233
 
@@ -1337,7 +1334,7 @@ public class Server extends FrameContainer implements ConfigChangeListener,
1337 1334
                 }
1338 1335
             }
1339 1336
 
1340
-            eventBus.post(new ServerConnectErrorEvent(this, description));
1337
+            getEventBus().post(new ServerConnectErrorEvent(this, description));
1341 1338
 
1342 1339
             handleNotification("connectError", getAddress(), description);
1343 1340
 
@@ -1418,7 +1415,7 @@ public class Server extends FrameContainer implements ConfigChangeListener,
1418 1415
             }, whoTime, whoTime, TimeUnit.MILLISECONDS);
1419 1416
         }
1420 1417
 
1421
-        eventBus.post(new ServerConnectedEvent(this));
1418
+        getEventBus().post(new ServerConnectedEvent(this));
1422 1419
     }
1423 1420
 
1424 1421
     /**

+ 1
- 1
src/com/dmdirc/commandparser/commands/global/OpenWindow.java View File

@@ -129,7 +129,7 @@ public class OpenWindow extends Command implements IntelligentCommand {
129 129
                     windowManager.addWindow(newWindow);
130 130
                 } else {
131 131
                     newWindow = new CustomWindow(args.getArguments()[start], title, parent,
132
-                            urlBuilder, eventBus);
132
+                            urlBuilder);
133 133
                     windowManager.addWindow(parent, newWindow);
134 134
                 }
135 135
             } else {

+ 2
- 9
src/com/dmdirc/messages/CustomWindowMessageSink.java View File

@@ -28,8 +28,6 @@ import com.dmdirc.Server;
28 28
 import com.dmdirc.ui.WindowManager;
29 29
 import com.dmdirc.util.URLBuilder;
30 30
 
31
-import com.google.common.eventbus.EventBus;
32
-
33 31
 import java.util.Date;
34 32
 import java.util.regex.Pattern;
35 33
 
@@ -44,23 +42,18 @@ public class CustomWindowMessageSink implements MessageSink {
44 42
     private final WindowManager windowManager;
45 43
     /** The URL builder to use when finding icons. */
46 44
     private final URLBuilder urlBuilder;
47
-    /** The bus to despatch events on. */
48
-    private final EventBus eventBus;
49 45
 
50 46
     /**
51 47
      * Creates a new custom window message sink.
52 48
      *
53 49
      * @param windowManager Window management
54 50
      * @param urlBuilder    The URL builder to use when finding icons.
55
-     * @param eventBus      The bus to despatch events on.
56 51
      */
57 52
     public CustomWindowMessageSink(
58 53
             final WindowManager windowManager,
59
-            final URLBuilder urlBuilder,
60
-            final EventBus eventBus) {
54
+            final URLBuilder urlBuilder) {
61 55
         this.windowManager = windowManager;
62 56
         this.urlBuilder = urlBuilder;
63
-        this.eventBus = eventBus;
64 57
     }
65 58
 
66 59
     @Override
@@ -78,7 +71,7 @@ public class CustomWindowMessageSink implements MessageSink {
78 71
 
79 72
         if (targetWindow == null) {
80 73
             targetWindow = new CustomWindow(patternMatches[0], patternMatches[0],
81
-                    (Server) source.getConnection(), urlBuilder, eventBus);
74
+                    (Server) source.getConnection(), urlBuilder);
82 75
             windowManager.addWindow((Server) source.getConnection(), targetWindow);
83 76
         }
84 77
 

+ 2
- 6
src/com/dmdirc/messages/MessageSinkManager.java View File

@@ -29,8 +29,6 @@ import com.dmdirc.ui.WindowManager;
29 29
 import com.dmdirc.ui.core.components.StatusBarManager;
30 30
 import com.dmdirc.util.URLBuilder;
31 31
 
32
-import com.google.common.eventbus.EventBus;
33
-
34 32
 import java.util.ArrayList;
35 33
 import java.util.Date;
36 34
 import java.util.List;
@@ -129,18 +127,16 @@ public class MessageSinkManager {
129 127
      * @param statusBarManager The status bar manager to give to status-bar related sinks.
130 128
      * @param windowManager    The window manager to give to sinks that iterate windows.
131 129
      * @param urlBuilder       The URL builder to use when finding icons.
132
-     * @param eventBus         The bus to despatch events on.
133 130
      */
134 131
     public void loadDefaultSinks(
135 132
             final StatusBarManager statusBarManager,
136 133
             final WindowManager windowManager,
137
-            final URLBuilder urlBuilder,
138
-            final EventBus eventBus) {
134
+            final URLBuilder urlBuilder) {
139 135
         // TODO: Dependency inject all these.
140 136
         addSink(new AllMessageSink());
141 137
         addSink(new ChannelMessageSink());
142 138
         addSink(new CommonChanelsMessageSink());
143
-        addSink(new CustomWindowMessageSink(windowManager, urlBuilder, eventBus));
139
+        addSink(new CustomWindowMessageSink(windowManager, urlBuilder));
144 140
         addSink(new ForkMessageSink());
145 141
         addSink(new FormatMessageSink());
146 142
         addSink(new GroupMessageSink());

Loading…
Cancel
Save