Przeglądaj źródła

Active window plugin now provides active message sink

Fixes-Issue: CLIENT-296
Change-Id: I1c44e0bb7ba712ea9825627b4086db1b34a6e84e
Reviewed-on: http://gerrit.dmdirc.com/2140
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Greg Holmes <greg@dmdirc.com>
tags/0.7rc1
Chris Smith 13 lat temu
rodzic
commit
0b28fe1ebe

+ 72
- 0
src/com/dmdirc/addons/activewindow/ActiveWindowMessageSink.java Wyświetl plik

@@ -0,0 +1,72 @@
1
+/*
2
+ * Copyright (c) 2006-2011 DMDirc Developers
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in
12
+ * all copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ * SOFTWARE.
21
+ */
22
+
23
+package com.dmdirc.addons.activewindow;
24
+
25
+import com.dmdirc.WritableFrameContainer;
26
+import com.dmdirc.addons.ui_swing.MainFrame;
27
+import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
28
+import com.dmdirc.messages.MessageSink;
29
+import com.dmdirc.messages.MessageSinkManager;
30
+
31
+import java.util.Date;
32
+import java.util.regex.Pattern;
33
+
34
+/**
35
+ * A message sink which passes messages onto the active swing window.
36
+ */
37
+public class ActiveWindowMessageSink implements MessageSink {
38
+
39
+    /** The pattern to use to match this sink. */
40
+    private static final Pattern PATTERN = Pattern.compile("active");
41
+
42
+    /** The main frame to use to get the currently active frame. */
43
+    private final MainFrame mainFrame;
44
+
45
+    /**
46
+     * Creates a new ActiveWindowMessageSink for the specified mainframe.
47
+     *
48
+     * @param mainFrame The mainframe to use to retrieve active windows
49
+     */
50
+    public ActiveWindowMessageSink(final MainFrame mainFrame) {
51
+        this.mainFrame = mainFrame;
52
+    }
53
+
54
+    /** {@inheritDoc} */
55
+    @Override
56
+    public Pattern getPattern() {
57
+        return PATTERN;
58
+    }
59
+
60
+    /** {@inheritDoc} */
61
+    @Override
62
+    public void handleMessage(final MessageSinkManager despatcher,
63
+            final WritableFrameContainer source, final String[] patternMatches,
64
+            final Date date, final String messageType, final Object... args) {
65
+        final TextFrame frame = mainFrame.getActiveFrame();
66
+        if (frame.getContainer() instanceof WritableFrameContainer) {
67
+            ((WritableFrameContainer) frame.getContainer())
68
+                    .addLine(messageType, date, args);
69
+        }
70
+    }
71
+
72
+}

+ 23
- 0
src/com/dmdirc/addons/activewindow/ActiveWindowPlugin.java Wyświetl plik

@@ -23,11 +23,15 @@
23 23
 package com.dmdirc.addons.activewindow;
24 24
 
25 25
 import com.dmdirc.addons.ui_swing.SwingController;
26
+import com.dmdirc.messages.MessageSinkManager;
26 27
 import com.dmdirc.plugins.BasePlugin;
27 28
 
28 29
 /** Plugin to provide an active window command to the Swing UI. */
29 30
 public final class ActiveWindowPlugin extends BasePlugin {
30 31
 
32
+    /** The message sink to register and unregister. */
33
+    private final ActiveWindowMessageSink sink;
34
+
31 35
     /**
32 36
      * Creates a new instance of this plugin.
33 37
      *
@@ -35,7 +39,26 @@ public final class ActiveWindowPlugin extends BasePlugin {
35 39
      */
36 40
     public ActiveWindowPlugin(final SwingController controller) {
37 41
         super();
42
+
43
+        sink = new ActiveWindowMessageSink(controller.getMainFrame());
44
+
38 45
         registerCommand(new ActiveCommand(controller.getMainFrame()),
39 46
                 ActiveCommand.INFO);
40 47
     }
48
+
49
+    /** {@inheritDoc} */
50
+    @Override
51
+    public void onLoad() {
52
+        super.onLoad();
53
+
54
+        MessageSinkManager.getManager().addSink(sink);
55
+    }
56
+
57
+    /** {@inheritDoc} */
58
+    @Override
59
+    public void onUnload() {
60
+        super.onUnload();
61
+
62
+        MessageSinkManager.getManager().removeSink(sink);
63
+    }
41 64
 }

Ładowanie…
Anuluj
Zapisz