Преглед на файлове

Move some more formats over to events.

This allows us to remove a fair chunk of the notification
handling functionality in FrameContainer.

Issue 426
pull/612/head
Chris Smith преди 8 години
родител
ревизия
4b61733f0c

+ 24
- 10
res/com/dmdirc/ui/messages/format.yml Целия файл

@@ -41,6 +41,12 @@ ServerAuthNoticeEvent:
41 41
 ServerInviteReceivedEvent:
42 42
   format: "* You have been invited to {{channel}} by {{user.nickname}}."
43 43
   colour: 2
44
+ServerUserModesEvent:
45
+  format: "* User modes are: {{modes}}."
46
+  colour: 3
47
+ServerNickChangeEvent:
48
+  format: "* You are now known as {{newNick}}."
49
+  colour: 3
44 50
 ServerErrorEvent:
45 51
   format: "ERROR: {{reason}}"
46 52
   colour: 4
@@ -53,6 +59,24 @@ ServerNoticeEvent:
53 59
 ServerServerNoticeEvent:
54 60
   format: "-{{user.nickname}}- {{message}}"
55 61
   colour: 5
62
+ServerUnknownMessageEvent:
63
+  format: "<[{{sender}}:{{target}}]> {{message}}"
64
+  colour: 5
65
+ServerUnknownNoticeEvent:
66
+  format: "-[{{sender}}:{{target}}]- {{message}}"
67
+  colour: 5
68
+ServerUnknownActionEvent:
69
+  format: "* [{{sender}}:{{target}}] {{message}}"
70
+  colour: 5
71
+ServerWallopsEvent:
72
+  format: "${{user.nickname}}$ {{message}}"
73
+  colour: 5
74
+ServerWallusersEvent:
75
+  format: "!{{user.nickname}}! {{message}}"
76
+  colour: 5
77
+ServerWalldesyncEvent:
78
+  format: "/{{user.nickname}}/ {{message}}"
79
+  colour: 5
56 80
 
57 81
 ################## Channel join/part/quit events ###################################################
58 82
 
@@ -178,12 +202,6 @@ CommandOutputEvent:
178 202
   format: "{{message}}"
179 203
 
180 204
 ################## TODO ############################################################################
181
-#  userModeChanged=3* %1$s sets user mode: %4$s.
182
-#  userNoModes=3* No user modes.
183
-#  userModeDiscovered=3* User modes are: %4$s.
184
-#  walluser=5!%1$s! %4$s
185
-#  wallop=5$%1$s$ %4$s
186
-#  walldesync=5/%1$s/ %4$s
187 205
 #  selfCTCP=4->- [%1$s] %2$s
188 206
 #  selfNotice=5>%1$s> %2$s
189 207
 #  selfMessage=>[%1$s]> %2$s
@@ -196,10 +214,6 @@ CommandOutputEvent:
196 214
 #  actionTooLong=Warning: action too long to be sent
197 215
 #  tabCompletion=14Multiple possibilities: %1$s
198 216
 #  serverUnknownProtocol=4Unknown protocol '%1$s'. Unable to connect.
199
-#  selfNickChange=3* You are now known as %2$s.
200
-#  unknownNotice=5-[%1$s:%2$s]- %3$s
201
-#  unknownMessage=5<[%1$s:%2$s]> %3$s
202
-#  unknownNotice=5* [%1$s:%2$s] %3$s
203 217
 #  commandUsage=7Usage: %1$s%2$s %3$s
204 218
 #  numeric_006=%4$s
205 219
 #  numeric_007=%4$s

+ 0
- 39
src/com/dmdirc/Channel.java Целия файл

@@ -413,45 +413,6 @@ public class Channel extends FrameContainer implements GroupChat {
413 413
         return res;
414 414
     }
415 415
 
416
-    @Override
417
-    protected boolean processNotificationArg(final Object arg, final List<Object> args) {
418
-        if (arg instanceof User) {
419
-            final User clientInfo = (User) arg;
420
-            args.add(clientInfo.getNickname());
421
-            args.add(clientInfo.getUsername());
422
-            args.add(clientInfo.getHostname());
423
-
424
-            return true;
425
-        } else if (arg instanceof GroupChatUser) {
426
-            final GroupChatUser clientInfo = (GroupChatUser) arg;
427
-
428
-            args.addAll(Arrays.asList(getDetails(clientInfo)));
429
-
430
-            return true;
431
-        } else if (arg instanceof Topic) {
432
-            // Format topics
433
-            final Topic topic = (Topic) arg;
434
-            args.add("");
435
-            args.add(topic.getClient().map(GroupChatUser::getNickname).orElse("Unknown"));
436
-            args.add(topic.getClient().flatMap(GroupChatUser::getUsername).orElse(""));
437
-            args.add(topic.getClient().flatMap(GroupChatUser::getHostname).orElse(""));
438
-            args.add(topic.getTopic());
439
-            args.add(topic.getDate().getTime());
440
-
441
-            return true;
442
-        } else {
443
-            // Everything else - default formatting
444
-
445
-            return super.processNotificationArg(arg, args);
446
-        }
447
-    }
448
-
449
-    @Override
450
-    protected void modifyNotificationArgs(final List<Object> actionArgs,
451
-            final List<Object> messageArgs) {
452
-        messageArgs.add(channelInfo.getName());
453
-    }
454
-
455 416
     // ---------------------------------------------------- TOPIC HANDLING -----
456 417
     /**
457 418
      * Adds the specified topic to this channel's topic list.

+ 0
- 52
src/com/dmdirc/FrameContainer.java Целия файл

@@ -421,58 +421,6 @@ public abstract class FrameContainer implements WindowModel {
421 421
         return lines;
422 422
     }
423 423
 
424
-    /**
425
-     * Processes and displays a notification.
426
-     *
427
-     * @param messageType The name of the formatter to be used for the message
428
-     * @param args        The arguments for the message
429
-     *
430
-     * @return True if any further behaviour should be executed, false otherwise
431
-     */
432
-    public boolean doNotification(final String messageType, final Object... args) {
433
-        final List<Object> messageArgs = new ArrayList<>();
434
-        final List<Object> actionArgs = new ArrayList<>();
435
-
436
-        actionArgs.add(this);
437
-
438
-        for (Object arg : args) {
439
-            actionArgs.add(arg);
440
-
441
-            if (!processNotificationArg(arg, messageArgs)) {
442
-                messageArgs.add(arg);
443
-            }
444
-        }
445
-
446
-        modifyNotificationArgs(actionArgs, messageArgs);
447
-
448
-        handleNotification(new Date(), messageType, messageArgs.toArray());
449
-
450
-        return true;
451
-    }
452
-
453
-    /**
454
-     * Allows subclasses to modify the lists of arguments for notifications.
455
-     *
456
-     * @param actionArgs  The list of arguments to be passed to the actions system
457
-     * @param messageArgs The list of arguments to be passed to the formatter
458
-     */
459
-    protected void modifyNotificationArgs(final List<Object> actionArgs,
460
-            final List<Object> messageArgs) {
461
-        // Do nothing
462
-    }
463
-
464
-    /**
465
-     * Allows subclasses to process specific types of notification arguments.
466
-     *
467
-     * @param arg  The argument to be processed
468
-     * @param args The list of arguments that any data should be appended to
469
-     *
470
-     * @return True if the arg has been processed, false otherwise
471
-     */
472
-    protected boolean processNotificationArg(final Object arg, final List<Object> args) {
473
-        return false;
474
-    }
475
-
476 424
     /**
477 425
      * Handles general server notifications (i.e., ones not tied to a specific window). The user can
478 426
      * select where the notifications should go in their config.

+ 0
- 14
src/com/dmdirc/Query.java Целия файл

@@ -51,7 +51,6 @@ import com.dmdirc.ui.messages.sink.MessageSinkManager;
51 51
 
52 52
 import java.awt.Toolkit;
53 53
 import java.util.Arrays;
54
-import java.util.List;
55 54
 import java.util.Optional;
56 55
 
57 56
 import net.engio.mbassy.listener.Handler;
@@ -113,19 +112,6 @@ public class Query extends FrameContainer implements PrivateChat {
113 112
         });
114 113
     }
115 114
 
116
-    @Override
117
-    protected boolean processNotificationArg(final Object arg, final List<Object> args) {
118
-        if (arg instanceof User) {
119
-            final User clientInfo = (User) arg;
120
-            args.add(clientInfo.getNickname());
121
-            args.add(clientInfo.getUsername());
122
-            args.add(clientInfo.getHostname());
123
-            return true;
124
-        } else {
125
-            return super.processNotificationArg(arg, args);
126
-        }
127
-    }
128
-
129 115
     @Override
130 116
     public int getMaxLineLength() {
131 117
         // TODO: The parser layer should abstract this

+ 0
- 13
src/com/dmdirc/Server.java Целия файл

@@ -792,19 +792,6 @@ public class Server extends FrameContainer implements Connection {
792 792
         return Optional.of(this);
793 793
     }
794 794
 
795
-    @Override
796
-    protected boolean processNotificationArg(final Object arg, final List<Object> args) {
797
-        if (arg instanceof User) {
798
-            final User clientInfo = (User) arg;
799
-            args.add(clientInfo.getNickname());
800
-            args.add(clientInfo.getUsername());
801
-            args.add(clientInfo.getHostname());
802
-            return true;
803
-        } else {
804
-            return super.processNotificationArg(arg, args);
805
-        }
806
-    }
807
-
808 795
     @Override
809 796
     public void updateTitle() {
810 797
         synchronized (myStateLock) {

+ 18
- 39
src/com/dmdirc/ServerEventHandler.java Целия файл

@@ -347,11 +347,8 @@ public class ServerEventHandler extends EventHandler {
347 347
 
348 348
     @Handler
349 349
     public void onUnknownNotice(final UnknownNoticeEvent event) {
350
-        final ServerUnknownNoticeEvent
351
-                coreEvent = new ServerUnknownNoticeEvent(owner, event.getHost(), event.getTarget(),
352
-                event.getMessage());
353
-        final String format = EventUtils.postDisplayable(eventBus, coreEvent, "unknownNotice");
354
-        owner.doNotification(format, event.getHost(), event.getTarget(), event.getMessage());
350
+        eventBus.publishAsync(new ServerUnknownNoticeEvent(
351
+                owner, event.getHost(), event.getTarget(),event.getMessage()));
355 352
     }
356 353
 
357 354
     @Handler
@@ -362,10 +359,8 @@ public class ServerEventHandler extends EventHandler {
362 359
                     new QuerySelfMessageEvent(owner.getQuery(event.getTarget()), owner.getLocalUser().get(),
363 360
                             event.getMessage()));
364 361
         } else {
365
-            final ServerUnknownMessageEvent coreEvent
366
-                    = new ServerUnknownMessageEvent(owner, event.getHost(), event.getTarget(), event.getMessage());
367
-            final String format = EventUtils.postDisplayable(eventBus, coreEvent, "unknownMessage");
368
-            owner.doNotification(format, event.getHost(), event.getTarget(), event.getMessage());
362
+            eventBus.publishAsync(new ServerUnknownMessageEvent(
363
+                    owner, event.getHost(), event.getTarget(), event.getMessage()));
369 364
         }
370 365
     }
371 366
 
@@ -377,28 +372,21 @@ public class ServerEventHandler extends EventHandler {
377 372
                     new QuerySelfActionEvent(owner.getQuery(event.getTarget()), owner.getLocalUser().get(),
378 373
                             event.getMessage()));
379 374
         } else {
380
-            final ServerUnknownActionEvent coreEvent
381
-                    = new ServerUnknownActionEvent(owner, event.getHost(), event.getTarget(), event.getMessage());
382
-            final String format = EventUtils.postDisplayable(eventBus, coreEvent, "unknownAction");
383
-            owner.doNotification(format, event.getHost(), event.getTarget(), event.getMessage());
375
+            eventBus.publishAsync(new ServerUnknownActionEvent(
376
+                    owner, event.getHost(), event.getTarget(), event.getMessage()));
384 377
         }
385 378
     }
386 379
 
387 380
     @Handler
388 381
     public void onUserModeChanged(final UserModeChangeEvent event) {
389
-        final ServerUserModesEvent coreEvent = new ServerUserModesEvent(owner,
390
-                owner.getUser(event.getClient().getHostname()), event.getModes());
391
-        final String format = EventUtils.postDisplayable(eventBus, coreEvent, "userModeChanged");
392
-        owner.doNotification(format, owner.getUser(event.getClient().getHostname()), event.getModes());
382
+        eventBus.publishAsync(new ServerUserModesEvent(
383
+                owner, owner.getUser(event.getClient().getHostname()), event.getModes()));
393 384
     }
394 385
 
395 386
     @Handler
396 387
     public void onUserModeDiscovered(final UserModeDiscoveryEvent event) {
397
-        final ServerUserModesEvent coreEvent = new ServerUserModesEvent(owner,
398
-                owner.getUser(event.getClient().getHostname()), event.getModes());
399
-        final String format = EventUtils.postDisplayable(eventBus, coreEvent,
400
-                event.getModes().isEmpty() || "+".equals(event.getModes()) ? "userNoModes" : "userModeDiscovered");
401
-        owner.doNotification(format, owner.getUser(event.getClient().getHostname()), event.getModes());
388
+        eventBus.publishAsync(new ServerUserModesEvent(
389
+                owner, owner.getUser(event.getClient().getHostname()), event.getModes()));
402 390
     }
403 391
 
404 392
     @Handler
@@ -412,36 +400,27 @@ public class ServerEventHandler extends EventHandler {
412 400
 
413 401
     @Handler
414 402
     public void onWallop(final WallopEvent event) {
415
-        final ServerWallopsEvent coreEvent = new ServerWallopsEvent(owner,
416
-                owner.getUser(event.getHost()), event.getMessage());
417
-        final String format = EventUtils.postDisplayable(eventBus, coreEvent, "wallop");
418
-        owner.doNotification(format, owner.getUser(event.getHost()), event.getMessage());
419
-
403
+        eventBus.publishAsync(new ServerWallopsEvent(owner,
404
+                owner.getUser(event.getHost()), event.getMessage()));
420 405
     }
421 406
 
422 407
     @Handler
423 408
     public void onWalluser(final WalluserEvent event) {
424
-        final ServerWallusersEvent coreEvent = new ServerWallusersEvent(owner,
425
-                owner.getLocalUser().get(), event.getMessage());
426
-        final String format = EventUtils.postDisplayable(eventBus, coreEvent, "walluser");
427
-        owner.doNotification(format, owner.getUser(event.getHost()), event.getMessage());
409
+        eventBus.publishAsync(new ServerWallusersEvent(owner,
410
+                owner.getLocalUser().get(), event.getMessage()));
428 411
     }
429 412
 
430 413
     @Handler
431 414
     public void onWallDesync(final WallDesyncEvent event) {
432
-        final ServerWalldesyncEvent coreEvent = new ServerWalldesyncEvent(owner,
433
-                owner.getLocalUser().get(), event.getMessage());
434
-        final String format = EventUtils.postDisplayable(eventBus, coreEvent, "walldesync");
435
-        owner.doNotification(format, owner.getUser(event.getHost()), event.getMessage());
415
+        eventBus.publishAsync(new ServerWalldesyncEvent(owner,
416
+                owner.getLocalUser().get(), event.getMessage()));
436 417
     }
437 418
 
438 419
     @Handler
439 420
     public void onNickChanged(final NickChangeEvent event) {
440 421
         if (event.getClient().equals(owner.getParser().get().getLocalClient())) {
441
-            final ServerNickChangeEvent coreEvent = new ServerNickChangeEvent(owner,
442
-                    event.getOldNick(), event.getClient().getNickname());
443
-            final String format = EventUtils.postDisplayable(eventBus, coreEvent, "selfNickChange");
444
-            owner.doNotification(format, event.getOldNick(), event.getClient().getNickname());
422
+            eventBus.publishAsync(new ServerNickChangeEvent(owner,
423
+                    event.getOldNick(), event.getClient().getNickname()));
445 424
             owner.updateTitle();
446 425
         }
447 426
     }

+ 7
- 8
src/com/dmdirc/events/ServerUserModesEvent.java Целия файл

@@ -31,28 +31,27 @@ import com.dmdirc.interfaces.User;
31 31
 public class ServerUserModesEvent extends ServerDisplayableEvent {
32 32
 
33 33
     private final User user;
34
-    private final String message;
34
+    private final String modes;
35 35
 
36 36
     public ServerUserModesEvent(final long timestamp, final Connection connection, final User user,
37
-            final String message) {
37
+            final String modes) {
38 38
         super(timestamp, connection);
39 39
         this.user = user;
40
-        this.message = message;
40
+        this.modes = modes;
41 41
     }
42 42
 
43
-    public ServerUserModesEvent(final Connection connection, final User user, final String
44
-            message) {
43
+    public ServerUserModesEvent(final Connection connection, final User user, final String modes) {
45 44
         super(connection);
46 45
         this.user = user;
47
-        this.message = message;
46
+        this.modes = modes;
48 47
     }
49 48
 
50 49
     public User getUser() {
51 50
         return user;
52 51
     }
53 52
 
54
-    public String getMessage() {
55
-        return message;
53
+    public String getModes() {
54
+        return modes;
56 55
     }
57 56
 
58 57
 }

Loading…
Отказ
Запис