Ver código fonte

Revert FrameContainer UrlBuilder sillyness.

Makes more sense to just bite the bullet and have FrameContainers
require a URLBuilder so they can make an IconManager, rather than
have every caller pass one in.

Also removes the silly map which would've only ever had one entry,
and stops us making 19 million icon managers for giggles.

Change-Id: I3b95185db3f7e6ef09a6c4f91cd28c88d2c601ba
Depends-On: Ida8887d4065db2f26080986a4c426c6de700d65c
Reviewed-on: http://gerrit.dmdirc.com/3107
Reviewed-by: Greg Holmes <greg@dmdirc.com>
Automatic-Compile: DMDirc Build Manager
tags/0.8rc1
Chris Smith 10 anos atrás
pai
commit
3f4c55edc7

+ 7
- 2
src/com/dmdirc/Channel.java Ver arquivo

@@ -43,6 +43,7 @@ import com.dmdirc.ui.input.TabCompleterFactory;
43 43
 import com.dmdirc.ui.input.TabCompletionType;
44 44
 import com.dmdirc.ui.messages.ColourManager;
45 45
 import com.dmdirc.ui.messages.Styliser;
46
+import com.dmdirc.util.URLBuilder;
46 47
 import com.dmdirc.util.annotations.factory.Factory;
47 48
 import com.dmdirc.util.annotations.factory.Unbound;
48 49
 import com.dmdirc.util.collections.ListenerList;
@@ -107,6 +108,7 @@ public class Channel extends MessageTarget implements ConfigChangeListener {
107 108
      * @param tabCompleterFactory The factory to use to create tab completers.
108 109
      * @param commandController The controller to load commands from.
109 110
      * @param messageSinkManager The sink manager to use to despatch messages.
111
+     * @param urlBuilder The URL builder to use when finding icons.
110 112
      */
111 113
     public Channel(
112 114
             @Unbound final Server newServer,
@@ -114,11 +116,14 @@ public class Channel extends MessageTarget implements ConfigChangeListener {
114 116
             @Unbound final ConfigProviderMigrator configMigrator,
115 117
             final TabCompleterFactory tabCompleterFactory,
116 118
             final CommandController commandController,
117
-            final MessageSinkManager messageSinkManager) {
119
+            final MessageSinkManager messageSinkManager,
120
+            final URLBuilder urlBuilder) {
118 121
         super("channel-inactive", newChannelInfo.getName(),
119 122
                 Styliser.stipControlCodes(newChannelInfo.getName()),
120 123
                 configMigrator.getConfigProvider(),
121
-                new ChannelCommandParser(newServer, commandController), messageSinkManager,
124
+                new ChannelCommandParser(newServer, commandController),
125
+                messageSinkManager,
126
+                urlBuilder,
122 127
                 Arrays.asList(WindowComponent.TEXTAREA.getIdentifier(),
123 128
                     WindowComponent.INPUTFIELD.getIdentifier(),
124 129
                     WindowComponent.TOPICBAR.getIdentifier(),

+ 3
- 2
src/com/dmdirc/ClientModule.java Ver arquivo

@@ -244,9 +244,10 @@ public class ClientModule {
244 244
     @Singleton
245 245
     public MessageSinkManager getMessageSinkManager(
246 246
             final StatusBarManager statusBarManager,
247
-            final WindowManager windowManager) {
247
+            final WindowManager windowManager,
248
+            final URLBuilder urlBuilder) {
248 249
         final MessageSinkManager messageSinkManager = new MessageSinkManager();
249
-        messageSinkManager.loadDefaultSinks(statusBarManager, windowManager);
250
+        messageSinkManager.loadDefaultSinks(statusBarManager, windowManager, urlBuilder);
250 251
         return messageSinkManager;
251 252
     }
252 253
 

+ 15
- 6
src/com/dmdirc/CustomWindow.java Ver arquivo

@@ -25,6 +25,7 @@ package com.dmdirc;
25 25
 import com.dmdirc.interfaces.Connection;
26 26
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
27 27
 import com.dmdirc.ui.core.components.WindowComponent;
28
+import com.dmdirc.util.URLBuilder;
28 29
 
29 30
 import java.util.Arrays;
30 31
 
@@ -39,10 +40,14 @@ public class CustomWindow extends FrameContainer {
39 40
      * @param name The name of this custom window
40 41
      * @param title The title of this custom window
41 42
      * @param parent The parent of this custom window
43
+     * @param urlBuilder The URL builder to use when finding icons.
42 44
      */
43
-    public CustomWindow(final String name, final String title,
44
-            final FrameContainer parent) {
45
-        super("custom", name, title, parent.getConfigManager(),
45
+    public CustomWindow(
46
+            final String name,
47
+            final String title,
48
+            final FrameContainer parent,
49
+            final URLBuilder urlBuilder) {
50
+        super("custom", name, title, parent.getConfigManager(), urlBuilder,
46 51
                 Arrays.asList(WindowComponent.TEXTAREA.getIdentifier()));
47 52
     }
48 53
 
@@ -52,10 +57,14 @@ public class CustomWindow extends FrameContainer {
52 57
      * @param name The name of this custom window
53 58
      * @param title The parent of this custom window
54 59
      * @param configProvider The config provider to read settings from.
60
+     * @param urlBuilder The URL builder to use when finding icons.
55 61
      */
56
-    public CustomWindow(final String name, final String title,
57
-            final AggregateConfigProvider configProvider) {
58
-        super("custom", name, title, configProvider,
62
+    public CustomWindow(
63
+            final String name,
64
+            final String title,
65
+            final AggregateConfigProvider configProvider,
66
+            final URLBuilder urlBuilder) {
67
+        super("custom", name, title, configProvider, urlBuilder,
59 68
                 Arrays.asList(WindowComponent.TEXTAREA.getIdentifier()));
60 69
     }
61 70
 

+ 13
- 13
src/com/dmdirc/FrameContainer.java Ver arquivo

@@ -42,11 +42,9 @@ import com.dmdirc.util.collections.ListenerList;
42 42
 import java.util.Collection;
43 43
 import java.util.Collections;
44 44
 import java.util.Date;
45
-import java.util.HashMap;
46 45
 import java.util.HashSet;
47 46
 import java.util.LinkedList;
48 47
 import java.util.List;
49
-import java.util.Map;
50 48
 import java.util.Set;
51 49
 import java.util.concurrent.CopyOnWriteArrayList;
52 50
 
@@ -99,8 +97,8 @@ public abstract class FrameContainer {
99 97
     /** Object used to synchronise styliser access. */
100 98
     private final Object documentSync = new Object();
101 99
 
102
-    /** Previously-constructed iconmanagers. */
103
-    private final Map<URLBuilder, IconManager> iconManagers = new HashMap<>();
100
+    /** The icon manager to use for this container. */
101
+    private final IconManager iconManager;
104 102
 
105 103
     /**
106 104
      * Instantiate new frame container.
@@ -109,17 +107,22 @@ public abstract class FrameContainer {
109 107
      * @param name The name of this container
110 108
      * @param title The title of this container
111 109
      * @param config The config manager for this container
110
+     * @param urlBuilder The URL builder to use when finding icons.
112 111
      * @param components The UI components that this frame requires
113 112
      * @since 0.6.4
114 113
      */
115 114
     protected FrameContainer(
116
-            final String icon, final String name,
117
-            final String title, final AggregateConfigProvider config,
115
+            final String icon,
116
+            final String name,
117
+            final String title,
118
+            final AggregateConfigProvider config,
119
+            final URLBuilder urlBuilder,
118 120
             final Collection<String> components) {
119 121
         this.configManager = config;
120 122
         this.name = name;
121 123
         this.title = title;
122 124
         this.components = new HashSet<>(components);
125
+        this.iconManager = new IconManager(configManager, urlBuilder);
123 126
 
124 127
         setIcon(icon);
125 128
     }
@@ -220,11 +223,9 @@ public abstract class FrameContainer {
220 223
      * Gets an icon manager for this container.
221 224
      *
222 225
      * @return An icon manager for this container.
223
-     * @deprecated Use {@link #getIconManager(com.dmdirc.util.URLBuilder)}.
224 226
      */
225
-    @Deprecated
226 227
     public IconManager getIconManager() {
227
-        return getIconManager(URLBuilder.getInstance());
228
+        return iconManager;
228 229
     }
229 230
 
230 231
     /**
@@ -232,12 +233,11 @@ public abstract class FrameContainer {
232 233
      *
233 234
      * @param urlBuilder The builder to use to construct icon URLs.
234 235
      * @return An icon manager for this container.
236
+     * @deprecated Don't bother passing in a URL builder. That was a bad idea.
235 237
      */
238
+    @Deprecated
236 239
     public IconManager getIconManager(final URLBuilder urlBuilder) {
237
-        if (!iconManagers.containsKey(urlBuilder)) {
238
-            iconManagers.put(urlBuilder, new IconManager(getConfigManager(), urlBuilder));
239
-        }
240
-        return iconManagers.get(urlBuilder);
240
+        return iconManager;
241 241
     }
242 242
 
243 243
     /**

+ 13
- 4
src/com/dmdirc/GlobalWindow.java Ver arquivo

@@ -35,6 +35,7 @@ import com.dmdirc.ui.WindowManager;
35 35
 import com.dmdirc.ui.core.components.WindowComponent;
36 36
 import com.dmdirc.ui.input.TabCompleter;
37 37
 import com.dmdirc.ui.input.TabCompleterFactory;
38
+import com.dmdirc.util.URLBuilder;
38 39
 
39 40
 import java.util.Arrays;
40 41
 
@@ -57,13 +58,15 @@ public class GlobalWindow extends WritableFrameContainer {
57 58
      * @param parser The command parser to use to parse input.
58 59
      * @param tabCompleterFactory The factory to use to create tab completers.
59 60
      * @param messageSinkManager The sink manager to use to despatch messages.
61
+     * @param urlBuilder The URL builder to use when finding icons.
60 62
      */
61 63
     public GlobalWindow(
62 64
             final AggregateConfigProvider config,
63 65
             final CommandParser parser,
64 66
             final TabCompleterFactory tabCompleterFactory,
65
-            final MessageSinkManager messageSinkManager) {
66
-        super("icon", "Global", "(Global)", config, parser, messageSinkManager,
67
+            final MessageSinkManager messageSinkManager,
68
+            final URLBuilder urlBuilder) {
69
+        super("icon", "Global", "(Global)", config, parser, messageSinkManager, urlBuilder,
67 70
                 Arrays.asList(
68 71
                         WindowComponent.TEXTAREA.getIdentifier(),
69 72
                         WindowComponent.INPUTFIELD.getIdentifier()));
@@ -107,6 +110,8 @@ public class GlobalWindow extends WritableFrameContainer {
107 110
         private final Provider<MessageSinkManager> messageSinkManagerProvider;
108 111
         /** The provider to use to retrieve a global command parser. */
109 112
         private final Provider<GlobalCommandParser> globalCommandParserProvider;
113
+        /** The URL builder to use when finding icons. */
114
+        private final URLBuilder urlBuilder;
110 115
 
111 116
         /** The global window that's in use, if any. */
112 117
         private GlobalWindow globalWindow;
@@ -119,6 +124,7 @@ public class GlobalWindow extends WritableFrameContainer {
119 124
          * @param windowManagerProvider The provider to use to retrieve a window manager.
120 125
          * @param messageSinkManagerProvider The provider to use to retrieve a sink manager.
121 126
          * @param globalCommandParserProvider The provider to use to retrieve a global command parser.
127
+         * @param urlBuilder The URL builder to use when finding icons.
122 128
          */
123 129
         @Inject
124 130
         public GlobalWindowManager(
@@ -126,12 +132,14 @@ public class GlobalWindow extends WritableFrameContainer {
126 132
                 final TabCompleterFactory tabCompleterFactory,
127 133
                 final Provider<WindowManager> windowManagerProvider,
128 134
                 final Provider<MessageSinkManager> messageSinkManagerProvider,
129
-                final Provider<GlobalCommandParser> globalCommandParserProvider) {
135
+                final Provider<GlobalCommandParser> globalCommandParserProvider,
136
+                final URLBuilder urlBuilder) {
130 137
             this.globalConfig = globalConfig;
131 138
             this.tabCompleterFactory = tabCompleterFactory;
132 139
             this.windowManagerProvider = windowManagerProvider;
133 140
             this.messageSinkManagerProvider = messageSinkManagerProvider;
134 141
             this.globalCommandParserProvider = globalCommandParserProvider;
142
+            this.urlBuilder = urlBuilder;
135 143
         }
136 144
 
137 145
         /** {@inheritDoc} */
@@ -159,7 +167,8 @@ public class GlobalWindow extends WritableFrameContainer {
159 167
                         globalWindow = new GlobalWindow(globalConfig,
160 168
                                 globalCommandParserProvider.get(),
161 169
                                 tabCompleterFactory,
162
-                                messageSinkManagerProvider.get());
170
+                                messageSinkManagerProvider.get(),
171
+                                urlBuilder);
163 172
                         addCloseListener(globalWindow);
164 173
                         windowManagerProvider.get().addWindow(globalWindow);
165 174
                     }

+ 11
- 4
src/com/dmdirc/MessageTarget.java Ver arquivo

@@ -25,6 +25,7 @@ package com.dmdirc;
25 25
 import com.dmdirc.commandparser.parsers.CommandParser;
26 26
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
27 27
 import com.dmdirc.messages.MessageSinkManager;
28
+import com.dmdirc.util.URLBuilder;
28 29
 
29 30
 import java.util.Collection;
30 31
 
@@ -43,14 +44,20 @@ public abstract class MessageTarget extends WritableFrameContainer {
43 44
      * @param config The config manager to use for this target
44 45
      * @param parser The command parser for this container
45 46
      * @param messageSinkManager The sink manager to use to despatch messages.
47
+     * @param urlBuilder The URL builder to use when finding icons.
46 48
      * @param components The UI components that this frame requires
47 49
      * @since 0.6.4
48 50
      */
49
-    public MessageTarget(final String icon, final String name,
50
-            final String title, final AggregateConfigProvider config,
51
-            final CommandParser parser, final MessageSinkManager messageSinkManager,
51
+    public MessageTarget(
52
+            final String icon,
53
+            final String name,
54
+            final String title,
55
+            final AggregateConfigProvider config,
56
+            final CommandParser parser,
57
+            final MessageSinkManager messageSinkManager,
58
+            final URLBuilder urlBuilder,
52 59
             final Collection<String> components) {
53
-        super(icon, name, title, config, parser, messageSinkManager, components);
60
+        super(icon, name, title, config, parser, messageSinkManager, urlBuilder, components);
54 61
     }
55 62
 
56 63
     /**

+ 5
- 1
src/com/dmdirc/Query.java Ver arquivo

@@ -44,6 +44,7 @@ import com.dmdirc.parser.interfaces.callbacks.QuitListener;
44 44
 import com.dmdirc.ui.core.components.WindowComponent;
45 45
 import com.dmdirc.ui.input.TabCompleter;
46 46
 import com.dmdirc.ui.input.TabCompleterFactory;
47
+import com.dmdirc.util.URLBuilder;
47 48
 import com.dmdirc.util.annotations.factory.Factory;
48 49
 import com.dmdirc.util.annotations.factory.Unbound;
49 50
 
@@ -82,17 +83,20 @@ public class Query extends MessageTarget implements PrivateActionListener,
82 83
      * @param tabCompleterFactory The factory to use to create tab completers.
83 84
      * @param commandController The controller to load commands from.
84 85
      * @param messageSinkManager The sink manager to use to despatch messages.
86
+     * @param urlBuilder The URL builder to use when finding icons.
85 87
      */
86 88
     public Query(
87 89
             @Unbound final Server newServer,
88 90
             @Unbound final String newHost,
89 91
             final TabCompleterFactory tabCompleterFactory,
90 92
             final CommandController commandController,
91
-            final MessageSinkManager messageSinkManager) {
93
+            final MessageSinkManager messageSinkManager,
94
+            final URLBuilder urlBuilder) {
92 95
         super("query", newServer.parseHostmask(newHost)[0],
93 96
                 newServer.parseHostmask(newHost)[0],
94 97
                 newServer.getConfigManager(), new QueryCommandParser(newServer, commandController),
95 98
                 messageSinkManager,
99
+                urlBuilder,
96 100
                 Arrays.asList(
97 101
                         WindowComponent.TEXTAREA.getIdentifier(),
98 102
                         WindowComponent.INPUTFIELD.getIdentifier()));

+ 5
- 1
src/com/dmdirc/Raw.java Ver arquivo

@@ -34,6 +34,7 @@ import com.dmdirc.parser.interfaces.callbacks.DataInListener;
34 34
 import com.dmdirc.parser.interfaces.callbacks.DataOutListener;
35 35
 import com.dmdirc.ui.core.components.WindowComponent;
36 36
 import com.dmdirc.ui.input.TabCompleter;
37
+import com.dmdirc.util.URLBuilder;
37 38
 import com.dmdirc.util.annotations.factory.Factory;
38 39
 import com.dmdirc.util.annotations.factory.Unbound;
39 40
 
@@ -57,14 +58,17 @@ public class Raw extends WritableFrameContainer
57 58
      * @param newServer the server to monitor
58 59
      * @param commandController The controller to load commands from.
59 60
      * @param messageSinkManager The sink manager to use to despatch messages.
61
+     * @param urlBuilder The URL builder to use when finding icons.
60 62
      */
61 63
     public Raw(
62 64
             @Unbound final Server newServer,
63 65
             final CommandController commandController,
64
-            final MessageSinkManager messageSinkManager) {
66
+            final MessageSinkManager messageSinkManager,
67
+            final URLBuilder urlBuilder) {
65 68
         super("raw", "Raw", "(Raw log)", newServer.getConfigManager(),
66 69
                 new ServerCommandParser(newServer.getConfigManager(), commandController),
67 70
                 messageSinkManager,
71
+                urlBuilder,
68 72
                 Arrays.asList(
69 73
                     WindowComponent.TEXTAREA.getIdentifier(),
70 74
                     WindowComponent.INPUTFIELD.getIdentifier()));

+ 5
- 0
src/com/dmdirc/Server.java Ver arquivo

@@ -60,6 +60,7 @@ import com.dmdirc.ui.input.TabCompleter;
60 60
 import com.dmdirc.ui.input.TabCompleterFactory;
61 61
 import com.dmdirc.ui.input.TabCompletionType;
62 62
 import com.dmdirc.ui.messages.Formatter;
63
+import com.dmdirc.util.URLBuilder;
63 64
 import com.dmdirc.util.annotations.factory.Factory;
64 65
 import com.dmdirc.util.annotations.factory.Unbound;
65 66
 
@@ -86,6 +87,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
86 87
 import javax.net.ssl.TrustManager;
87 88
 
88 89
 import org.slf4j.LoggerFactory;
90
+
89 91
 import static com.google.common.base.Preconditions.checkArgument;
90 92
 import static com.google.common.base.Preconditions.checkNotNull;
91 93
 
@@ -222,6 +224,7 @@ public class Server extends WritableFrameContainer implements ConfigChangeListen
222 224
      * @param channelFactory The factory to use to create channels.
223 225
      * @param queryFactory The factory to use to create queries.
224 226
      * @param rawFactory The factory to use to create raw windows.
227
+     * @param urlBuilder The URL builder to use when finding icons.
225 228
      * @param userSettings The config provider to write user settings to.
226 229
      * @param uri The address of the server to connect to
227 230
      * @param profile The profile to use
@@ -239,6 +242,7 @@ public class Server extends WritableFrameContainer implements ConfigChangeListen
239 242
             final ChannelFactory channelFactory,
240 243
             final QueryFactory queryFactory,
241 244
             final RawFactory rawFactory,
245
+            final URLBuilder urlBuilder,
242 246
             @SuppressWarnings("qualifiers") @UserConfig final ConfigProvider userSettings,
243 247
             @Unbound final URI uri,
244 248
             @Unbound final ConfigProvider profile) {
@@ -248,6 +252,7 @@ public class Server extends WritableFrameContainer implements ConfigChangeListen
248 252
                 configMigrator.getConfigProvider(),
249 253
                 commandParser,
250 254
                 messageSinkManager,
255
+                urlBuilder,
251 256
                 Arrays.asList(
252 257
                     WindowComponent.TEXTAREA.getIdentifier(),
253 258
                     WindowComponent.INPUTFIELD.getIdentifier(),

+ 4
- 1
src/com/dmdirc/WritableFrameContainer.java Ver arquivo

@@ -29,6 +29,7 @@ import com.dmdirc.interfaces.config.AggregateConfigProvider;
29 29
 import com.dmdirc.messages.MessageSinkManager;
30 30
 import com.dmdirc.parser.common.CompositionState;
31 31
 import com.dmdirc.ui.input.TabCompleter;
32
+import com.dmdirc.util.URLBuilder;
32 33
 
33 34
 import java.util.ArrayList;
34 35
 import java.util.Collection;
@@ -63,6 +64,7 @@ public abstract class WritableFrameContainer extends FrameContainer {
63 64
      * @param config The config manager for this container
64 65
      * @param parser The command parser for this container
65 66
      * @param messageSinkManager The sink manager to use to despatch messages
67
+     * @param urlBuilder The URL builder to use when finding icons.
66 68
      * @param components The UI components that this frame requires
67 69
      * @since 0.6.4
68 70
      */
@@ -73,8 +75,9 @@ public abstract class WritableFrameContainer extends FrameContainer {
73 75
             final AggregateConfigProvider config,
74 76
             final CommandParser parser,
75 77
             final MessageSinkManager messageSinkManager,
78
+            final URLBuilder urlBuilder,
76 79
             final Collection<String> components) {
77
-        super(icon, name, title, config, components);
80
+        super(icon, name, title, config, urlBuilder, components);
78 81
 
79 82
         this.commandParser = parser;
80 83
         this.messageSinkManager = messageSinkManager;

+ 10
- 2
src/com/dmdirc/commandparser/commands/global/OpenWindow.java Ver arquivo

@@ -37,6 +37,7 @@ import com.dmdirc.interfaces.CommandController;
37 37
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
38 38
 import com.dmdirc.ui.WindowManager;
39 39
 import com.dmdirc.ui.input.AdditionalTabTargets;
40
+import com.dmdirc.util.URLBuilder;
40 41
 
41 42
 import javax.inject.Inject;
42 43
 
@@ -53,6 +54,8 @@ public class OpenWindow extends Command implements IntelligentCommand {
53 54
 
54 55
     /** Window management. */
55 56
     private final WindowManager windowManager;
57
+    /** The URL builder to use when finding icons. */
58
+    private final URLBuilder urlBuilder;
56 59
 
57 60
     /** The config provider to retrieve settings from. */
58 61
     private final AggregateConfigProvider configProvider;
@@ -62,16 +65,19 @@ public class OpenWindow extends Command implements IntelligentCommand {
62 65
      *
63 66
      * @param controller The controller to use for command information.
64 67
      * @param windowManager Window management
68
+     * @param urlBuilder The URL builder to use when finding icons.
65 69
      * @param configProvider The config provider to retrieve settings from.
66 70
      */
67 71
     @Inject
68 72
     public OpenWindow(
69 73
             final CommandController controller,
70 74
             final WindowManager windowManager,
75
+            final URLBuilder urlBuilder,
71 76
             @GlobalConfig final AggregateConfigProvider configProvider) {
72 77
         super(controller);
73 78
 
74 79
         this.windowManager = windowManager;
80
+        this.urlBuilder = urlBuilder;
75 81
         this.configProvider = configProvider;
76 82
     }
77 83
 
@@ -114,10 +120,12 @@ public class OpenWindow extends Command implements IntelligentCommand {
114 120
             if (window == null) {
115 121
                 CustomWindow newWindow;
116 122
                 if (parent == null) {
117
-                    newWindow = new CustomWindow(args.getArguments()[start], title, configProvider);
123
+                    newWindow = new CustomWindow(args.getArguments()[start], title,
124
+                            configProvider, urlBuilder);
118 125
                     windowManager.addWindow(newWindow);
119 126
                 } else {
120
-                    newWindow = new CustomWindow(args.getArguments()[start], title, parent);
127
+                    newWindow = new CustomWindow(args.getArguments()[start], title, parent,
128
+                            urlBuilder);
121 129
                     windowManager.addWindow(parent, newWindow);
122 130
                 }
123 131
             } else {

+ 10
- 3
src/com/dmdirc/messages/CustomWindowMessageSink.java Ver arquivo

@@ -27,6 +27,7 @@ import com.dmdirc.FrameContainer;
27 27
 import com.dmdirc.Server;
28 28
 import com.dmdirc.WritableFrameContainer;
29 29
 import com.dmdirc.ui.WindowManager;
30
+import com.dmdirc.util.URLBuilder;
30 31
 
31 32
 import java.util.Date;
32 33
 import java.util.regex.Pattern;
@@ -41,14 +42,20 @@ public class CustomWindowMessageSink implements MessageSink {
41 42
     private static final Pattern PATTERN = Pattern.compile("window:(.*)");
42 43
     /** Window management. */
43 44
     private final WindowManager windowManager;
45
+    /** The URL builder to use when finding icons. */
46
+    private final URLBuilder urlBuilder;
44 47
 
45 48
     /**
46 49
      * Creates a new custom window message sink.
47 50
      *
48 51
      * @param windowManager Window management
52
+     * @param urlBuilder The URL builder to use when finding icons.
49 53
      */
50
-    public CustomWindowMessageSink(final WindowManager windowManager) {
54
+    public CustomWindowMessageSink(
55
+            final WindowManager windowManager,
56
+            final URLBuilder urlBuilder) {
51 57
         this.windowManager = windowManager;
58
+        this.urlBuilder = urlBuilder;
52 59
     }
53 60
 
54 61
     /** {@inheritDoc} */
@@ -67,8 +74,8 @@ public class CustomWindowMessageSink implements MessageSink {
67 74
                 .findCustomWindow((Server) source.getConnection(), patternMatches[0]);
68 75
 
69 76
         if (targetWindow == null) {
70
-            targetWindow = new CustomWindow(patternMatches[0],
71
-                    patternMatches[0], (Server) source.getConnection());
77
+            targetWindow = new CustomWindow(patternMatches[0], patternMatches[0],
78
+                    (Server) source.getConnection(), urlBuilder);
72 79
             windowManager.addWindow((Server) source.getConnection(), targetWindow);
73 80
         }
74 81
 

+ 5
- 2
src/com/dmdirc/messages/MessageSinkManager.java Ver arquivo

@@ -27,6 +27,7 @@ import com.dmdirc.logger.ErrorLevel;
27 27
 import com.dmdirc.logger.Logger;
28 28
 import com.dmdirc.ui.WindowManager;
29 29
 import com.dmdirc.ui.core.components.StatusBarManager;
30
+import com.dmdirc.util.URLBuilder;
30 31
 
31 32
 import java.util.ArrayList;
32 33
 import java.util.Date;
@@ -127,14 +128,16 @@ public class MessageSinkManager {
127 128
      *
128 129
      * @param statusBarManager The status bar manager to give to status-bar related sinks.
129 130
      * @param windowManager The window manager to give to sinks that iterate windows.
131
+     * @param urlBuilder The URL builder to use when finding icons.
130 132
      */
131 133
     public void loadDefaultSinks(
132 134
             final StatusBarManager statusBarManager,
133
-            final WindowManager windowManager) {
135
+            final WindowManager windowManager,
136
+            final URLBuilder urlBuilder) {
134 137
         addSink(new AllMessageSink());
135 138
         addSink(new ChannelMessageSink());
136 139
         addSink(new CommonChanelsMessageSink());
137
-        addSink(new CustomWindowMessageSink(windowManager));
140
+        addSink(new CustomWindowMessageSink(windowManager, urlBuilder));
138 141
         addSink(new ForkMessageSink());
139 142
         addSink(new FormatMessageSink());
140 143
         addSink(new GroupMessageSink());

+ 3
- 0
test/com/dmdirc/ServerTest.java Ver arquivo

@@ -31,6 +31,7 @@ import com.dmdirc.messages.MessageSinkManager;
31 31
 import com.dmdirc.ui.WindowManager;
32 32
 import com.dmdirc.ui.core.components.StatusBarManager;
33 33
 import com.dmdirc.ui.input.TabCompleterFactory;
34
+import com.dmdirc.util.URLBuilder;
34 35
 
35 36
 import java.net.URI;
36 37
 
@@ -60,6 +61,7 @@ public class ServerTest {
60 61
     @Mock private QueryFactory queryFactory;
61 62
     @Mock private RawFactory rawFactory;
62 63
     @Mock private StatusBarManager statusBarManager;
64
+    @Mock private URLBuilder urlBuilder;
63 65
 
64 66
     private Server server;
65 67
 
@@ -82,6 +84,7 @@ public class ServerTest {
82 84
                 channelFactory,
83 85
                 queryFactory,
84 86
                 rawFactory,
87
+                urlBuilder,
85 88
                 userConfig,
86 89
                 new URI("irc-test://255.255.255.255"),
87 90
                 profile);

+ 4
- 2
test/com/dmdirc/WritableFrameContainerTest.java Ver arquivo

@@ -27,6 +27,7 @@ import com.dmdirc.config.ConfigBinder;
27 27
 import com.dmdirc.harness.TestWritableFrameContainer;
28 28
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
29 29
 import com.dmdirc.messages.MessageSinkManager;
30
+import com.dmdirc.util.URLBuilder;
30 31
 
31 32
 import java.util.Arrays;
32 33
 
@@ -43,6 +44,7 @@ public class WritableFrameContainerTest {
43 44
     @Mock private AggregateConfigProvider acp;
44 45
     @Mock private ServerManager serverManager;
45 46
     @Mock private MessageSinkManager messageSinkManager;
47
+    @Mock private URLBuilder urlBuilder;
46 48
     private CommandManager commands;
47 49
 
48 50
     @Before
@@ -59,7 +61,7 @@ public class WritableFrameContainerTest {
59 61
     @Test
60 62
     public void testGetNumLines() {
61 63
         final WritableFrameContainer container10
62
-                = new TestWritableFrameContainer(10, acp, commands, messageSinkManager);
64
+                = new TestWritableFrameContainer(10, acp, commands, messageSinkManager, urlBuilder);
63 65
 
64 66
         final int res0a = container10.getNumLines("");
65 67
         final int res0b = container10.getNumLines("\r");
@@ -89,7 +91,7 @@ public class WritableFrameContainerTest {
89 91
     @Test
90 92
     public void testSplitLine() {
91 93
         final WritableFrameContainer container10
92
-                = new TestWritableFrameContainer(10, acp, commands, messageSinkManager);
94
+                = new TestWritableFrameContainer(10, acp, commands, messageSinkManager, urlBuilder);
93 95
         final String[][][] tests = new String[][][]{
94 96
             {{""}, {""}},
95 97
             {{"0123456789"}, {"0123456789"}},

+ 3
- 2
test/com/dmdirc/harness/TestWritableFrameContainer.java Ver arquivo

@@ -30,6 +30,7 @@ import com.dmdirc.interfaces.Connection;
30 30
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
31 31
 import com.dmdirc.messages.MessageSinkManager;
32 32
 import com.dmdirc.ui.input.TabCompleter;
33
+import com.dmdirc.util.URLBuilder;
33 34
 
34 35
 import java.util.Collections;
35 36
 
@@ -41,9 +42,9 @@ public class TestWritableFrameContainer extends WritableFrameContainer {
41 42
 
42 43
     public TestWritableFrameContainer(final int lineLength,
43 44
             final AggregateConfigProvider cm, final CommandManager commandManager,
44
-            final MessageSinkManager messageSinkManager) {
45
+            final MessageSinkManager messageSinkManager, final URLBuilder urlBuilder) {
45 46
         super("raw", "Raw", "(Raw)", cm,
46
-                new GlobalCommandParser(cm, commandManager), messageSinkManager,
47
+                new GlobalCommandParser(cm, commandManager), messageSinkManager, urlBuilder,
47 48
                 Collections.<String>emptySet());
48 49
 
49 50
         this.lineLength = lineLength;

Carregando…
Cancelar
Salvar