Browse Source

DI the paste dialog

Change-Id: I5d4ee4e38668767bcf648efaa0f9cc1dd9a2b603
Reviewed-on: http://gerrit.dmdirc.com/3267
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
changes/67/3267/4
Greg Holmes 10 years ago
parent
commit
5717177c00

+ 38
- 30
src/com/dmdirc/addons/ui_swing/components/frames/InputTextFrame.java View File

@@ -23,7 +23,7 @@
23 23
 package com.dmdirc.addons.ui_swing.components.frames;
24 24
 
25 25
 import com.dmdirc.WritableFrameContainer;
26
-import com.dmdirc.addons.ui_swing.SwingController;
26
+import com.dmdirc.addons.ui_swing.MainFrame;
27 27
 import com.dmdirc.addons.ui_swing.UIUtilities;
28 28
 import com.dmdirc.addons.ui_swing.actions.CopyAction;
29 29
 import com.dmdirc.addons.ui_swing.actions.CutAction;
@@ -33,11 +33,12 @@ import com.dmdirc.addons.ui_swing.components.AwayLabel;
33 33
 import com.dmdirc.addons.ui_swing.components.TypingLabel;
34 34
 import com.dmdirc.addons.ui_swing.components.inputfields.SwingInputField;
35 35
 import com.dmdirc.addons.ui_swing.components.inputfields.SwingInputHandler;
36
-import com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialog;
36
+import com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialogFactory;
37 37
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
38 38
 import com.dmdirc.interfaces.ui.InputWindow;
39 39
 import com.dmdirc.logger.ErrorLevel;
40 40
 import com.dmdirc.logger.Logger;
41
+import com.dmdirc.plugins.PluginManager;
41 42
 import com.dmdirc.ui.input.InputHandler;
42 43
 import com.dmdirc.ui.messages.ColourManager;
43 44
 
@@ -51,6 +52,7 @@ import java.awt.event.MouseEvent;
51 52
 import java.awt.event.MouseListener;
52 53
 import java.io.IOException;
53 54
 
55
+import javax.inject.Provider;
54 56
 import javax.swing.JPanel;
55 57
 import javax.swing.JPopupMenu;
56 58
 import javax.swing.KeyStroke;
@@ -65,8 +67,6 @@ public abstract class InputTextFrame extends TextFrame implements InputWindow,
65 67
 
66 68
     /** Serial version UID. */
67 69
     private static final long serialVersionUID = 3;
68
-    /** Swing controller. */
69
-    private final SwingController controller;
70 70
     /** Config provider for this frame. */
71 71
     private final AggregateConfigProvider config;
72 72
     /** Colour manager for this frame. */
@@ -85,6 +85,12 @@ public abstract class InputTextFrame extends TextFrame implements InputWindow,
85 85
     private AwayLabel awayLabel;
86 86
     /** Typing indicator label. */
87 87
     private TypingLabel typingLabel;
88
+    /** Main frame. */
89
+    private final Provider<MainFrame> mainFrame;
90
+    /** Plugin Manager. */
91
+    private final PluginManager pluginManager;
92
+    /** Paste dialog factory. */
93
+    private final PasteDialogFactory pasteDialogFactory;
88 94
 
89 95
     /**
90 96
      * Creates a new instance of InputFrame.
@@ -97,9 +103,11 @@ public abstract class InputTextFrame extends TextFrame implements InputWindow,
97 103
             final WritableFrameContainer owner) {
98 104
         super(owner, deps);
99 105
 
100
-        this.controller = getController();
101 106
         this.config = owner.getConfigManager();
102 107
         this.colourManager = new ColourManager(config);
108
+        this.mainFrame = deps.mainFrame;
109
+        this.pluginManager = deps.pluginManager;
110
+        this.pasteDialogFactory = deps.pasteDialog;
103 111
 
104 112
         initComponents();
105 113
 
@@ -107,19 +115,19 @@ public abstract class InputTextFrame extends TextFrame implements InputWindow,
107 115
             //GTK users appear to dislike choice, ignore them if they want some.
108 116
             getInputField().setBackground(UIUtilities.convertColour(
109 117
                     colourManager.getColourFromString(
110
-                    config.getOptionString(
111
-                    "ui", "inputbackgroundcolour",
112
-                    "ui", "backgroundcolour"), null)));
118
+                            config.getOptionString(
119
+                                    "ui", "inputbackgroundcolour",
120
+                                    "ui", "backgroundcolour"), null)));
113 121
             getInputField().setForeground(UIUtilities.convertColour(
114 122
                     colourManager.getColourFromString(
115
-                    config.getOptionString(
116
-                    "ui", "inputforegroundcolour",
117
-                    "ui", "foregroundcolour"), null)));
123
+                            config.getOptionString(
124
+                                    "ui", "inputforegroundcolour",
125
+                                    "ui", "foregroundcolour"), null)));
118 126
             getInputField().setCaretColor(UIUtilities.convertColour(
119 127
                     colourManager.getColourFromString(
120
-                    config.getOptionString(
121
-                    "ui", "inputforegroundcolour",
122
-                    "ui", "foregroundcolour"), null)));
128
+                            config.getOptionString(
129
+                                    "ui", "inputforegroundcolour",
130
+                                    "ui", "foregroundcolour"), null)));
123 131
         }
124 132
 
125 133
         config.addChangeListener("ui", "inputforegroundcolour", this);
@@ -132,16 +140,16 @@ public abstract class InputTextFrame extends TextFrame implements InputWindow,
132 140
                 | KeyEvent.SHIFT_DOWN_MASK), "textpaneCopy");
133 141
         getInputField().getTextField().getActionMap().put("textpaneCopy",
134 142
                 new InputFieldCopyAction(getTextPane(),
135
-                getInputField().getTextField()));
143
+                        getInputField().getTextField()));
136 144
     }
137 145
 
138 146
     /**
139 147
      * Initialises the components for this frame.
140 148
      */
141 149
     private void initComponents() {
142
-        inputField = new SwingInputField(this, getController().getMainFrame());
143
-        inputHandler = new SwingInputHandler(controller.getPluginManager(),
144
-                inputField, getContainer().getCommandParser(), getContainer());
150
+        inputField = new SwingInputField(this, mainFrame.get());
151
+        inputHandler = new SwingInputHandler(pluginManager, inputField,
152
+                getContainer().getCommandParser(), getContainer());
145 153
         inputHandler.addValidationListener(inputField);
146 154
         inputHandler.setTabCompleter(((WritableFrameContainer) frameParent).
147 155
                 getTabCompleter());
@@ -331,7 +339,7 @@ public abstract class InputTextFrame extends TextFrame implements InputWindow,
331 339
         //- selection + clipboard)
332 340
         final String text = inputFieldText.substring(0, getInputField().
333 341
                 getSelectionStart()) + clipboard + inputFieldText.substring(
334
-                getInputField().getSelectionEnd());
342
+                        getInputField().getSelectionEnd());
335 343
         final String[] clipboardLines = getSplitLine(text);
336 344
         //check theres something to paste
337 345
         if (clipboardLines.length > 1) {
@@ -343,8 +351,8 @@ public abstract class InputTextFrame extends TextFrame implements InputWindow,
343 351
             if (pasteTrigger != null && getContainer().getNumLines(text)
344 352
                     > pasteTrigger) {
345 353
                 //show the multi line paste dialog
346
-                new PasteDialog(controller, this, text, getController()
347
-                        .getMainFrame()).display();
354
+                pasteDialogFactory.getPasteDialog(this, text, mainFrame.get()).
355
+                        displayOrRequestFocus();
348 356
             } else {
349 357
                 //send the lines
350 358
                 for (final String clipboardLine : clipboardLines) {
@@ -380,22 +388,22 @@ public abstract class InputTextFrame extends TextFrame implements InputWindow,
380 388
                 case "backgroundcolour":
381 389
                     getInputField().setBackground(UIUtilities.convertColour(
382 390
                             colourManager.getColourFromString(
383
-                            config.getOptionString(
384
-                            "ui", "inputbackgroundcolour",
385
-                            "ui", "backgroundcolour"), null)));
391
+                                    config.getOptionString(
392
+                                            "ui", "inputbackgroundcolour",
393
+                                            "ui", "backgroundcolour"), null)));
386 394
                     break;
387 395
                 case "inputforegroundcolour":
388 396
                 case "foregroundcolour":
389 397
                     getInputField().setForeground(UIUtilities.convertColour(
390 398
                             colourManager.getColourFromString(
391
-                            config.getOptionString(
392
-                            "ui", "inputforegroundcolour",
393
-                            "ui", "foregroundcolour"), null)));
399
+                                    config.getOptionString(
400
+                                            "ui", "inputforegroundcolour",
401
+                                            "ui", "foregroundcolour"), null)));
394 402
                     getInputField().setCaretColor(UIUtilities.convertColour(
395 403
                             colourManager.getColourFromString(
396
-                            config.getOptionString(
397
-                            "ui", "inputforegroundcolour",
398
-                            "ui", "foregroundcolour"), null)));
404
+                                    config.getOptionString(
405
+                                            "ui", "inputforegroundcolour",
406
+                                            "ui", "foregroundcolour"), null)));
399 407
                     break;
400 408
             }
401 409
         }

+ 8
- 0
src/com/dmdirc/addons/ui_swing/components/frames/TextFrame.java View File

@@ -36,6 +36,7 @@ import com.dmdirc.addons.ui_swing.actions.InputFieldCopyAction;
36 36
 import com.dmdirc.addons.ui_swing.actions.NicknameCopyAction;
37 37
 import com.dmdirc.addons.ui_swing.actions.SearchAction;
38 38
 import com.dmdirc.addons.ui_swing.components.SwingSearchBar;
39
+import com.dmdirc.addons.ui_swing.dialogs.paste.PasteDialogFactory;
39 40
 import com.dmdirc.addons.ui_swing.textpane.ClickTypeValue;
40 41
 import com.dmdirc.addons.ui_swing.textpane.MouseEventType;
41 42
 import com.dmdirc.addons.ui_swing.textpane.TextPane;
@@ -60,6 +61,7 @@ import com.dmdirc.interfaces.config.ConfigChangeListener;
60 61
 import com.dmdirc.interfaces.ui.InputWindow;
61 62
 import com.dmdirc.interfaces.ui.Window;
62 63
 import com.dmdirc.parser.common.ChannelJoinRequest;
64
+import com.dmdirc.plugins.PluginManager;
63 65
 import com.dmdirc.ui.IconManager;
64 66
 import com.dmdirc.ui.core.util.URLHandler;
65 67
 import com.dmdirc.ui.messages.ColourManager;
@@ -616,6 +618,8 @@ public abstract class TextFrame extends JPanel implements Window,
616 618
         final CommandController commandController;
617 619
         final EventBus eventBus;
618 620
         final AggregateConfigProvider globalConfig;
621
+        final PasteDialogFactory pasteDialog;
622
+        final PluginManager pluginManager;
619 623
 
620 624
         @Inject
621 625
         public TextFrameDependencies(
@@ -626,6 +630,8 @@ public abstract class TextFrame extends JPanel implements Window,
626 630
                 final URLHandler urlHandler,
627 631
                 final CommandController commandController,
628 632
                 final EventBus eventBus,
633
+                final PasteDialogFactory pasteDialog,
634
+                final PluginManager pluginManager,
629 635
                 @GlobalConfig final AggregateConfigProvider globalConfig) {
630 636
             this.textPaneFactory = textPaneFactory;
631 637
             this.controller = controller;
@@ -635,6 +641,8 @@ public abstract class TextFrame extends JPanel implements Window,
635 641
             this.commandController = commandController;
636 642
             this.eventBus = eventBus;
637 643
             this.globalConfig = globalConfig;
644
+            this.pasteDialog = pasteDialog;
645
+            this.pluginManager = pluginManager;
638 646
         }
639 647
 
640 648
     }

+ 29
- 15
src/com/dmdirc/addons/ui_swing/dialogs/paste/PasteDialog.java View File

@@ -22,13 +22,18 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.dialogs.paste;
24 24
 
25
-import com.dmdirc.addons.ui_swing.SwingController;
25
+import com.dmdirc.ClientModule.GlobalConfig;
26 26
 import com.dmdirc.addons.ui_swing.UIUtilities;
27 27
 import com.dmdirc.addons.ui_swing.components.frames.InputTextFrame;
28 28
 import com.dmdirc.addons.ui_swing.components.inputfields.SwingInputHandler;
29 29
 import com.dmdirc.addons.ui_swing.components.inputfields.TextAreaInputField;
30 30
 import com.dmdirc.addons.ui_swing.components.text.TextLabel;
31 31
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
32
+import com.dmdirc.interfaces.config.AggregateConfigProvider;
33
+import com.dmdirc.plugins.PluginManager;
34
+import com.dmdirc.ui.IconManager;
35
+import com.dmdirc.util.annotations.factory.Factory;
36
+import com.dmdirc.util.annotations.factory.Unbound;
32 37
 
33 38
 import java.awt.Window;
34 39
 import java.awt.event.ActionEvent;
@@ -49,6 +54,7 @@ import net.miginfocom.swing.MigLayout;
49 54
 /**
50 55
  * Allows the user to confirm and modify a multi-line paste.
51 56
  */
57
+@Factory(inject = true)
52 58
 public final class PasteDialog extends StandardDialog implements ActionListener,
53 59
         KeyListener {
54 60
 
@@ -66,26 +72,37 @@ public final class PasteDialog extends StandardDialog implements ActionListener,
66 72
     private JButton editButton;
67 73
     /** Parent window. */
68 74
     private final Window parentWindow;
69
-    /** Swing controller. */
70
-    @Deprecated
71
-    private final SwingController controller;
75
+    /** Icon manager to retrieve icons with. */
76
+    private final IconManager iconManager;
77
+    /** Plugin Manager to retrieve tab completers with. */
78
+    private final PluginManager pluginManager;
79
+    /** Config to read settings from. */
80
+    private final AggregateConfigProvider config;
72 81
 
73 82
     /**
74 83
      * Creates a new instance of PreferencesDialog.
75 84
      *
76
-     * @param controller   Swing controller
85
+     * @param iconManager Icon manager to retrieve icons with
86
+     * @param config        Config to read settings from
87
+     * @param pluginManager to retrieve tab completers with
77 88
      * @param newParent    The frame that owns this dialog
78 89
      * @param text         text to show in the paste dialog
79 90
      * @param parentWindow Parent window
80 91
      */
81
-    public PasteDialog(final SwingController controller,
82
-            final InputTextFrame newParent, final String text,
83
-            final Window parentWindow) {
92
+    public PasteDialog(
93
+            @SuppressWarnings("qualifiers") @GlobalConfig final IconManager iconManager,
94
+            @SuppressWarnings("qualifiers") @GlobalConfig final AggregateConfigProvider config,
95
+            final PluginManager pluginManager,
96
+            @Unbound final InputTextFrame newParent,
97
+            @Unbound final String text,
98
+            @Unbound final Window parentWindow) {
84 99
         super(parentWindow, ModalityType.MODELESS);
85 100
 
86 101
         parent = newParent;
87 102
         this.parentWindow = parentWindow;
88
-        this.controller = controller;
103
+        this.iconManager = iconManager;
104
+        this.config = config;
105
+        this.pluginManager = pluginManager;
89 106
 
90 107
         initComponents(text);
91 108
         initListeners();
@@ -105,9 +122,7 @@ public final class PasteDialog extends StandardDialog implements ActionListener,
105 122
      */
106 123
     private void initComponents(final String text) {
107 124
         scrollPane = new JScrollPane();
108
-        textField =
109
-                new TextAreaInputField(controller.getIconManager(), controller.getGlobalConfig(),
110
-                text);
125
+        textField = new TextAreaInputField(iconManager, config, text);
111 126
         editButton = new JButton("Edit");
112 127
         infoLabel = new TextLabel();
113 128
 
@@ -127,9 +142,8 @@ public final class PasteDialog extends StandardDialog implements ActionListener,
127 142
         textField.setColumns(50);
128 143
         textField.setRows(10);
129 144
 
130
-        new SwingInputHandler(controller.getPluginManager(), textField,
131
-                parent.getContainer().getCommandParser(), parent.getContainer())
132
-                .setTypes(false, false, true, false);
145
+        new SwingInputHandler(pluginManager, textField, parent.getContainer().getCommandParser(),
146
+                parent.getContainer()).setTypes(false, false, true, false);
133 147
 
134 148
         scrollPane.setViewportView(textField);
135 149
         scrollPane.setVisible(false);

Loading…
Cancel
Save