Sfoglia il codice sorgente

Initial workon ChannelClient.

pull/274/head
Greg Holmes 9 anni fa
parent
commit
438e65ff0a

+ 41
- 28
src/com/dmdirc/Channel.java Vedi File

@@ -28,9 +28,11 @@ import com.dmdirc.config.ConfigBinding;
28 28
 import com.dmdirc.events.ChannelClosedEvent;
29 29
 import com.dmdirc.events.ChannelSelfActionEvent;
30 30
 import com.dmdirc.events.ChannelSelfMessageEvent;
31
+import com.dmdirc.events.DisplayProperty;
31 32
 import com.dmdirc.interfaces.CommandController;
32 33
 import com.dmdirc.interfaces.Connection;
33 34
 import com.dmdirc.interfaces.GroupChat;
35
+import com.dmdirc.interfaces.GroupChatUser;
34 36
 import com.dmdirc.interfaces.NicklistListener;
35 37
 import com.dmdirc.interfaces.TopicChangeListener;
36 38
 import com.dmdirc.interfaces.User;
@@ -57,7 +59,6 @@ import java.util.Arrays;
57 59
 import java.util.Collection;
58 60
 import java.util.Collections;
59 61
 import java.util.List;
60
-import java.util.Map;
61 62
 import java.util.Optional;
62 63
 import java.util.stream.Collectors;
63 64
 
@@ -80,6 +81,8 @@ public class Channel extends MessageTarget implements GroupChat {
80 81
     private final ChannelEventHandler eventHandler;
81 82
     /** The migrator to use to migrate our config provider. */
82 83
     private final ConfigProviderMigrator configMigrator;
84
+    /** Factory for creating {@link GroupChatUser}s */
85
+    private final GroupChatUserFactory groupChatUserFactory;
83 86
     /** Whether we're in this channel or not. */
84 87
     private boolean isOnChannel;
85 88
     /** Whether we should send WHO requests for this channel. */
@@ -113,7 +116,8 @@ public class Channel extends MessageTarget implements GroupChat {
113 116
             final MessageSinkManager messageSinkManager,
114 117
             final URLBuilder urlBuilder,
115 118
             final DMDircMBassador eventBus,
116
-            final BackBufferFactory backBufferFactory) {
119
+            final BackBufferFactory backBufferFactory,
120
+            final GroupChatUserFactory groupChatUserFactory) {
117 121
         super(newServer, "channel-inactive", newChannelInfo.getName(),
118 122
                 Styliser.stipControlCodes(newChannelInfo.getName()),
119 123
                 configMigrator.getConfigProvider(),
@@ -133,6 +137,7 @@ public class Channel extends MessageTarget implements GroupChat {
133 137
         this.configMigrator = configMigrator;
134 138
         this.channelInfo = newChannelInfo;
135 139
         this.server = newServer;
140
+        this.groupChatUserFactory = groupChatUserFactory;
136 141
 
137 142
         getConfigManager().getBinder().bind(this, Channel.class);
138 143
 
@@ -171,12 +176,12 @@ public class Channel extends MessageTarget implements GroupChat {
171 176
             return;
172 177
         }
173 178
 
174
-        final ClientInfo me = server.getParser().get().getLocalClient();
175
-        final String[] details = getDetails(channelInfo.getChannelClient(me));
179
+        final GroupChatUser me = getUser(server.getLocalUser());
180
+        final String[] details = getDetails(me);
176 181
 
177 182
         splitLine(line).stream().filter(part -> !part.isEmpty()).forEach(part -> {
178 183
             final ChannelSelfMessageEvent event =
179
-                    new ChannelSelfMessageEvent(this, channelInfo.getChannelClient(me), part);
184
+                    new ChannelSelfMessageEvent(this, me, part);
180 185
             final String format =
181 186
                     EventUtils.postDisplayable(getEventBus(), event, "channelSelfMessage");
182 187
             addLine(format, details[0], details[1], details[2], details[3], part, channelInfo);
@@ -200,15 +205,15 @@ public class Channel extends MessageTarget implements GroupChat {
200 205
             return;
201 206
         }
202 207
 
203
-        final ClientInfo me = server.getParser().get().getLocalClient();
204
-        final String[] details = getDetails(channelInfo.getChannelClient(me));
208
+
209
+        final GroupChatUser me = getUser(server.getLocalUser());
210
+        final String[] details = getDetails(me);
205 211
 
206 212
         if (server.getParser().get().getMaxLength("PRIVMSG", getChannelInfo().getName())
207 213
                 <= action.length()) {
208 214
             addLine("actionTooLong", action.length());
209 215
         } else {
210
-            final ChannelSelfActionEvent event = new ChannelSelfActionEvent(this,
211
-                    channelInfo.getChannelClient(me), action);
216
+            final ChannelSelfActionEvent event = new ChannelSelfActionEvent(this, me, action);
212 217
             final String format = EventUtils.postDisplayable(getEventBus(), event,
213 218
                     "channelSelfAction");
214 219
             addLine(format, details[0], details[1], details[2], details[3], action, channelInfo);
@@ -388,16 +393,16 @@ public class Channel extends MessageTarget implements GroupChat {
388 393
     /**
389 394
      * Returns a string containing the most important mode for the specified client.
390 395
      *
391
-     * @param channelClient The channel client to check.
396
+     * @param user The channel client to check.
392 397
      *
393 398
      * @return A string containing the most important mode, or an empty string if there are no
394 399
      *         (known) modes.
395 400
      */
396
-    private String getModes(final ChannelClientInfo channelClient) {
397
-        if (channelClient == null || !showModePrefix) {
401
+    private String getModes(final GroupChatUser user) {
402
+        if (user == null || !showModePrefix) {
398 403
             return "";
399 404
         } else {
400
-            return channelClient.getImportantModePrefix();
405
+            return user.getImportantMode();
401 406
         }
402 407
     }
403 408
 
@@ -408,7 +413,7 @@ public class Channel extends MessageTarget implements GroupChat {
408 413
      *
409 414
      * @return A string[] containing displayable components
410 415
      */
411
-    private String[] getDetails(final ChannelClientInfo client) {
416
+    private String[] getDetails(final GroupChatUser client) {
412 417
         if (client == null) {
413 418
             // WTF?
414 419
             throw new UnsupportedOperationException("getDetails called with"
@@ -417,24 +422,22 @@ public class Channel extends MessageTarget implements GroupChat {
417 422
 
418 423
         final String[] res = {
419 424
             getModes(client),
420
-            Styliser.CODE_NICKNAME + client.getClient().getNickname() + Styliser.CODE_NICKNAME,
421
-            client.getClient().getUsername(),
422
-            client.getClient().getHostname(),};
425
+            Styliser.CODE_NICKNAME + client.getNickname() + Styliser.CODE_NICKNAME,
426
+            client.getUsername().orElse(""),
427
+            client.getHostname().orElse(""),};
423 428
 
424 429
         if (showColours) {
425
-            final Map<?, ?> map = client.getMap();
426
-
427
-            if (map.containsKey(ChannelClientProperty.TEXT_FOREGROUND)) {
430
+            final Optional<Colour> foreground
431
+                    = client.getDisplayProperty(DisplayProperty.FOREGROUND_COLOUR);
432
+            final Optional<Colour> background
433
+                    = client.getDisplayProperty(DisplayProperty.BACKGROUND_COLOUR);
434
+            if (foreground.isPresent()) {
428 435
                 final String prefix;
429
-
430
-                if (map.containsKey(ChannelClientProperty.TEXT_BACKGROUND)) {
431
-                    prefix = ',' + ColourUtils.getHex((Colour) map.get(
432
-                            ChannelClientProperty.TEXT_BACKGROUND));
436
+                if (background.isPresent()) {
437
+                    prefix = ',' + ColourUtils.getHex(background.get());
433 438
                 } else {
434
-                    prefix = Styliser.CODE_HEXCOLOUR + ColourUtils.getHex((Colour) map.get(
435
-                            ChannelClientProperty.TEXT_FOREGROUND));
439
+                    prefix = Styliser.CODE_HEXCOLOUR + ColourUtils.getHex(foreground.get());
436 440
                 }
437
-
438 441
                 res[1] = prefix + res[1] + Styliser.CODE_HEXCOLOUR;
439 442
             }
440 443
         }
@@ -456,7 +459,7 @@ public class Channel extends MessageTarget implements GroupChat {
456 459
         } else if (arg instanceof ChannelClientInfo) {
457 460
             // Format ChannelClientInfos
458 461
 
459
-            final ChannelClientInfo clientInfo = (ChannelClientInfo) arg;
462
+            final GroupChatUser clientInfo = getUserFromClient((ChannelClientInfo) arg);
460 463
             args.addAll(Arrays.asList(getDetails(clientInfo)));
461 464
 
462 465
             return true;
@@ -555,4 +558,14 @@ public class Channel extends MessageTarget implements GroupChat {
555 558
         return Optional.of(server);
556 559
     }
557 560
 
561
+    public GroupChatUser getUserFromClient(final ChannelClientInfo client) {
562
+        return groupChatUserFactory.getGroupChatUser(
563
+                server.getUserFromClientInfo(client.getClient()), this);
564
+    }
565
+
566
+    @Override
567
+    public GroupChatUser getUser(final User user) {
568
+        return groupChatUserFactory.getGroupChatUser(user, this);
569
+    }
570
+
558 571
 }

+ 47
- 0
src/com/dmdirc/ChannelClient.java Vedi File

@@ -22,10 +22,14 @@
22 22
 
23 23
 package com.dmdirc;
24 24
 
25
+import com.dmdirc.events.DisplayProperty;
26
+import com.dmdirc.events.DisplayPropertyMap;
25 27
 import com.dmdirc.interfaces.GroupChat;
26 28
 import com.dmdirc.interfaces.GroupChatUser;
27 29
 import com.dmdirc.interfaces.User;
28 30
 
31
+import java.util.Optional;
32
+
29 33
 /**
30 34
  * Implementation of a {@link GroupChatUser}.
31 35
  */
@@ -33,10 +37,12 @@ public class ChannelClient implements GroupChatUser {
33 37
 
34 38
     private final User user;
35 39
     private final GroupChat groupChat;
40
+    private final DisplayPropertyMap properties;
36 41
 
37 42
     public ChannelClient(final User user, final GroupChat groupChat) {
38 43
         this.user = user;
39 44
         this.groupChat = groupChat;
45
+        properties = new DisplayPropertyMap();
40 46
     }
41 47
 
42 48
     @Override
@@ -49,9 +55,50 @@ public class ChannelClient implements GroupChatUser {
49 55
         return groupChat;
50 56
     }
51 57
 
58
+    @Override
59
+    public String getImportantMode() {
60
+        return "";
61
+        // TODO: Implement this.
62
+    }
63
+
52 64
     @Override
53 65
     public String getAllModes() {
54 66
         // TODO: Implement this.
55 67
         return "";
56 68
     }
69
+
70
+    @Override
71
+    public String getNickname() {
72
+        return getUser().getNickname();
73
+    }
74
+
75
+    @Override
76
+    public Optional<String> getUsername() {
77
+        return getUser().getUsername();
78
+    }
79
+
80
+    @Override
81
+    public Optional<String> getHostname() {
82
+        return getUser().getHostname();
83
+    }
84
+
85
+    @Override
86
+    public Optional<String> getRealname() {
87
+        return getUser().getRealname();
88
+    }
89
+
90
+    @Override
91
+    public <T> void setDisplayProperty(final DisplayProperty<T> property, final T value) {
92
+        properties.put(property, value);
93
+    }
94
+
95
+    @Override
96
+    public <T> Optional<T> getDisplayProperty(final DisplayProperty<T> property) {
97
+        return properties.get(property);
98
+    }
99
+
100
+    @Override
101
+    public DisplayPropertyMap getDisplayProperties() {
102
+        return properties;
103
+    }
57 104
 }

+ 6
- 3
src/com/dmdirc/ChannelEventHandler.java Vedi File

@@ -135,7 +135,8 @@ public class ChannelEventHandler extends EventHandler implements
135 135
             final String message, final String host) {
136 136
         checkParser(parser);
137 137
 
138
-        final ChannelMessageEvent event = new ChannelMessageEvent(owner, client, message);
138
+        final ChannelMessageEvent event = new ChannelMessageEvent(owner,
139
+                owner.getUserFromClient(client), message);
139 140
         final String format = EventUtils.postDisplayable(eventBus, event,
140 141
                 isMyself(client) ? "channelSelfExternalMessage" : "channelMessage");
141 142
         owner.doNotification(date, format, client, message);
@@ -252,7 +253,8 @@ public class ChannelEventHandler extends EventHandler implements
252 253
             final String host) {
253 254
         checkParser(parser);
254 255
 
255
-        final ChannelActionEvent event = new ChannelActionEvent(owner, client, message);
256
+        final ChannelActionEvent event = new ChannelActionEvent(owner,
257
+                owner.getUserFromClient(client), message);
256 258
         final String format = EventUtils.postDisplayable(eventBus, event,
257 259
                 isMyself(client) ? "channelSelfExternalAction" : "channelAction");
258 260
         owner.doNotification(date, format, client, message);
@@ -357,7 +359,8 @@ public class ChannelEventHandler extends EventHandler implements
357 359
             final String message, final String host) {
358 360
         checkParser(parser);
359 361
 
360
-        final ChannelNoticeEvent event = new ChannelNoticeEvent(owner, client, message);
362
+        final ChannelNoticeEvent event = new ChannelNoticeEvent(owner,
363
+                owner.getUserFromClient(client), message);
361 364
         final String format = EventUtils.postDisplayable(eventBus, event, "channelNotice");
362 365
         owner.doNotification(date, format, client, message);
363 366
     }

+ 6
- 2
src/com/dmdirc/ChannelFactory.java Vedi File

@@ -45,24 +45,28 @@ public class ChannelFactory {
45 45
     private final URLBuilder urlBuilder;
46 46
     private final DMDircMBassador eventBus;
47 47
     private final BackBufferFactory backBufferFactory;
48
+    private final GroupChatUserFactory groupChatUserFactory;
48 49
 
49 50
     @Inject
50 51
     public ChannelFactory(final TabCompleterFactory tabCompleterFactory,
51 52
             final CommandController commandController, final MessageSinkManager messageSinkManager,
52 53
             final URLBuilder urlBuilder, final DMDircMBassador eventBus,
53
-            final BackBufferFactory backBufferFactory) {
54
+            final BackBufferFactory backBufferFactory,
55
+            final GroupChatUserFactory groupChatUserFactory) {
54 56
         this.tabCompleterFactory = tabCompleterFactory;
55 57
         this.commandController = commandController;
56 58
         this.messageSinkManager = messageSinkManager;
57 59
         this.urlBuilder = urlBuilder;
58 60
         this.eventBus = eventBus;
59 61
         this.backBufferFactory = backBufferFactory;
62
+        this.groupChatUserFactory = groupChatUserFactory;
60 63
     }
61 64
 
62 65
     public Channel getChannel(final Server server,
63 66
             final ChannelInfo channelInfo,
64 67
             final ConfigProviderMigrator configMigrator) {
65 68
         return new Channel(server, channelInfo, configMigrator, tabCompleterFactory,
66
-                commandController, messageSinkManager, urlBuilder, eventBus, backBufferFactory);
69
+                commandController, messageSinkManager, urlBuilder, eventBus, backBufferFactory,
70
+                groupChatUserFactory);
67 71
     }
68 72
 }

+ 3
- 3
src/com/dmdirc/events/BaseChannelActionEvent.java Vedi File

@@ -23,7 +23,7 @@
23 23
 package com.dmdirc.events;
24 24
 
25 25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27 27
 
28 28
 /**
29 29
  * Base class for channel action events.
@@ -31,11 +31,11 @@ import com.dmdirc.parser.interfaces.ChannelClientInfo;
31 31
 public class BaseChannelActionEvent extends BaseChannelTextEvent {
32 32
 
33 33
     public BaseChannelActionEvent(final long timestamp, final Channel channel,
34
-            final ChannelClientInfo client, final String message) {
34
+            final GroupChatUser client, final String message) {
35 35
         super(timestamp, channel, client, message);
36 36
     }
37 37
 
38
-    public BaseChannelActionEvent(final Channel channel, final ChannelClientInfo client,
38
+    public BaseChannelActionEvent(final Channel channel, final GroupChatUser client,
39 39
             final String message) {
40 40
         super(channel, client, message);
41 41
     }

+ 3
- 3
src/com/dmdirc/events/BaseChannelMessageEvent.java Vedi File

@@ -23,7 +23,7 @@
23 23
 package com.dmdirc.events;
24 24
 
25 25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27 27
 
28 28
 /**
29 29
  * Base channel message event.
@@ -31,11 +31,11 @@ import com.dmdirc.parser.interfaces.ChannelClientInfo;
31 31
 public class BaseChannelMessageEvent extends BaseChannelTextEvent {
32 32
 
33 33
     public BaseChannelMessageEvent(final long timestamp, final Channel channel,
34
-            final ChannelClientInfo client, final String message) {
34
+            final GroupChatUser client, final String message) {
35 35
         super(timestamp, channel, client, message);
36 36
     }
37 37
 
38
-    public BaseChannelMessageEvent(final Channel channel, final ChannelClientInfo client,
38
+    public BaseChannelMessageEvent(final Channel channel, final GroupChatUser client,
39 39
             final String message) {
40 40
         super(channel, client, message);
41 41
     }

+ 5
- 5
src/com/dmdirc/events/BaseChannelTextEvent.java Vedi File

@@ -23,31 +23,31 @@
23 23
 package com.dmdirc.events;
24 24
 
25 25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27 27
 
28 28
 /**
29 29
  * Base class for channel text events.
30 30
  */
31 31
 public class BaseChannelTextEvent extends ChannelDisplayableEvent {
32 32
 
33
-    private final ChannelClientInfo client;
33
+    private final GroupChatUser client;
34 34
     private final String message;
35 35
 
36 36
     public BaseChannelTextEvent(final long timestamp, final Channel channel,
37
-            final ChannelClientInfo client, final String message) {
37
+            final GroupChatUser client, final String message) {
38 38
         super(timestamp, channel);
39 39
         this.client = client;
40 40
         this.message = message;
41 41
     }
42 42
 
43 43
     public BaseChannelTextEvent(final Channel channel,
44
-            final ChannelClientInfo client, final String message) {
44
+            final GroupChatUser client, final String message) {
45 45
         super(channel);
46 46
         this.client = client;
47 47
         this.message = message;
48 48
     }
49 49
 
50
-    public ChannelClientInfo getClient() {
50
+    public GroupChatUser getClient() {
51 51
         return client;
52 52
     }
53 53
 

+ 3
- 3
src/com/dmdirc/events/ChannelActionEvent.java Vedi File

@@ -23,7 +23,7 @@
23 23
 package com.dmdirc.events;
24 24
 
25 25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27 27
 
28 28
 /**
29 29
  * Fired when a channel action occurs.
@@ -31,11 +31,11 @@ import com.dmdirc.parser.interfaces.ChannelClientInfo;
31 31
 public class ChannelActionEvent extends BaseChannelActionEvent {
32 32
 
33 33
     public ChannelActionEvent(final long timestamp, final Channel channel,
34
-            final ChannelClientInfo client, final String message) {
34
+            final GroupChatUser client, final String message) {
35 35
         super(timestamp, channel, client, message);
36 36
     }
37 37
 
38
-    public ChannelActionEvent(final Channel channel, final ChannelClientInfo client,
38
+    public ChannelActionEvent(final Channel channel, final GroupChatUser client,
39 39
             final String message) {
40 40
         super(channel, client, message);
41 41
     }

+ 3
- 3
src/com/dmdirc/events/ChannelMessageEvent.java Vedi File

@@ -23,7 +23,7 @@
23 23
 package com.dmdirc.events;
24 24
 
25 25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27 27
 
28 28
 /**
29 29
  * Fired when a channel message occurs.
@@ -31,11 +31,11 @@ import com.dmdirc.parser.interfaces.ChannelClientInfo;
31 31
 public class ChannelMessageEvent extends BaseChannelMessageEvent {
32 32
 
33 33
     public ChannelMessageEvent(final long timestamp, final Channel channel,
34
-            final ChannelClientInfo client, final String message) {
34
+            final GroupChatUser client, final String message) {
35 35
         super(timestamp, channel, client, message);
36 36
     }
37 37
 
38
-    public ChannelMessageEvent(final Channel channel, final ChannelClientInfo client,
38
+    public ChannelMessageEvent(final Channel channel, final GroupChatUser client,
39 39
             final String message) {
40 40
         super(channel, client, message);
41 41
     }

+ 3
- 3
src/com/dmdirc/events/ChannelNoticeEvent.java Vedi File

@@ -23,7 +23,7 @@
23 23
 package com.dmdirc.events;
24 24
 
25 25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27 27
 
28 28
 /**
29 29
  * Fired when a channel mode is received.
@@ -31,11 +31,11 @@ import com.dmdirc.parser.interfaces.ChannelClientInfo;
31 31
 public class ChannelNoticeEvent extends BaseChannelTextEvent {
32 32
 
33 33
     public ChannelNoticeEvent(final long timestamp, final Channel channel,
34
-            final ChannelClientInfo client, final String message) {
34
+            final GroupChatUser client, final String message) {
35 35
         super(timestamp, channel, client, message);
36 36
     }
37 37
 
38
-    public ChannelNoticeEvent(final Channel channel, final ChannelClientInfo client,
38
+    public ChannelNoticeEvent(final Channel channel, final GroupChatUser client,
39 39
             final String message) {
40 40
         super(channel, client, message);
41 41
     }

+ 3
- 3
src/com/dmdirc/events/ChannelSelfActionEvent.java Vedi File

@@ -23,7 +23,7 @@
23 23
 package com.dmdirc.events;
24 24
 
25 25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27 27
 
28 28
 /**
29 29
  * Fired when a channel self action occurs.
@@ -31,11 +31,11 @@ import com.dmdirc.parser.interfaces.ChannelClientInfo;
31 31
 public class ChannelSelfActionEvent extends BaseChannelActionEvent {
32 32
 
33 33
     public ChannelSelfActionEvent(final long timestamp, final Channel channel,
34
-            final ChannelClientInfo client, final String message) {
34
+            final GroupChatUser client, final String message) {
35 35
         super(timestamp, channel, client, message);
36 36
     }
37 37
 
38
-    public ChannelSelfActionEvent(final Channel channel, final ChannelClientInfo client,
38
+    public ChannelSelfActionEvent(final Channel channel, final GroupChatUser client,
39 39
             final String message) {
40 40
         super(channel, client, message);
41 41
     }

+ 3
- 3
src/com/dmdirc/events/ChannelSelfMessageEvent.java Vedi File

@@ -23,7 +23,7 @@
23 23
 package com.dmdirc.events;
24 24
 
25 25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27 27
 
28 28
 /**
29 29
  * Fired when a channel self message occurs.
@@ -31,11 +31,11 @@ import com.dmdirc.parser.interfaces.ChannelClientInfo;
31 31
 public class ChannelSelfMessageEvent extends BaseChannelMessageEvent {
32 32
 
33 33
     public ChannelSelfMessageEvent(final long timestamp, final Channel channel,
34
-            final ChannelClientInfo client, final String message) {
34
+            final GroupChatUser client, final String message) {
35 35
         super(timestamp, channel, client, message);
36 36
     }
37 37
 
38
-    public ChannelSelfMessageEvent(final Channel channel, final ChannelClientInfo client,
38
+    public ChannelSelfMessageEvent(final Channel channel, final GroupChatUser client,
39 39
             final String message) {
40 40
         super(channel, client, message);
41 41
     }

+ 2
- 0
src/com/dmdirc/interfaces/GroupChat.java Vedi File

@@ -120,4 +120,6 @@ public interface GroupChat extends Chat {
120 120
      */
121 121
     void setTopic(final String topic);
122 122
 
123
+    GroupChatUser getUser(final User user);
124
+
123 125
 }

+ 66
- 0
src/com/dmdirc/interfaces/GroupChatUser.java Vedi File

@@ -22,6 +22,11 @@
22 22
 
23 23
 package com.dmdirc.interfaces;
24 24
 
25
+import com.dmdirc.events.DisplayProperty;
26
+import com.dmdirc.events.DisplayPropertyMap;
27
+
28
+import java.util.Optional;
29
+
25 30
 /**
26 31
  * Describes a {@link User} that is present on a {@link GroupChat}.
27 32
  */
@@ -42,6 +47,14 @@ public interface GroupChatUser {
42 47
      */
43 48
     GroupChat getGroupChat();
44 49
 
50
+    /**
51
+     * Returns the most important mode that the client holds in its textual
52
+     * form (e.g. o, v, etc)
53
+     *
54
+     * @return The most important mode the client holds, or an empty string
55
+     */
56
+    String getImportantMode();
57
+
45 58
     /**
46 59
      * Returns a list of all modes known to be held by the client, in their
47 60
      * textual form (e.g. o, v, etc)
@@ -49,4 +62,57 @@ public interface GroupChatUser {
49 62
      * @return All modes the client holds, or an empty string
50 63
      */
51 64
     String getAllModes();
65
+
66
+    /**
67
+     * Retrieves the nickname or display name used by this client.
68
+     *
69
+     * @return This client's nickname
70
+     */
71
+    String getNickname();
72
+
73
+    /**
74
+     * Retrieves the username or ident used by this client.
75
+     *
76
+     * @return This client's username
77
+     */
78
+    Optional<String> getUsername();
79
+
80
+    /**
81
+     * Retrieves the hostname that this client is connecting from.
82
+     *
83
+     * @return This client's hostname
84
+     */
85
+    Optional<String> getHostname();
86
+
87
+    /**
88
+     * Retrieves the full/real name of the client.
89
+     *
90
+     * @return This client's real name
91
+     */
92
+    Optional<String> getRealname();
93
+
94
+    /**
95
+     * Sets a property relating to how this {@link GroupChatUser} should be displayed.
96
+     *
97
+     * @param property The property to be set
98
+     * @param value The value of the property
99
+     * @param <T> The type of value that the property takes.
100
+     */
101
+    <T> void setDisplayProperty(final DisplayProperty<T> property, final T value);
102
+
103
+    /**
104
+     * Retrieves a property relating to how this {@link GroupChatUser} should be displayed.
105
+     *
106
+     * @param property The property to be retrieved.
107
+     * @param <T> The type of value that the property takes.
108
+     * @return An optional value for the property.
109
+     */
110
+    <T> Optional<T> getDisplayProperty(final DisplayProperty<T> property);
111
+
112
+    /**
113
+     * Gets the map of all display properties for this {@link GroupChatUser}.
114
+     *
115
+     * @return The map of display properties.
116
+     */
117
+    DisplayPropertyMap getDisplayProperties();
52 118
 }

+ 2
- 2
test/com/dmdirc/ui/messages/EventPropertyManagerTest.java Vedi File

@@ -25,7 +25,7 @@ package com.dmdirc.ui.messages;
25 25
 import com.dmdirc.Channel;
26 26
 import com.dmdirc.DMDircMBassador;
27 27
 import com.dmdirc.events.ChannelMessageEvent;
28
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
28
+import com.dmdirc.interfaces.GroupChatUser;
29 29
 
30 30
 import org.junit.Before;
31 31
 import org.junit.Test;
@@ -44,7 +44,7 @@ public class EventPropertyManagerTest {
44 44
 
45 45
     @Mock private DMDircMBassador eventBus;
46 46
     @Mock private Channel channel;
47
-    @Mock private ChannelClientInfo client;
47
+    @Mock private GroupChatUser client;
48 48
 
49 49
     @Before
50 50
     public void setUp() {

Loading…
Annulla
Salva