Browse Source

Merge pull request #282 from csmith/master

Make the nick colour plugin use events for prefs.
pull/284/head
Greg Holmes 9 years ago
parent
commit
cc188371c3

+ 54
- 1
nickcolours/src/com/dmdirc/addons/nickcolours/NickColourManager.java View File

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

+ 10
- 1
nickcolours/src/com/dmdirc/addons/nickcolours/NickColourModule.java View File

24
 
24
 
25
 import com.dmdirc.addons.ui_swing.injection.SwingModule;
25
 import com.dmdirc.addons.ui_swing.injection.SwingModule;
26
 import com.dmdirc.plugins.PluginDomain;
26
 import com.dmdirc.plugins.PluginDomain;
27
+import com.dmdirc.plugins.PluginInfo;
27
 
28
 
28
 import dagger.Module;
29
 import dagger.Module;
29
 import dagger.Provides;
30
 import dagger.Provides;
34
 @Module(injects = NickColourManager.class, addsTo = SwingModule.class)
35
 @Module(injects = NickColourManager.class, addsTo = SwingModule.class)
35
 public class NickColourModule {
36
 public class NickColourModule {
36
 
37
 
38
+    /** This plugin's plugin info. */
39
+    private final PluginInfo pluginInfo;
37
     /** The domain for plugin settings. */
40
     /** The domain for plugin settings. */
38
     private final String domain;
41
     private final String domain;
39
 
42
 
40
-    public NickColourModule(final String domain) {
43
+    public NickColourModule(final PluginInfo pluginInfo, final String domain) {
44
+        this.pluginInfo = pluginInfo;
41
         this.domain = domain;
45
         this.domain = domain;
42
     }
46
     }
43
 
47
 
52
         return domain;
56
         return domain;
53
     }
57
     }
54
 
58
 
59
+    @Provides
60
+    public PluginInfo getPluginInfo() {
61
+        return pluginInfo;
62
+    }
63
+
55
 }
64
 }

+ 1
- 58
nickcolours/src/com/dmdirc/addons/nickcolours/NickColourPlugin.java View File

22
 
22
 
23
 package com.dmdirc.addons.nickcolours;
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
 import com.dmdirc.plugins.PluginInfo;
25
 import com.dmdirc.plugins.PluginInfo;
33
 import com.dmdirc.plugins.implementations.BasePlugin;
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
 import dagger.ObjectGraph;
28
 import dagger.ObjectGraph;
40
 
29
 
43
  */
32
  */
44
 public class NickColourPlugin extends BasePlugin {
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
     /** Nick colour manager. */
35
     /** Nick colour manager. */
55
     private NickColourManager nickColourManager;
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
     @Override
38
     @Override
67
     public void load(final PluginInfo pluginInfo, final ObjectGraph graph) {
39
     public void load(final PluginInfo pluginInfo, final ObjectGraph graph) {
68
         super.load(pluginInfo, graph);
40
         super.load(pluginInfo, graph);
69
 
41
 
70
-        setObjectGraph(graph.plus(new NickColourModule(pluginInfo.getDomain())));
42
+        setObjectGraph(graph.plus(new NickColourModule(pluginInfo, pluginInfo.getDomain())));
71
         nickColourManager = getObjectGraph().get(NickColourManager.class);
43
         nickColourManager = getObjectGraph().get(NickColourManager.class);
72
     }
44
     }
73
 
45
 
83
         nickColourManager.onUnload();
55
         nickColourManager.onUnload();
84
     }
56
     }
85
 
57
 
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
 }
58
 }

Loading…
Cancel
Save