Browse Source

Add showraw setting to DebugPlugin.

This replaces the old general.showrawwindow setting.

Closes DMDirc/DMDirc#753
pull/520/head
Shane Mc Cormack 7 years ago
parent
commit
7305ba67dd

+ 2
- 1
debug/plugin.config View File

@@ -23,4 +23,5 @@ updates:
23 23
 version:
24 24
   friendly=1.0
25 25
 
26
-defaults:
26
+defaults:
27
+ showraw=false

+ 76
- 0
debug/src/main/java/com/dmdirc/addons/debug/DebugManager.java View File

@@ -0,0 +1,76 @@
1
+/*
2
+ * Copyright (c) 2006-2017 DMDirc Developers
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
5
+ * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
7
+ * permit persons to whom the Software is furnished to do so, subject to the following conditions:
8
+ *
9
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ * Software.
11
+ *
12
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
14
+ * OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
15
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ */
17
+
18
+package com.dmdirc.addons.debug;
19
+
20
+import com.dmdirc.config.GlobalConfig;
21
+import com.dmdirc.config.provider.AggregateConfigProvider;
22
+import com.dmdirc.events.ServerConnectingEvent;
23
+import com.dmdirc.events.eventbus.EventBus;
24
+import com.dmdirc.interfaces.WindowModel;
25
+import com.dmdirc.plugins.PluginDomain;
26
+import com.dmdirc.plugins.PluginInfo;
27
+import com.dmdirc.ui.WindowManager;
28
+import net.engio.mbassy.listener.Handler;
29
+
30
+import javax.inject.Inject;
31
+import javax.inject.Singleton;
32
+import java.util.Date;
33
+
34
+/**
35
+ * Debug plugin manager.
36
+ */
37
+@Singleton
38
+public class DebugManager {
39
+
40
+    private final RawWindowFactory windowFactory;
41
+
42
+    private final AggregateConfigProvider config;
43
+
44
+    private final String domain;
45
+
46
+    private final WindowManager windowManager;
47
+
48
+    private final EventBus eventBus;
49
+
50
+    @Inject
51
+    public DebugManager(@PluginDomain(DebugPlugin.class) final String domain,
52
+            @GlobalConfig final AggregateConfigProvider globalConfig, final RawWindowFactory windowFactory,
53
+            final WindowManager windowManager, final EventBus eventBus) {
54
+        this.domain = domain;
55
+        this.windowManager = windowManager;
56
+        this.eventBus = eventBus;
57
+        this.config = globalConfig;
58
+        this.windowFactory = windowFactory;
59
+    }
60
+
61
+    public void load() {
62
+        eventBus.subscribe(this);
63
+    }
64
+
65
+    public void unload() {
66
+        eventBus.unsubscribe(this);
67
+    }
68
+
69
+    @Handler
70
+    public void handleServerConnecting(final ServerConnectingEvent event) {
71
+        if (config.getOptionBool(domain, "showraw") && !windowManager
72
+                .getChildren(event.getConnection().getWindowModel()).stream().anyMatch(RawWindow.class::isInstance)) {
73
+            windowFactory.getRawWindow(event.getConnection());
74
+        }
75
+    }
76
+}

+ 14
- 2
debug/src/main/java/com/dmdirc/addons/debug/DebugModule.java View File

@@ -37,15 +37,27 @@ import com.dmdirc.addons.debug.commands.ShowRaw;
37 37
 import com.dmdirc.addons.debug.commands.StatusbarMessage;
38 38
 import com.dmdirc.addons.debug.commands.Threads;
39 39
 import com.dmdirc.addons.debug.commands.Time;
40
-
40
+import com.dmdirc.plugins.PluginDomain;
41
+import com.dmdirc.plugins.PluginInfo;
41 42
 import dagger.Module;
42 43
 import dagger.Provides;
43 44
 
44 45
 /**
45 46
  * Dependency injection module for the debug plugin.
46 47
  */
47
-@Module(injects = Debug.class, addsTo = ClientModule.class)
48
+@Module(addsTo = ClientModule.class, injects = {DebugManager.class, Debug.class})
48 49
 public class DebugModule {
50
+    private final PluginInfo pluginInfo;
51
+
52
+    public DebugModule(final PluginInfo pluginInfo) {
53
+        this.pluginInfo = pluginInfo;
54
+    }
55
+
56
+    @Provides
57
+    @PluginDomain(DebugPlugin.class)
58
+    public String getDomain() {
59
+        return pluginInfo.getDomain();
60
+    }
49 61
 
50 62
     @Provides(type = Provides.Type.SET)
51 63
     public DebugCommand getCommand(final Benchmark command) {

+ 17
- 1
debug/src/main/java/com/dmdirc/addons/debug/DebugPlugin.java View File

@@ -22,17 +22,33 @@ import com.dmdirc.plugins.implementations.BaseCommandPlugin;
22 22
 
23 23
 import dagger.ObjectGraph;
24 24
 
25
+
25 26
 /**
26 27
  * Debug plugin providing commands to aid in debugging the client.
27 28
  */
28 29
 public class DebugPlugin extends BaseCommandPlugin {
29 30
 
31
+    /** The manager in use. */
32
+    private DebugManager manager;
33
+
30 34
     @Override
31 35
     public void load(final PluginInfo pluginInfo, final ObjectGraph graph) {
32 36
         super.load(pluginInfo, graph);
33 37
 
34
-        setObjectGraph(graph.plus(new DebugModule()));
38
+        setObjectGraph(graph.plus(new DebugModule(pluginInfo)));
39
+        manager = getObjectGraph().get(DebugManager.class);
35 40
         registerCommand(Debug.class, Debug.INFO);
36 41
     }
37 42
 
43
+    @Override
44
+    public void onLoad() {
45
+        super.onLoad();
46
+        manager.load();
47
+    }
48
+
49
+    @Override
50
+    public void onUnload() {
51
+        super.onUnload();
52
+        manager.unload();
53
+    }
38 54
 }

Loading…
Cancel
Save