瀏覽代碼

Add some more server events.

Change-Id: I166452c8596b841ad6c72c11f215fa3a085f8d0d
Depends-On: Ib12542d236757d76540d57ff54341e3b73ceb598
Reviewed-on: http://gerrit.dmdirc.com/3438
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
changes/38/3438/9
Greg Holmes 10 年之前
父節點
當前提交
2dc8ce46f6

+ 32
- 32
src/com/dmdirc/addons/identd/IdentdManager.java 查看文件

@@ -23,20 +23,22 @@
23 23
 package com.dmdirc.addons.identd;
24 24
 
25 25
 import com.dmdirc.ClientModule.GlobalConfig;
26
-import com.dmdirc.actions.CoreActionType;
27
-import com.dmdirc.interfaces.ActionController;
28
-import com.dmdirc.interfaces.ActionListener;
26
+import com.dmdirc.events.ServerConnectErrorEvent;
27
+import com.dmdirc.events.ServerConnectedEvent;
28
+import com.dmdirc.events.ServerConnectingEvent;
29 29
 import com.dmdirc.interfaces.Connection;
30
-import com.dmdirc.interfaces.actions.ActionType;
31 30
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
32 31
 import com.dmdirc.plugins.PluginDomain;
33 32
 
33
+import com.google.common.eventbus.EventBus;
34
+import com.google.common.eventbus.Subscribe;
35
+
34 36
 import java.util.ArrayList;
35 37
 import java.util.List;
36 38
 
37 39
 import javax.inject.Inject;
38 40
 
39
-public class IdentdManager implements ActionListener {
41
+public class IdentdManager {
40 42
 
41 43
     /** List of all the connections that need ident replies. */
42 44
     private final List<Connection> connections;
@@ -46,18 +48,18 @@ public class IdentdManager implements ActionListener {
46 48
     private final String domain;
47 49
     /** Ident server. */
48 50
     private final IdentdServer server;
49
-    /** Action controller to register action listeners with. */
50
-    private final ActionController actionController;
51
+    /** Event bus to subscribe to events on. */
52
+    private final EventBus eventBus;
51 53
 
52 54
     @Inject
53 55
     public IdentdManager(@GlobalConfig final AggregateConfigProvider config,
54 56
             @PluginDomain(IdentdPlugin.class) final String domain,
55
-            final IdentdServer server, final ActionController actionController) {
57
+            final IdentdServer server, final EventBus eventBus) {
56 58
         connections = new ArrayList<>();
57 59
         this.config = config;
58 60
         this.domain = domain;
59 61
         this.server = server;
60
-        this.actionController = actionController;
62
+        this.eventBus = eventBus;
61 63
     }
62 64
 
63 65
     /**
@@ -65,10 +67,7 @@ public class IdentdManager implements ActionListener {
65 67
      */
66 68
     public void onLoad() {
67 69
         // Add action hooks
68
-        actionController.registerListener(this,
69
-                CoreActionType.SERVER_CONNECTED,
70
-                CoreActionType.SERVER_CONNECTING,
71
-                CoreActionType.SERVER_CONNECTERROR);
70
+        eventBus.register(this);
72 71
 
73 72
         if (config.getOptionBool(domain, "advanced.alwaysOn")) {
74 73
             server.startServer();
@@ -79,38 +78,39 @@ public class IdentdManager implements ActionListener {
79 78
      * Called when this plugin is unloaded.
80 79
      */
81 80
     public void onUnload() {
82
-        actionController.unregisterListener(this);
81
+        eventBus.unregister(this);
83 82
         server.stopServer();
84 83
         connections.clear();
85 84
     }
86 85
 
87
-    /**
88
-     * Process an event of the specified type.
89
-     *
90
-     * @param type      The type of the event to process
91
-     * @param format    Format of messages that are about to be sent. (May be null)
92
-     * @param arguments The arguments for the event
93
-     */
94
-    @Override
95
-    public void processEvent(final ActionType type, final StringBuffer format,
96
-            final Object... arguments) {
97
-        if (type == CoreActionType.SERVER_CONNECTING) {
98
-            synchronized (connections) {
86
+    @Subscribe
87
+    public void handleServerConnecting(final ServerConnectingEvent event) {
88
+        synchronized (connections) {
99 89
                 if (connections.isEmpty()) {
100 90
                     server.startServer();
101 91
                 }
102
-                connections.add((Connection) arguments[0]);
92
+                connections.add(event.getConnection());
103 93
             }
104
-        } else if (type == CoreActionType.SERVER_CONNECTED
105
-                || type == CoreActionType.SERVER_CONNECTERROR) {
106
-            synchronized (connections) {
107
-                connections.remove((Connection) arguments[0]);
94
+    }
95
+
96
+    @Subscribe
97
+    public void handleServerConnected(final ServerConnectedEvent event) {
98
+        handleServerRemoved(event.getConnection());
99
+    }
100
+
101
+    @Subscribe
102
+    public void handleServerConnectError(final ServerConnectErrorEvent event) {
103
+        handleServerRemoved(event.getConnection());
104
+    }
105
+
106
+    private void handleServerRemoved(final Connection connection) {
107
+        synchronized (connections) {
108
+                connections.remove(connection);
108 109
 
109 110
                 if (connections.isEmpty() && !config.getOptionBool(domain, "advanced.alwaysOn")) {
110 111
                     server.stopServer();
111 112
                 }
112 113
             }
113
-        }
114 114
     }
115 115
 
116 116
 }

+ 57
- 32
src/com/dmdirc/addons/lagdisplay/LagDisplayManager.java 查看文件

@@ -24,6 +24,7 @@ package com.dmdirc.addons.lagdisplay;
24 24
 
25 25
 import com.dmdirc.ClientModule.GlobalConfig;
26 26
 import com.dmdirc.FrameContainer;
27
+import com.dmdirc.Server;
27 28
 import com.dmdirc.ServerState;
28 29
 import com.dmdirc.actions.ActionManager;
29 30
 import com.dmdirc.actions.CoreActionType;
@@ -31,6 +32,8 @@ import com.dmdirc.addons.ui_swing.SelectionListener;
31 32
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
32 33
 import com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar;
33 34
 import com.dmdirc.addons.ui_swing.interfaces.ActiveFrameManager;
35
+import com.dmdirc.events.ServerDisconnectedEvent;
36
+import com.dmdirc.events.ServerNumericEvent;
34 37
 import com.dmdirc.interfaces.ActionListener;
35 38
 import com.dmdirc.interfaces.Connection;
36 39
 import com.dmdirc.interfaces.actions.ActionType;
@@ -39,6 +42,9 @@ import com.dmdirc.interfaces.config.ConfigChangeListener;
39 42
 import com.dmdirc.plugins.PluginDomain;
40 43
 import com.dmdirc.util.collections.RollingList;
41 44
 
45
+import com.google.common.eventbus.EventBus;
46
+import com.google.common.eventbus.Subscribe;
47
+
42 48
 import java.util.Date;
43 49
 import java.util.HashMap;
44 50
 import java.util.Map;
@@ -54,6 +60,8 @@ import javax.inject.Singleton;
54 60
 @Singleton
55 61
 public class LagDisplayManager implements ActionListener, ConfigChangeListener, SelectionListener {
56 62
 
63
+    /** Event bus to receive events on. */
64
+    private final EventBus eventBus;
57 65
     /** Active frame manager. */
58 66
     private final ActiveFrameManager activeFrameManager;
59 67
     /** Status bar to add panels to. */
@@ -78,11 +86,13 @@ public class LagDisplayManager implements ActionListener, ConfigChangeListener,
78 86
 
79 87
     @Inject
80 88
     public LagDisplayManager(
89
+            final EventBus eventBus,
81 90
             final ActiveFrameManager activeFrameManager,
82 91
             final SwingStatusBar statusBar,
83 92
             final Provider<LagDisplayPanel> panelProvider,
84 93
             @PluginDomain(LagDisplayPlugin.class) final String domain,
85 94
             @GlobalConfig final AggregateConfigProvider globalConfig) {
95
+        this.eventBus = eventBus;
86 96
         this.activeFrameManager = activeFrameManager;
87 97
         this.statusBar = statusBar;
88 98
         this.panelProvider = panelProvider;
@@ -98,8 +108,8 @@ public class LagDisplayManager implements ActionListener, ConfigChangeListener,
98 108
         readConfig();
99 109
         ActionManager.getActionManager().registerListener(this,
100 110
                 CoreActionType.SERVER_GOTPING, CoreActionType.SERVER_NOPING,
101
-                CoreActionType.SERVER_DISCONNECTED,
102
-                CoreActionType.SERVER_PINGSENT, CoreActionType.SERVER_NUMERIC);
111
+                CoreActionType.SERVER_PINGSENT);
112
+        eventBus.register(this);
103 113
     }
104 114
 
105 115
     public void unload() {
@@ -164,6 +174,51 @@ public class LagDisplayManager implements ActionListener, ConfigChangeListener,
164 174
         panel.refreshDialog();
165 175
     }
166 176
 
177
+    @Subscribe
178
+    public void handleServerNumeric(final ServerNumericEvent event) {
179
+        if (event.getNumeric() != 421) {
180
+            return;
181
+        }
182
+        boolean useAlternate = ((Server) event.getConnection()).getConfigManager()
183
+                .getOptionBool(domain, "usealternate");
184
+        final TextFrame activeFrame = activeFrameManager.getActiveFrame();
185
+        final FrameContainer active = activeFrame == null ? null : activeFrame.getContainer();
186
+        final boolean isActive = active != null && event.getConnection().equals(active.
187
+                getConnection());
188
+        final String[] args = event.getArgs();
189
+        if (useAlternate && args[3].startsWith("LAGCHECK_")) {
190
+            try {
191
+                final long sent = Long.parseLong(args[3].substring(9));
192
+                final Long duration = new Date().getTime() - sent;
193
+                final String value = formatTime(duration);
194
+                pings.put(event.getConnection(), value);
195
+                getHistory(event.getConnection()).add(duration);
196
+                if (isActive) {
197
+                    panel.getComponent().setText(value);
198
+                }
199
+            } catch (NumberFormatException ex) {
200
+                pings.remove(event.getConnection());
201
+            }
202
+            event.setDisplayFormat("");
203
+
204
+            panel.refreshDialog();
205
+        }
206
+    }
207
+
208
+    @Subscribe
209
+    public void handleServerDisconnected(final ServerDisconnectedEvent event) {
210
+        final TextFrame activeFrame = activeFrameManager.getActiveFrame();
211
+        final FrameContainer active = activeFrame == null ? null : activeFrame.getContainer();
212
+        final boolean isActive = active != null && event.getConnection().equals(active.
213
+                getConnection());
214
+        if (isActive) {
215
+                panel.getComponent().setText("Not connected");
216
+                pings.remove(event.getConnection());
217
+            }
218
+
219
+            panel.refreshDialog();
220
+    }
221
+
167 222
     @Override
168 223
     public void processEvent(final ActionType type, final StringBuffer format,
169 224
             final Object... arguments) {
@@ -205,40 +260,10 @@ public class LagDisplayManager implements ActionListener, ConfigChangeListener,
205 260
                 panel.getComponent().setText(value);
206 261
             }
207 262
 
208
-            panel.refreshDialog();
209
-        } else if (type.equals(CoreActionType.SERVER_DISCONNECTED)) {
210
-            if (isActive) {
211
-                panel.getComponent().setText("Not connected");
212
-                pings.remove(arguments[0]);
213
-            }
214
-
215 263
             panel.refreshDialog();
216 264
         } else if (useAlternate && type.equals(CoreActionType.SERVER_PINGSENT)) {
217 265
             ((Connection) arguments[0]).getParser().sendRawMessage("LAGCHECK_" + new Date().
218 266
                     getTime());
219
-        } else if (useAlternate && type.equals(CoreActionType.SERVER_NUMERIC)
220
-                && ((Integer) arguments[1]) == 421
221
-                && ((String[]) arguments[2])[3].startsWith("LAGCHECK_")) {
222
-            try {
223
-                final long sent = Long.parseLong(((String[]) arguments[2])[3].substring(9));
224
-                final Long duration = new Date().getTime() - sent;
225
-                final String value = formatTime(duration);
226
-
227
-                pings.put((Connection) arguments[0], value);
228
-                getHistory(((Connection) arguments[0])).add(duration);
229
-
230
-                if (isActive) {
231
-                    panel.getComponent().setText(value);
232
-                }
233
-            } catch (NumberFormatException ex) {
234
-                pings.remove(arguments[0]);
235
-            }
236
-
237
-            if (format != null) {
238
-                format.delete(0, format.length());
239
-            }
240
-
241
-            panel.refreshDialog();
242 267
         }
243 268
     }
244 269
 

+ 16
- 18
src/com/dmdirc/addons/parserdebug/ParserDebugManager.java 查看文件

@@ -22,41 +22,42 @@
22 22
 
23 23
 package com.dmdirc.addons.parserdebug;
24 24
 
25
-import com.dmdirc.actions.CoreActionType;
26
-import com.dmdirc.interfaces.ActionController;
27
-import com.dmdirc.interfaces.ActionListener;
25
+import com.dmdirc.events.ServerDisconnectedEvent;
28 26
 import com.dmdirc.interfaces.Connection;
29
-import com.dmdirc.interfaces.actions.ActionType;
30 27
 import com.dmdirc.parser.common.CallbackNotFoundException;
31 28
 import com.dmdirc.parser.interfaces.Parser;
32 29
 import com.dmdirc.parser.interfaces.callbacks.DebugInfoListener;
33 30
 import com.dmdirc.ui.WindowManager;
34 31
 import com.dmdirc.util.URLBuilder;
35 32
 
33
+import com.google.common.eventbus.EventBus;
34
+import com.google.common.eventbus.Subscribe;
35
+
36 36
 import java.util.Date;
37 37
 import java.util.HashMap;
38 38
 import java.util.Map;
39 39
 
40 40
 import javax.inject.Inject;
41 41
 
42
-public class ParserDebugManager implements ActionListener, DebugInfoListener {
42
+public class ParserDebugManager implements DebugInfoListener {
43 43
 
44
+    /** Event bus to subscribe to events on. */
45
+    private final EventBus eventBus;
44 46
     /** Map of parsers registered. */
45 47
     protected final Map<Parser, DebugWindow> registeredParsers;
46
-    /** Action controller. */
47
-    private final ActionController actionController;
48 48
     /** URL Builder. */
49 49
     private final URLBuilder urlBuilder;
50 50
     /** Window manager. */
51 51
     private final WindowManager windowManager;
52 52
 
53 53
     @Inject
54
-    public ParserDebugManager(final ActionController actionController,
54
+    public ParserDebugManager(
55 55
             final URLBuilder urlBuilder,
56
-            final WindowManager windowManager) {
57
-        this.actionController = actionController;
56
+            final WindowManager windowManager,
57
+            final EventBus eventBus) {
58 58
         this.urlBuilder = urlBuilder;
59 59
         this.windowManager = windowManager;
60
+        this.eventBus = eventBus;
60 61
         registeredParsers = new HashMap<>();
61 62
     }
62 63
 
@@ -64,14 +65,14 @@ public class ParserDebugManager implements ActionListener, DebugInfoListener {
64 65
      * Adds action listener.
65 66
      */
66 67
     public void addActionListener() {
67
-        actionController.registerListener(this, CoreActionType.SERVER_DISCONNECTED);
68
+        eventBus.register(this);
68 69
     }
69 70
 
70 71
     /**
71 72
      * Remove action listener.
72 73
      */
73 74
     public void removeActionListener() {
74
-        actionController.unregisterListener(this);
75
+        eventBus.unregister(this);
75 76
     }
76 77
 
77 78
     /**
@@ -145,15 +146,12 @@ public class ParserDebugManager implements ActionListener, DebugInfoListener {
145 146
         }
146 147
     }
147 148
 
148
-    @Override
149
-    public void processEvent(final ActionType type, final StringBuffer format,
150
-            final Object... arguments) {
151
-        if (type == CoreActionType.SERVER_DISCONNECTED) {
152
-            final Parser parser = ((Connection) arguments[0]).getParser();
149
+    @Subscribe
150
+    public void handleServerDisconnected(final ServerDisconnectedEvent event) {
151
+            final Parser parser = event.getConnection().getParser();
153 152
             if (registeredParsers.containsKey(parser)) {
154 153
                 removeParser(parser, false);
155 154
             }
156
-        }
157 155
     }
158 156
 
159 157
     @Override

+ 29
- 25
src/com/dmdirc/addons/ui_swing/components/statusbar/InviteLabel.java 查看文件

@@ -25,20 +25,23 @@ package com.dmdirc.addons.ui_swing.components.statusbar;
25 25
 import com.dmdirc.ClientModule.GlobalConfig;
26 26
 import com.dmdirc.Invite;
27 27
 import com.dmdirc.ServerManager;
28
-import com.dmdirc.actions.ActionManager;
29
-import com.dmdirc.actions.CoreActionType;
30 28
 import com.dmdirc.addons.ui_swing.MainFrame;
31 29
 import com.dmdirc.addons.ui_swing.SelectionListener;
32 30
 import com.dmdirc.addons.ui_swing.UIUtilities;
33 31
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
34
-import com.dmdirc.interfaces.ActionListener;
32
+import com.dmdirc.events.ServerConnectErrorEvent;
33
+import com.dmdirc.events.ServerConnectedEvent;
34
+import com.dmdirc.events.ServerDisconnectedEvent;
35 35
 import com.dmdirc.interfaces.Connection;
36 36
 import com.dmdirc.interfaces.InviteListener;
37
-import com.dmdirc.interfaces.actions.ActionType;
38 37
 import com.dmdirc.interfaces.ui.StatusBarComponent;
39 38
 import com.dmdirc.ui.IconManager;
40 39
 
40
+import com.google.common.eventbus.EventBus;
41
+import com.google.common.eventbus.Subscribe;
42
+
41 43
 import java.awt.event.ActionEvent;
44
+import java.awt.event.ActionListener;
42 45
 import java.awt.event.MouseEvent;
43 46
 import java.util.Collection;
44 47
 
@@ -52,9 +55,8 @@ import javax.swing.JSeparator;
52 55
 /**
53 56
  * A status bar component to show invites to the user and enable them to accept or dismiss them.
54 57
  */
55
-public class InviteLabel extends StatusbarPopupPanel<JLabel> implements
56
-        StatusBarComponent, InviteListener, ActionListener,
57
-        java.awt.event.ActionListener, SelectionListener {
58
+public class InviteLabel extends StatusbarPopupPanel<JLabel> implements StatusBarComponent,
59
+        InviteListener, ActionListener, SelectionListener {
58 60
 
59 61
     /** A version number for this class. */
60 62
     private static final long serialVersionUID = 1;
@@ -72,12 +74,14 @@ public class InviteLabel extends StatusbarPopupPanel<JLabel> implements
72 74
     /**
73 75
      * Instantiates a new invite label.
74 76
      *
77
+     * @param eventBus      The event bus to subscribe to events on
75 78
      * @param iconManager   The manager to retrieve the invite icon from.
76 79
      * @param serverManager The manager to use to iterate servers.
77 80
      * @param mainFrame     Main frame
78 81
      */
79 82
     @Inject
80 83
     public InviteLabel(
84
+            final EventBus eventBus,
81 85
             @GlobalConfig final IconManager iconManager,
82 86
             final ServerManager serverManager,
83 87
             final MainFrame mainFrame) {
@@ -101,12 +105,7 @@ public class InviteLabel extends StatusbarPopupPanel<JLabel> implements
101 105
         }
102 106
 
103 107
         mainFrame.addSelectionListener(this);
104
-        ActionManager.getActionManager().registerListener(this,
105
-                CoreActionType.SERVER_CONNECTED);
106
-        ActionManager.getActionManager().registerListener(this,
107
-                CoreActionType.SERVER_DISCONNECTED);
108
-        ActionManager.getActionManager().registerListener(this,
109
-                CoreActionType.SERVER_CONNECTERROR);
108
+        eventBus.register(this);
110 109
 
111 110
         update();
112 111
     }
@@ -160,18 +159,23 @@ public class InviteLabel extends StatusbarPopupPanel<JLabel> implements
160 159
         update();
161 160
     }
162 161
 
163
-    @Override
164
-    public void processEvent(final ActionType type, final StringBuffer format,
165
-            final Object... arguments) {
166
-        if (type == CoreActionType.SERVER_CONNECTED) {
167
-            if (arguments[0] instanceof Connection) {
168
-                ((Connection) arguments[0]).addInviteListener(this);
169
-            }
170
-        } else {
171
-            if (arguments[0] instanceof Connection) {
172
-                ((Connection) arguments[0]).removeInviteListener(this);
173
-            }
174
-        }
162
+    @Subscribe
163
+    public void handleServerConnected(final ServerConnectedEvent event) {
164
+        event.getConnection().addInviteListener(this);
165
+    }
166
+
167
+    @Subscribe
168
+    public void handleServerDisconnected(final ServerDisconnectedEvent event) {
169
+        handleServerRemoved(event.getConnection());
170
+    }
171
+
172
+    @Subscribe
173
+    public void handleServerConnectError(final ServerConnectErrorEvent event) {
174
+        handleServerRemoved(event.getConnection());
175
+    }
176
+
177
+    private void handleServerRemoved(final Connection connection) {
178
+        connection.removeInviteListener(this);
175 179
     }
176 180
 
177 181
     /**

Loading…
取消
儲存