Bläddra i källkod

Make the nick colour plugin use events for prefs.

DMDirc/DMDirc#428
pull/282/head
Chris Smith 9 år sedan
förälder
incheckning
b4efab87d9

+ 57
- 1
nickcolours/src/com/dmdirc/addons/nickcolours/NickColourManager.java Visa fil

@@ -25,10 +25,17 @@ package com.dmdirc.addons.nickcolours;
25 25
 import com.dmdirc.ClientModule.GlobalConfig;
26 26
 import com.dmdirc.DMDircMBassador;
27 27
 import com.dmdirc.addons.ui_swing.EDTInvocation;
28
+import com.dmdirc.addons.ui_swing.UIUtilities;
29
+import com.dmdirc.addons.ui_swing.injection.MainWindow;
28 30
 import com.dmdirc.config.ConfigBinder;
29 31
 import com.dmdirc.config.ConfigBinding;
32
+import com.dmdirc.config.prefs.PluginPreferencesCategory;
33
+import com.dmdirc.config.prefs.PreferencesCategory;
34
+import com.dmdirc.config.prefs.PreferencesSetting;
35
+import com.dmdirc.config.prefs.PreferencesType;
30 36
 import com.dmdirc.events.ChannelGotNamesEvent;
31 37
 import com.dmdirc.events.ChannelJoinEvent;
38
+import com.dmdirc.events.ClientPrefsOpenedEvent;
32 39
 import com.dmdirc.events.DisplayProperty;
33 40
 import com.dmdirc.interfaces.GroupChatUser;
34 41
 import com.dmdirc.interfaces.User;
@@ -36,14 +43,18 @@ import com.dmdirc.interfaces.config.AggregateConfigProvider;
36 43
 import com.dmdirc.interfaces.config.ReadOnlyConfigProvider;
37 44
 import com.dmdirc.parser.interfaces.StringConverter;
38 45
 import com.dmdirc.plugins.PluginDomain;
46
+import com.dmdirc.plugins.PluginInfo;
47
+import com.dmdirc.ui.IconManager;
39 48
 import com.dmdirc.ui.messages.ColourManager;
40 49
 import com.dmdirc.util.colours.Colour;
41 50
 
51
+import java.awt.Window;
42 52
 import java.util.ArrayList;
43 53
 import java.util.Collection;
44 54
 import java.util.List;
45 55
 
46 56
 import javax.inject.Inject;
57
+import javax.inject.Provider;
47 58
 import javax.inject.Singleton;
48 59
 
49 60
 import net.engio.mbassy.listener.Handler;
@@ -62,8 +73,13 @@ public class NickColourManager {
62 73
     private final ConfigBinder configBinder;
63 74
     /** Plugin's setting domain. */
64 75
     private final String domain;
76
+    private final IconManager iconManager;
77
+    private final Provider<Window> mainWindowProvider;
65 78
     /** Event bus to subscribe to events on . */
66 79
     private final DMDircMBassador eventBus;
80
+    /** The plugin's info. */
81
+    // TODO: Should probably make this final and introduce a factory to create NickColourManagers.
82
+    private PluginInfo pluginInfo;
67 83
     /** "Random" colours to use to colour nicknames. */
68 84
     private String[] randColours = {
69 85
         "E90E7F", "8E55E9", "B30E0E", "18B33C", "58ADB3", "9E54B3", "B39875", "3176B3",};
@@ -72,13 +88,18 @@ public class NickColourManager {
72 88
     private boolean userandomcolour;
73 89
 
74 90
     @Inject
75
-    public NickColourManager(@GlobalConfig final ColourManager colourManager,
91
+    public NickColourManager(
92
+            @GlobalConfig final ColourManager colourManager,
76 93
             @PluginDomain(NickColourPlugin.class) final String domain,
77 94
             @GlobalConfig final AggregateConfigProvider globalConfig,
95
+            final IconManager iconManager,
96
+            @MainWindow final Provider<Window> mainWindowProvider,
78 97
             final DMDircMBassador eventBus) {
79 98
         this.domain = domain;
80 99
         this.globalConfig = globalConfig;
81 100
         this.colourManager = colourManager;
101
+        this.iconManager = iconManager;
102
+        this.mainWindowProvider = mainWindowProvider;
82 103
         this.eventBus = eventBus;
83 104
         configBinder = globalConfig.getBinder().withDefaultDomain(domain);
84 105
     }
@@ -255,4 +276,39 @@ public class NickColourManager {
255 276
     public void handleRandomColours(final List<String> value) {
256 277
         randColours = value.toArray(new String[value.size()]);
257 278
     }
279
+
280
+    public void setPluginInfo(final PluginInfo pluginInfo) {
281
+        this.pluginInfo = pluginInfo;
282
+    }
283
+
284
+    @Handler
285
+    public void handlePrefsOpened(final ClientPrefsOpenedEvent event) {
286
+        final PreferencesCategory general = new PluginPreferencesCategory(
287
+                pluginInfo, "Nick Colours",
288
+                "General configuration for NickColour plugin.");
289
+        final PreferencesCategory colours = new PluginPreferencesCategory(
290
+                pluginInfo, "Colours",
291
+                "Set colours for specific nicknames.", UIUtilities.invokeAndWait(
292
+                () -> new NickColourPanel(mainWindowProvider.get(), iconManager, colourManager,
293
+                        event.getModel().getIdentity(), event.getModel().getConfigManager(),
294
+                        pluginInfo.getDomain()
295
+                )));
296
+
297
+        general.addSetting(new PreferencesSetting(PreferencesType.BOOLEAN,
298
+                pluginInfo.getDomain(), "userandomcolour", "Use random colour",
299
+                "Use a pseudo-random colour for each person?",
300
+                event.getModel().getConfigManager(), event.getModel().getIdentity()));
301
+        general.addSetting(new PreferencesSetting(PreferencesType.BOOLEAN,
302
+                pluginInfo.getDomain(), "useowncolour", "Use colour for own nick",
303
+                "Always use the same colour for our own nickname?",
304
+                event.getModel().getConfigManager(), event.getModel().getIdentity()));
305
+        general.addSetting(new PreferencesSetting(PreferencesType.COLOUR, pluginInfo.getDomain(),
306
+                "owncolour", "Colour to use for own nick",
307
+                "Colour used for our own nickname, if above setting is enabled.",
308
+                event.getModel().getConfigManager(), event.getModel().getIdentity()));
309
+
310
+        general.addSubCategory(colours);
311
+        event.getModel().getCategory("Plugins").addSubCategory(general);
312
+    }
313
+
258 314
 }

+ 1
- 57
nickcolours/src/com/dmdirc/addons/nickcolours/NickColourPlugin.java Visa fil

@@ -22,19 +22,8 @@
22 22
 
23 23
 package com.dmdirc.addons.nickcolours;
24 24
 
25
-import com.dmdirc.addons.ui_swing.SwingController;
26
-import com.dmdirc.addons.ui_swing.UIUtilities;
27
-import com.dmdirc.config.prefs.PluginPreferencesCategory;
28
-import com.dmdirc.config.prefs.PreferencesCategory;
29
-import com.dmdirc.config.prefs.PreferencesDialogModel;
30
-import com.dmdirc.config.prefs.PreferencesSetting;
31
-import com.dmdirc.config.prefs.PreferencesType;
32 25
 import com.dmdirc.plugins.PluginInfo;
33 26
 import com.dmdirc.plugins.implementations.BasePlugin;
34
-import com.dmdirc.ui.IconManager;
35
-import com.dmdirc.ui.messages.ColourManager;
36
-
37
-import java.awt.Window;
38 27
 
39 28
 import dagger.ObjectGraph;
40 29
 
@@ -43,32 +32,16 @@ import dagger.ObjectGraph;
43 32
  */
44 33
 public class NickColourPlugin extends BasePlugin {
45 34
 
46
-    /** Plugin info. */
47
-    private final PluginInfo pluginInfo;
48
-    /** Main window that will own any dialogs. */
49
-    private final Window mainWindow;
50
-    /** Icon manager. */
51
-    private final IconManager iconManager;
52
-    /** Colour manager. */
53
-    private final ColourManager colourManager;
54 35
     /** Nick colour manager. */
55 36
     private NickColourManager nickColourManager;
56 37
 
57
-    public NickColourPlugin(final PluginInfo pluginInfo, final SwingController controller,
58
-            final IconManager iconManager,
59
-            final ColourManager colourManager) {
60
-        this.pluginInfo = pluginInfo;
61
-        this.mainWindow = controller.getMainFrame();
62
-        this.iconManager = iconManager;
63
-        this.colourManager = colourManager;
64
-    }
65
-
66 38
     @Override
67 39
     public void load(final PluginInfo pluginInfo, final ObjectGraph graph) {
68 40
         super.load(pluginInfo, graph);
69 41
 
70 42
         setObjectGraph(graph.plus(new NickColourModule(pluginInfo.getDomain())));
71 43
         nickColourManager = getObjectGraph().get(NickColourManager.class);
44
+        nickColourManager.setPluginInfo(pluginInfo);
72 45
     }
73 46
 
74 47
     @Override
@@ -83,33 +56,4 @@ public class NickColourPlugin extends BasePlugin {
83 56
         nickColourManager.onUnload();
84 57
     }
85 58
 
86
-    @Override
87
-    public void showConfig(final PreferencesDialogModel manager) {
88
-        final PreferencesCategory general = new PluginPreferencesCategory(
89
-                pluginInfo, "Nick Colours",
90
-                "General configuration for NickColour plugin.");
91
-        final PreferencesCategory colours = new PluginPreferencesCategory(
92
-                pluginInfo, "Colours",
93
-                "Set colours for specific nicknames.", UIUtilities.invokeAndWait(
94
-                () -> new NickColourPanel(mainWindow, iconManager, colourManager,
95
-                        manager.getIdentity(), manager.getConfigManager(),
96
-                        pluginInfo.getDomain())));
97
-
98
-        general.addSetting(new PreferencesSetting(PreferencesType.BOOLEAN,
99
-                pluginInfo.getDomain(), "userandomcolour", "Use random colour",
100
-                "Use a pseudo-random colour for each person?",
101
-                manager.getConfigManager(), manager.getIdentity()));
102
-        general.addSetting(new PreferencesSetting(PreferencesType.BOOLEAN,
103
-                pluginInfo.getDomain(), "useowncolour", "Use colour for own nick",
104
-                "Always use the same colour for our own nickname?",
105
-                manager.getConfigManager(), manager.getIdentity()));
106
-        general.addSetting(new PreferencesSetting(PreferencesType.COLOUR, pluginInfo.getDomain(),
107
-                "owncolour", "Colour to use for own nick",
108
-                "Colour used for our own nickname, if above setting is "
109
-                + "enabled.", manager.getConfigManager(), manager.getIdentity()));
110
-
111
-        general.addSubCategory(colours);
112
-        manager.getCategory("Plugins").addSubCategory(general);
113
-    }
114
-
115 59
 }

Laddar…
Avbryt
Spara