소스 검색

Remove DialogManager.

Replace remaining legitimate usages with [Keyed]DialogProviders.

Remove the DialogManager itself, all the getters for it, all the places keeping
references around to it, all the dialogs taking it in the constructor, and all
the partridges in pear trees that had one hidden away.

Change-Id: I0a1234960a4e08c0a7c6afc08a5432102b17c125
Reviewed-on: http://gerrit.dmdirc.com/3048
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Greg Holmes <greg@dmdirc.com>
tags/0.8
Chris Smith 10 년 전
부모
커밋
edc23493c8
69개의 변경된 파일620개의 추가작업 그리고 682개의 파일을 삭제
  1. 1
    7
      src/com/dmdirc/addons/dcc/DCCManager.java
  2. 1
    7
      src/com/dmdirc/addons/dcc/PlaceholderContainer.java
  3. 1
    4
      src/com/dmdirc/addons/lagdisplay/ServerInfoDialog.java
  4. 1
    1
      src/com/dmdirc/addons/nickcolours/NickColourInputDialog.java
  5. 1
    1
      src/com/dmdirc/addons/serverlistdialog/AddEntryInputDialog.java
  6. 1
    1
      src/com/dmdirc/addons/serverlistdialog/AddGroupInputDialog.java
  7. 1
    5
      src/com/dmdirc/addons/serverlistdialog/ServerListDialog.java
  8. 2
    7
      src/com/dmdirc/addons/ui_swing/MainFrame.java
  9. 2
    3
      src/com/dmdirc/addons/ui_swing/PrefsComponentFactory.java
  10. 17
    37
      src/com/dmdirc/addons/ui_swing/SwingController.java
  11. 63
    20
      src/com/dmdirc/addons/ui_swing/SwingManager.java
  12. 1
    1
      src/com/dmdirc/addons/ui_swing/cinch/ConfirmAction.java
  13. 1
    1
      src/com/dmdirc/addons/ui_swing/cinch/InputAction.java
  14. 1
    7
      src/com/dmdirc/addons/ui_swing/components/addonbrowser/AddonInfoLabel.java
  15. 2
    2
      src/com/dmdirc/addons/ui_swing/components/addonbrowser/DataLoaderWorker.java
  16. 1
    9
      src/com/dmdirc/addons/ui_swing/components/addonbrowser/InstallListener.java
  17. 3
    3
      src/com/dmdirc/addons/ui_swing/components/addonbrowser/InstallWorker.java
  18. 2
    5
      src/com/dmdirc/addons/ui_swing/components/addonbrowser/InstallerWindow.java
  19. 12
    11
      src/com/dmdirc/addons/ui_swing/components/addonpanel/AddonPanel.java
  20. 7
    3
      src/com/dmdirc/addons/ui_swing/components/addonpanel/PluginPanel.java
  21. 5
    2
      src/com/dmdirc/addons/ui_swing/components/addonpanel/ThemePanel.java
  22. 8
    21
      src/com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay.java
  23. 5
    10
      src/com/dmdirc/addons/ui_swing/components/durationeditor/DurationEditor.java
  24. 2
    3
      src/com/dmdirc/addons/ui_swing/components/frames/ServerFrame.java
  25. 1
    1
      src/com/dmdirc/addons/ui_swing/components/menubar/ChannelMenu.java
  26. 14
    9
      src/com/dmdirc/addons/ui_swing/components/menubar/HelpMenu.java
  27. 11
    8
      src/com/dmdirc/addons/ui_swing/components/menubar/SettingsMenu.java
  28. 1
    2
      src/com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel.java
  29. 1
    4
      src/com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup.java
  30. 13
    3
      src/com/dmdirc/addons/ui_swing/components/statusbar/FeedbackNag.java
  31. 1
    7
      src/com/dmdirc/addons/ui_swing/components/statusbar/InviteLabel.java
  32. 2
    4
      src/com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup.java
  33. 3
    5
      src/com/dmdirc/addons/ui_swing/components/statusbar/MessagePopup.java
  34. 1
    4
      src/com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.java
  35. 9
    9
      src/com/dmdirc/addons/ui_swing/components/statusbar/UpdaterLabel.java
  36. 1
    4
      src/com/dmdirc/addons/ui_swing/components/statusbar/UpdaterPopup.java
  37. 2
    3
      src/com/dmdirc/addons/ui_swing/dialogs/ChannelJoinDialog.java
  38. 2
    3
      src/com/dmdirc/addons/ui_swing/dialogs/ConfirmQuitDialog.java
  39. 0
    253
      src/com/dmdirc/addons/ui_swing/dialogs/DialogManager.java
  40. 8
    5
      src/com/dmdirc/addons/ui_swing/dialogs/FeedbackDialog.java
  41. 1
    3
      src/com/dmdirc/addons/ui_swing/dialogs/NewServerDialog.java
  42. 3
    20
      src/com/dmdirc/addons/ui_swing/dialogs/StandardDialog.java
  43. 4
    6
      src/com/dmdirc/addons/ui_swing/dialogs/StandardInputDialog.java
  44. 2
    4
      src/com/dmdirc/addons/ui_swing/dialogs/StandardMessageDialog.java
  45. 2
    3
      src/com/dmdirc/addons/ui_swing/dialogs/StandardQuestionDialog.java
  46. 7
    5
      src/com/dmdirc/addons/ui_swing/dialogs/about/AboutDialog.java
  47. 21
    13
      src/com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionEditorDialog.java
  48. 18
    17
      src/com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsGroupPanel.java
  49. 11
    12
      src/com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsManagerDialog.java
  50. 7
    9
      src/com/dmdirc/addons/ui_swing/dialogs/aliases/AliasManagerDialog.java
  51. 1
    1
      src/com/dmdirc/addons/ui_swing/dialogs/channellist/ChannelListDialog.java
  52. 1
    1
      src/com/dmdirc/addons/ui_swing/dialogs/channelsetting/ChannelListModesPane.java
  53. 6
    7
      src/com/dmdirc/addons/ui_swing/dialogs/channelsetting/ChannelSettingsDialog.java
  54. 1
    1
      src/com/dmdirc/addons/ui_swing/dialogs/error/ErrorListDialog.java
  55. 1
    1
      src/com/dmdirc/addons/ui_swing/dialogs/paste/PasteDialog.java
  56. 18
    7
      src/com/dmdirc/addons/ui_swing/dialogs/prefs/SwingPreferencesDialog.java
  57. 1
    1
      src/com/dmdirc/addons/ui_swing/dialogs/prefs/URLConfigPanel.java
  58. 1
    1
      src/com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileManagerDialog.java
  59. 2
    2
      src/com/dmdirc/addons/ui_swing/dialogs/serversetting/IgnoreListPanel.java
  60. 4
    11
      src/com/dmdirc/addons/ui_swing/dialogs/serversetting/ServerSettingsDialog.java
  61. 2
    4
      src/com/dmdirc/addons/ui_swing/dialogs/sslcertificate/SSLCertificateDialog.java
  62. 3
    22
      src/com/dmdirc/addons/ui_swing/dialogs/updater/SwingRestartDialog.java
  63. 7
    13
      src/com/dmdirc/addons/ui_swing/dialogs/updater/SwingUpdaterDialog.java
  64. 11
    5
      src/com/dmdirc/addons/ui_swing/dialogs/url/URLDialog.java
  65. 139
    0
      src/com/dmdirc/addons/ui_swing/injection/DialogModule.java
  66. 131
    0
      src/com/dmdirc/addons/ui_swing/injection/KeyedDialogProvider.java
  67. 1
    9
      src/com/dmdirc/addons/ui_swing/injection/SwingModule.java
  68. 2
    5
      src/com/dmdirc/addons/ui_swing/wizard/WizardDialog.java
  69. 1
    4
      src/com/dmdirc/addons/ui_swing/wizard/firstrun/SwingFirstRunWizard.java

+ 1
- 7
src/com/dmdirc/addons/dcc/DCCManager.java 파일 보기

@@ -33,7 +33,6 @@ import com.dmdirc.addons.dcc.kde.KFileChooser;
33 33
 import com.dmdirc.addons.ui_swing.MainFrame;
34 34
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
35 35
 import com.dmdirc.addons.ui_swing.components.frames.ComponentFrame;
36
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
37 36
 import com.dmdirc.commandline.CommandLineOptionsModule.Directory;
38 37
 import com.dmdirc.commandline.CommandLineOptionsModule.DirectoryType;
39 38
 import com.dmdirc.config.prefs.PluginPreferencesCategory;
@@ -89,8 +88,6 @@ public class DCCManager implements ActionListener {
89 88
     private final CommandController commandController;
90 89
     /** The factory to use for tab completers. */
91 90
     private final TabCompleterFactory tabCompleterFactory;
92
-    /** The dialog manager to register popups with. */
93
-    private final DialogManager dialogManager;
94 91
     /** The main frame that will own any new windows. */
95 92
     private final MainFrame mainFrame;
96 93
     /** The configuration domain to use. */
@@ -99,7 +96,6 @@ public class DCCManager implements ActionListener {
99 96
     /**
100 97
      * Creates a new instance of this plugin.
101 98
      *
102
-     * @param dialogManager The dialog manager to register popups with.
103 99
      * @param mainFrame The main frame that will own any new windows.
104 100
      * @param pluginInfo This plugin's plugin info
105 101
      * @param identityController The Identity controller that provides the current config
@@ -113,7 +109,6 @@ public class DCCManager implements ActionListener {
113 109
      */
114 110
     @Inject
115 111
     public DCCManager(
116
-            final DialogManager dialogManager,
117 112
             final MainFrame mainFrame,
118 113
             final PluginInfo pluginInfo,
119 114
             final IdentityController identityController,
@@ -124,7 +119,6 @@ public class DCCManager implements ActionListener {
124 119
             final TabCompleterFactory tabCompleterFactory,
125 120
             final SwingWindowFactory windowFactory,
126 121
             @Directory(DirectoryType.BASE) final String baseDirectory) {
127
-        this.dialogManager = dialogManager;
128 122
         this.mainFrame = mainFrame;
129 123
         this.messageSinkManager = messageSinkManager;
130 124
         this.windowManager = windowManager;
@@ -677,7 +671,7 @@ public class DCCManager implements ActionListener {
677 671
      * Create the container window.
678 672
      */
679 673
     protected void createContainer() {
680
-        container = new PlaceholderContainer(this, config, dialogManager, mainFrame);
674
+        container = new PlaceholderContainer(this, config, mainFrame);
681 675
         windowManager.addWindow(container);
682 676
     }
683 677
 

+ 1
- 7
src/com/dmdirc/addons/dcc/PlaceholderContainer.java 파일 보기

@@ -24,7 +24,6 @@ package com.dmdirc.addons.dcc;
24 24
 
25 25
 import com.dmdirc.FrameContainer;
26 26
 import com.dmdirc.addons.ui_swing.MainFrame;
27
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
28 27
 import com.dmdirc.addons.ui_swing.dialogs.StandardQuestionDialog;
29 28
 import com.dmdirc.interfaces.Connection;
30 29
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
@@ -39,8 +38,6 @@ public class PlaceholderContainer extends FrameContainer {
39 38
 
40 39
     /** The plugin which owns this placeholder. */
41 40
     private final DCCManager plugin;
42
-    /** Manager to register new dialogs with. */
43
-    private final DialogManager dialogManager;
44 41
     /** Frame that will own new dialogs. */
45 42
     private final MainFrame mainFrame;
46 43
 
@@ -49,18 +46,15 @@ public class PlaceholderContainer extends FrameContainer {
49 46
      *
50 47
      * @param plugin The plugin which owns this placeholder
51 48
      * @param config Config manager
52
-     * @param dialogManager Manager to register new dialogs with.
53 49
      * @param mainFrame Frame that will own new dialogs.
54 50
      */
55 51
     public PlaceholderContainer(
56 52
             final DCCManager plugin,
57 53
             final AggregateConfigProvider config,
58
-            final DialogManager dialogManager,
59 54
             final MainFrame mainFrame) {
60 55
         super("dcc", "DCCs", "DCCs", config, Arrays.asList(
61 56
                 "com.dmdirc.addons.dcc.ui.PlaceholderPanel"));
62 57
         this.plugin = plugin;
63
-        this.dialogManager = dialogManager;
64 58
         this.mainFrame = mainFrame;
65 59
     }
66 60
 
@@ -78,7 +72,7 @@ public class PlaceholderContainer extends FrameContainer {
78 72
         }
79 73
 
80 74
         if (dccs > 0) {
81
-            new StandardQuestionDialog(dialogManager, mainFrame, ModalityType.MODELESS,
75
+            new StandardQuestionDialog(mainFrame, ModalityType.MODELESS,
82 76
                     "Close confirmation",
83 77
                     "Closing this window will cause all existing DCCs "
84 78
                     + "to terminate, are you sure you want to do this?") {

+ 1
- 4
src/com/dmdirc/addons/lagdisplay/ServerInfoDialog.java 파일 보기

@@ -28,7 +28,6 @@ import com.dmdirc.ServerState;
28 28
 import com.dmdirc.addons.ui_swing.MainFrame;
29 29
 import com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPanel;
30 30
 import com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow;
31
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
32 31
 import com.dmdirc.util.annotations.factory.Factory;
33 32
 import com.dmdirc.util.annotations.factory.Unbound;
34 33
 
@@ -62,17 +61,15 @@ public class ServerInfoDialog extends StatusbarPopupWindow {
62 61
      *
63 62
      * @param plugin The {@link LagDisplayPlugin} we're using for info
64 63
      * @param parent The {@link JPanel} to use for positioning
65
-     * @param dialogManager The manager to register this dialog with.
66 64
      * @param mainFrame The frame that will own this dialog.
67 65
      * @param serverManager The manager to use to iterate servers.
68 66
      */
69 67
     public ServerInfoDialog(
70 68
             final LagDisplayPlugin plugin,
71 69
             @Unbound final StatusbarPanel parent,
72
-            final DialogManager dialogManager,
73 70
             final MainFrame mainFrame,
74 71
             final ServerManager serverManager) {
75
-        super(dialogManager, parent, mainFrame);
72
+        super(parent, mainFrame);
76 73
 
77 74
         this.plugin = plugin;
78 75
         this.mainFrame = mainFrame;

+ 1
- 1
src/com/dmdirc/addons/nickcolours/NickColourInputDialog.java 파일 보기

@@ -79,7 +79,7 @@ public class NickColourInputDialog extends StandardDialog
79 79
             final NickColourPanel panel, final int row,
80 80
             final String nickname, final String network,
81 81
             final String textcolour, final String nickcolour) {
82
-        super(swingController.getDialogManager(), swingController.getMainFrame(), false);
82
+        super(swingController.getMainFrame(), false);
83 83
 
84 84
         this.panel = panel;
85 85
         this.row = row;

+ 1
- 1
src/com/dmdirc/addons/serverlistdialog/AddEntryInputDialog.java 파일 보기

@@ -84,7 +84,7 @@ public class AddEntryInputDialog extends StandardDialog {
84 84
     public AddEntryInputDialog(final SwingController controller,
85 85
             final Window owner, final JTree items,
86 86
             final ServerListModel model) {
87
-        super(controller.getDialogManager(), owner, ModalityType.MODELESS);
87
+        super(owner, ModalityType.MODELESS);
88 88
 
89 89
         this.items = items;
90 90
         this.model = model;

+ 1
- 1
src/com/dmdirc/addons/serverlistdialog/AddGroupInputDialog.java 파일 보기

@@ -81,7 +81,7 @@ public class AddGroupInputDialog extends StandardDialog {
81 81
     public AddGroupInputDialog(final SwingController controller,
82 82
             final Window owner, final JTree items,
83 83
             final ServerListModel model) {
84
-        super(controller.getDialogManager(), owner, ModalityType.MODELESS);
84
+        super(owner, ModalityType.MODELESS);
85 85
 
86 86
         this.tree = items;
87 87
         this.serverListModel = model;

+ 1
- 5
src/com/dmdirc/addons/serverlistdialog/ServerListDialog.java 파일 보기

@@ -22,13 +22,11 @@
22 22
 
23 23
 package com.dmdirc.addons.serverlistdialog;
24 24
 
25
-import com.dmdirc.ServerManager;
26 25
 import com.dmdirc.actions.wrappers.PerformWrapper;
27 26
 import com.dmdirc.addons.serverlists.ServerGroupItem;
28 27
 import com.dmdirc.addons.ui_swing.MainFrame;
29 28
 import com.dmdirc.addons.ui_swing.SwingController;
30 29
 import com.dmdirc.addons.ui_swing.components.LockedLayer;
31
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
32 30
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
33 31
 import com.dmdirc.ui.core.util.URLHandler;
34 32
 
@@ -83,7 +81,6 @@ public class ServerListDialog extends StandardDialog implements
83 81
      * @param urlHandler The URL Handler to use to handle clicked links
84 82
      * @param performWrapper The wrapper to use for the perform tab
85 83
      * @param serverListModel The model to use for the dialog.
86
-     * @param dialogManager The manager to register the dialog with.
87 84
      * @param mainFrame The main frame that owns the dialog.
88 85
      */
89 86
     @Inject
@@ -92,9 +89,8 @@ public class ServerListDialog extends StandardDialog implements
92 89
             final URLHandler urlHandler,
93 90
             final PerformWrapper performWrapper,
94 91
             final ServerListModel serverListModel,
95
-            final DialogManager dialogManager,
96 92
             final MainFrame mainFrame) {
97
-        super(dialogManager, mainFrame, ModalityType.MODELESS);
93
+        super(mainFrame, ModalityType.MODELESS);
98 94
 
99 95
         setTitle("Server List");
100 96
         model = serverListModel;

+ 2
- 7
src/com/dmdirc/addons/ui_swing/MainFrame.java 파일 보기

@@ -30,7 +30,6 @@ import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
30 30
 import com.dmdirc.addons.ui_swing.components.menubar.MenuBar;
31 31
 import com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar;
32 32
 import com.dmdirc.addons.ui_swing.dialogs.ConfirmQuitDialog;
33
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
34 33
 import com.dmdirc.addons.ui_swing.dialogs.StandardQuestionDialog;
35 34
 import com.dmdirc.addons.ui_swing.framemanager.FrameManager;
36 35
 import com.dmdirc.addons.ui_swing.framemanager.FramemanagerPosition;
@@ -83,8 +82,6 @@ public class MainFrame extends JFrame implements WindowListener,
83 82
      * objects being unserialized with the new class).
84 83
      */
85 84
     private static final long serialVersionUID = 9;
86
-    /** Dialog manager. */
87
-    private final DialogManager dialogManager;
88 85
     /** Focus queue. */
89 86
     private final QueuedLinkedHashSet<TextFrame> focusOrder;
90 87
     /** Swing Controller. */
@@ -133,7 +130,6 @@ public class MainFrame extends JFrame implements WindowListener,
133 130
     /**
134 131
      * Creates new form MainFrame.
135 132
      *
136
-     * @param dialogManager Dialog manager
137 133
      * @param controller Swing controller
138 134
      * @param windowFactory The window factory to use to create and listen for windows.
139 135
      * @param lifecycleController Controller to use to end the application.
@@ -142,7 +138,7 @@ public class MainFrame extends JFrame implements WindowListener,
142 138
      * @param iconManager The icon manager to use to get icons.
143 139
      * @param windowManager Window management
144 140
      */
145
-    public MainFrame(final DialogManager dialogManager,
141
+    public MainFrame(
146 142
             final SwingController controller,
147 143
             final SwingWindowFactory windowFactory,
148 144
             final LifecycleController lifecycleController,
@@ -152,7 +148,6 @@ public class MainFrame extends JFrame implements WindowListener,
152 148
             final WindowManager windowManager) {
153 149
         super();
154 150
 
155
-        this.dialogManager = dialogManager;
156 151
         this.controller = controller;
157 152
         this.windowFactory = windowFactory;
158 153
         this.lifecycleController = lifecycleController;
@@ -525,7 +520,7 @@ public class MainFrame extends JFrame implements WindowListener,
525 520
      */
526 521
     public void quit(final int exitCode) {
527 522
         if (exitCode == 0 && globalConfig.getOptionBool("ui", "confirmQuit")) {
528
-            final StandardQuestionDialog dialog = new ConfirmQuitDialog(dialogManager, this) {
523
+            final StandardQuestionDialog dialog = new ConfirmQuitDialog(this) {
529 524
 
530 525
                 /** Serial version UID. */
531 526
                 private static final long serialVersionUID = 9;

+ 2
- 3
src/com/dmdirc/addons/ui_swing/PrefsComponentFactory.java 파일 보기

@@ -338,10 +338,9 @@ public final class PrefsComponentFactory {
338 338
         DurationDisplay option;
339 339
 
340 340
         try {
341
-            option = new DurationDisplay(controller, Integer.parseInt(
342
-                    setting.getValue()));
341
+            option = new DurationDisplay(Integer.parseInt(setting.getValue()));
343 342
         } catch (final NumberFormatException ex) {
344
-            option = new DurationDisplay(controller);
343
+            option = new DurationDisplay();
345 344
         }
346 345
 
347 346
         option.addDurationListener(new DurationListener() {

+ 17
- 37
src/com/dmdirc/addons/ui_swing/SwingController.java 파일 보기

@@ -37,15 +37,9 @@ import com.dmdirc.addons.ui_swing.commands.PopOutCommand;
37 37
 import com.dmdirc.addons.ui_swing.commands.ServerSettings;
38 38
 import com.dmdirc.addons.ui_swing.components.addonbrowser.DataLoaderWorkerFactory;
39 39
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
40
-import com.dmdirc.addons.ui_swing.components.statusbar.FeedbackNag;
41 40
 import com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar;
42
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
43
-import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
44
-import com.dmdirc.addons.ui_swing.dialogs.channelsetting.ChannelSettingsDialog;
45 41
 import com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog;
46 42
 import com.dmdirc.addons.ui_swing.dialogs.prefs.SwingPreferencesDialog;
47
-import com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog;
48
-import com.dmdirc.addons.ui_swing.dialogs.url.URLDialog;
49 43
 import com.dmdirc.addons.ui_swing.injection.SwingModule;
50 44
 import com.dmdirc.config.prefs.PluginPreferencesCategory;
51 45
 import com.dmdirc.config.prefs.PreferencesCategory;
@@ -332,8 +326,7 @@ public class SwingController extends BaseCommandPlugin implements UIController {
332 326
             /** {@inheritDoc} */
333 327
             @Override
334 328
             public void run() {
335
-                showDialog(ChannelSettingsDialog.class, channel,
336
-                        getWindowFactory().getSwingWindow(channel));
329
+                swingManager.getChannelSettingsDialogProvider().displayOrRequestFocus(channel);
337 330
             }
338 331
         });
339 332
     }
@@ -346,28 +339,24 @@ public class SwingController extends BaseCommandPlugin implements UIController {
346 339
             /** {@inheritDoc} */
347 340
             @Override
348 341
             public void run() {
349
-                showDialog(ServerSettingsDialog.class,
350
-                        server, getWindowFactory().getSwingWindow(server));
342
+                swingManager.getServerSettingsDialogProvider().displayOrRequestFocus(server);
351 343
             }
352 344
         });
353 345
     }
354 346
 
355 347
     /**
356
-     * Proxy method to {@link DialogManager} that shows a dialog in the client.
357
-     * For more details on what parameters might be required see
358
-     * {@link DialogManager#getDialog(Class, Object...)}
359
-     *
360
-     * @param <T> Dialog type
361
-     * @see DialogManager#getDialog(Class, Object...) getDialog
362
-     *
363
-     * @param klass The class of the dialog to show
364
-     * @param params Any non standard parameters required
365
-     * @deprecated Use dagger instead.
348
+     * @deprecated Callers should be given access to the provider.
366 349
      */
367 350
     @Deprecated
368
-    public <T extends StandardDialog> void showDialog(final Class<T> klass,
369
-            final Object... params) {
370
-        getDialogManager().showDialog(klass, params);
351
+    public void closeServerSettingsDialog(final Server server) {
352
+        UIUtilities.invokeLater(new Runnable() {
353
+
354
+            /** {@inheritDoc} */
355
+            @Override
356
+            public void run() {
357
+                swingManager.getServerSettingsDialogProvider().dispose(server);
358
+            }
359
+        });
371 360
     }
372 361
 
373 362
     /**
@@ -479,7 +468,7 @@ public class SwingController extends BaseCommandPlugin implements UIController {
479 468
             /** {@inheritDoc} */
480 469
             @Override
481 470
             public void run() {
482
-                showDialog(URLDialog.class, url, getUrlHandler());
471
+                swingManager.getUrlDialogFactory().getURLDialog(url).display();
483 472
             }
484 473
         });
485 474
     }
@@ -492,7 +481,7 @@ public class SwingController extends BaseCommandPlugin implements UIController {
492 481
             /** {@inheritDoc} */
493 482
             @Override
494 483
             public void run() {
495
-                new FeedbackNag(SwingController.this);
484
+                swingManager.getFeedbackNagProvider().get();
496 485
             }
497 486
         });
498 487
     }
@@ -581,9 +570,11 @@ public class SwingController extends BaseCommandPlugin implements UIController {
581 570
      * Returns the preferences dialog instance creating if required.
582 571
      *
583 572
      * @return Swing prefs dialog
573
+     * @deprecated Inject the relevant dialog manager instead.
584 574
      */
575
+    @Deprecated
585 576
     public SwingPreferencesDialog getPrefsDialog() {
586
-        return getDialogManager().getDialog(SwingPreferencesDialog.class);
577
+        return swingManager.getPrefsDialogProvider().get();
587 578
     }
588 579
 
589 580
     /** {@inheritDoc} */
@@ -935,17 +926,6 @@ public class SwingController extends BaseCommandPlugin implements UIController {
935 926
         return swingManager.getUrlHandler();
936 927
     }
937 928
 
938
-    /**
939
-     * Gets the Dialog manager.
940
-     *
941
-     * @return The Dialog manager to use
942
-     * @deprecated Should be injected
943
-     */
944
-    @Deprecated
945
-    public DialogManager getDialogManager() {
946
-        return swingManager.getDialogManager();
947
-    }
948
-
949 929
     @Deprecated
950 930
     public DataLoaderWorkerFactory getDataLoaderWorkerFactory() {
951 931
         return swingManager.getDataLoaderWorkerFactory();

+ 63
- 20
src/com/dmdirc/addons/ui_swing/SwingManager.java 파일 보기

@@ -22,12 +22,20 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing;
24 24
 
25
+import com.dmdirc.Channel;
26
+import com.dmdirc.Server;
25 27
 import com.dmdirc.addons.ui_swing.components.addonbrowser.DataLoaderWorkerFactory;
26 28
 import com.dmdirc.addons.ui_swing.components.menubar.MenuBar;
29
+import com.dmdirc.addons.ui_swing.components.statusbar.FeedbackNag;
27 30
 import com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar;
28 31
 import com.dmdirc.addons.ui_swing.dialogs.DialogKeyListener;
29
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
32
+import com.dmdirc.addons.ui_swing.dialogs.channelsetting.ChannelSettingsDialog;
33
+import com.dmdirc.addons.ui_swing.dialogs.prefs.SwingPreferencesDialog;
34
+import com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog;
35
+import com.dmdirc.addons.ui_swing.dialogs.url.URLDialogFactory;
30 36
 import com.dmdirc.addons.ui_swing.framemanager.ctrltab.CtrlTabWindowManager;
37
+import com.dmdirc.addons.ui_swing.injection.DialogProvider;
38
+import com.dmdirc.addons.ui_swing.injection.KeyedDialogProvider;
31 39
 import com.dmdirc.addons.ui_swing.wizard.firstrun.FirstRunWizardExecutor;
32 40
 import com.dmdirc.ui.WindowManager;
33 41
 import com.dmdirc.ui.core.components.StatusBarManager;
@@ -47,9 +55,6 @@ import javax.inject.Singleton;
47 55
 @Singleton
48 56
 public class SwingManager {
49 57
 
50
-    /** The dialog manager to use. */
51
-    private final DialogManager dialogManager;
52
-
53 58
     /** The event queue to use. */
54 59
     private final DMDircEventQueue eventQueue;
55 60
 
@@ -86,10 +91,22 @@ public class SwingManager {
86 91
     /** The factory to use to create prefs components. */
87 92
     private final PrefsComponentFactory prefsComponentFactory;
88 93
 
94
+    /** Provider of prefs dialogs. */
95
+    private final DialogProvider<SwingPreferencesDialog> prefsDialogProvider;
96
+    /** Provider of server settings dialogs. */
97
+    private final KeyedDialogProvider<Server, ServerSettingsDialog> serverSettingsDialogProvider;
98
+    /** Provider of channel settings dialogs. */
99
+    private final KeyedDialogProvider<Channel, ChannelSettingsDialog> channelSettingsDialogProvider;
100
+
101
+    /** Provider of feedback nags. */
102
+    private final Provider<FeedbackNag> feedbackNagProvider;
103
+
104
+    /** Factory to use to create URL dialogs. */
105
+    private final URLDialogFactory urlDialogFactory;
106
+
89 107
     /**
90 108
      * Creates a new instance of {@link SwingManager}.
91 109
      *
92
-     * @param dialogManager Dialog manager to use
93 110
      * @param eventQueue The event queue to use.
94 111
      * @param windowFactory The window factory in use.
95 112
      * @param windowManager The window manager to listen on for events.
@@ -104,10 +121,14 @@ public class SwingManager {
104 121
      * @param cachingUpdateManager Update manager to use.
105 122
      * @param firstRunExecutor A provider of first run executors.
106 123
      * @param prefsComponentFactory The factory to use to create prefs components.
124
+     * @param prefsDialogProvider Provider of prefs dialogs.
125
+     * @param serverSettingsDialogProvider Provider of server settings dialogs.
126
+     * @param channelSettingsDialogProvider Provider of channel settings dialogs.
127
+     * @param feedbackNagProvider Provider of feedback nags.
128
+     * @param urlDialogFactory Factory to use to create URL dialogs.
107 129
      */
108 130
     @Inject
109 131
     public SwingManager(
110
-            final DialogManager dialogManager,
111 132
             final DMDircEventQueue eventQueue,
112 133
             final SwingWindowFactory windowFactory,
113 134
             final WindowManager windowManager,
@@ -121,8 +142,12 @@ public class SwingManager {
121 142
             final DataLoaderWorkerFactory dataLoaderWorkerFactory,
122 143
             final CachingUpdateManager cachingUpdateManager,
123 144
             final Provider<FirstRunWizardExecutor> firstRunExecutor,
124
-            final PrefsComponentFactory prefsComponentFactory) {
125
-        this.dialogManager = dialogManager;
145
+            final PrefsComponentFactory prefsComponentFactory,
146
+            final DialogProvider<SwingPreferencesDialog> prefsDialogProvider,
147
+            final KeyedDialogProvider<Server, ServerSettingsDialog> serverSettingsDialogProvider,
148
+            final KeyedDialogProvider<Channel, ChannelSettingsDialog> channelSettingsDialogProvider,
149
+            final Provider<FeedbackNag> feedbackNagProvider,
150
+            final URLDialogFactory urlDialogFactory) {
126 151
         this.eventQueue = eventQueue;
127 152
         this.windowFactory = windowFactory;
128 153
         this.windowManager = windowManager;
@@ -134,6 +159,11 @@ public class SwingManager {
134 159
         this.cachingUpdateManager = cachingUpdateManager;
135 160
         this.firstRunExecutor = firstRunExecutor;
136 161
         this.prefsComponentFactory = prefsComponentFactory;
162
+        this.prefsDialogProvider = prefsDialogProvider;
163
+        this.serverSettingsDialogProvider = serverSettingsDialogProvider;
164
+        this.channelSettingsDialogProvider = channelSettingsDialogProvider;
165
+        this.feedbackNagProvider = feedbackNagProvider;
166
+        this.urlDialogFactory = urlDialogFactory;
137 167
 
138 168
         this.mainFrame = mainFrame;
139 169
         this.mainFrame.setMenuBar(menuBar);
@@ -175,18 +205,6 @@ public class SwingManager {
175 205
         return firstRunExecutor.get();
176 206
     }
177 207
 
178
-    /**
179
-     * Retrieves the dialog manager to use.
180
-     *
181
-     * @return The dialog manager to use
182
-     *
183
-     * @deprecated Should be injected
184
-     */
185
-    @Deprecated
186
-    public DialogManager getDialogManager() {
187
-        return dialogManager;
188
-    }
189
-
190 208
     @Deprecated
191 209
     public DataLoaderWorkerFactory getDataLoaderWorkerFactory() {
192 210
         return dataLoaderWorkerFactory;
@@ -202,6 +220,31 @@ public class SwingManager {
202 220
         return prefsComponentFactory;
203 221
     }
204 222
 
223
+    @Deprecated
224
+    public DialogProvider<SwingPreferencesDialog> getPrefsDialogProvider() {
225
+        return prefsDialogProvider;
226
+    }
227
+
228
+    @Deprecated
229
+    public KeyedDialogProvider<Server, ServerSettingsDialog> getServerSettingsDialogProvider() {
230
+        return serverSettingsDialogProvider;
231
+    }
232
+
233
+    @Deprecated
234
+    public KeyedDialogProvider<Channel, ChannelSettingsDialog> getChannelSettingsDialogProvider() {
235
+        return channelSettingsDialogProvider;
236
+    }
237
+
238
+    @Deprecated
239
+    public Provider<FeedbackNag> getFeedbackNagProvider() {
240
+        return feedbackNagProvider;
241
+    }
242
+
243
+    @Deprecated
244
+    public URLDialogFactory getUrlDialogFactory() {
245
+        return urlDialogFactory;
246
+    }
247
+
205 248
     /**
206 249
      * Retrieves the window factory to use.
207 250
      *

+ 1
- 1
src/com/dmdirc/addons/ui_swing/cinch/ConfirmAction.java 파일 보기

@@ -139,7 +139,7 @@ public @interface ConfirmAction {
139 139
                 /** {@inheritDoc} */
140 140
                 @Override
141 141
                 public void actionPerformed(final ActionEvent e) {
142
-                    new StandardQuestionDialog(null,
142
+                    new StandardQuestionDialog(
143 143
                             (Window) ((AbstractButton) actionObject)
144 144
                             .getTopLevelAncestor(), ModalityType.DOCUMENT_MODAL,
145 145
                             "Confirmaton", message) {

+ 1
- 1
src/com/dmdirc/addons/ui_swing/cinch/InputAction.java 파일 보기

@@ -187,7 +187,7 @@ public @interface InputAction {
187 187
                 /** {@inheritDoc} */
188 188
                 @Override
189 189
                 public void actionPerformed(final ActionEvent e) {
190
-                    new StandardInputDialog(null,
190
+                    new StandardInputDialog(
191 191
                             (Window) ((AbstractButton) actionObject)
192 192
                             .getTopLevelAncestor(), ModalityType.DOCUMENT_MODAL,
193 193
                             "Input", message, validatorInstance) {

+ 1
- 7
src/com/dmdirc/addons/ui_swing/components/addonbrowser/AddonInfoLabel.java 파일 보기

@@ -23,7 +23,6 @@
23 23
 package com.dmdirc.addons.ui_swing.components.addonbrowser;
24 24
 
25 25
 import com.dmdirc.addons.ui_swing.components.text.TextLabel;
26
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
27 26
 
28 27
 import java.awt.Color;
29 28
 import java.awt.Font;
@@ -51,25 +50,20 @@ public class AddonInfoLabel extends JPanel {
51 50
     private final AddonInfo addonInfo;
52 51
     /** Parent window. */
53 52
     private final BrowserWindow parentWindow;
54
-    /** The manager that will be used for installer dialogs. */
55
-    private final DialogManager dialogManager;
56 53
     /** Factory to use to create install workers. */
57 54
     private final InstallWorkerFactory workerFactory;
58 55
 
59 56
     /**
60 57
      * Creates a new addon info label to describe the specified addon info.
61 58
      *
62
-     * @param dialogManager The manager that will be used for installer dialogs.
63 59
      * @param addonInfo Addon to describe
64 60
      * @param parentWindow Parent window
65 61
      * @param workerFactory
66 62
      */
67 63
     public AddonInfoLabel(
68
-            final DialogManager dialogManager,
69 64
             final AddonInfo addonInfo,
70 65
             final BrowserWindow parentWindow,
71 66
             final InstallWorkerFactory workerFactory) {
72
-        this.dialogManager = dialogManager;
73 67
         this.addonInfo = addonInfo;
74 68
         this.parentWindow = parentWindow;
75 69
         this.workerFactory = workerFactory;
@@ -100,7 +94,7 @@ public class AddonInfoLabel extends JPanel {
100 94
                 "wmax 100%-170, hmax 150, growy, wrap, pushy, gapleft 5");
101 95
 
102 96
         final JButton button = new JButton("Install");
103
-        button.addActionListener(new InstallListener(dialogManager, workerFactory, addonInfo,
97
+        button.addActionListener(new InstallListener(workerFactory, addonInfo,
104 98
                 parentWindow));
105 99
         final boolean installed = addonInfo.isInstalled();
106 100
         add(button, "split, gapleft 5");

+ 2
- 2
src/com/dmdirc/addons/ui_swing/components/addonbrowser/DataLoaderWorker.java 파일 보기

@@ -98,7 +98,7 @@ public class DataLoaderWorker
98 98
             final SwingController controller,
99 99
             final InstallWorkerFactory workerFactory,
100 100
             final UpdateManager updateManager,
101
-            @Directory(DirectoryType.TEMPORARY) final String tempDirectory,
101
+            @SuppressWarnings("qualifiers") @Directory(DirectoryType.TEMPORARY) final String tempDirectory,
102 102
             @Unbound final AddonTable table,
103 103
             @Unbound final boolean download,
104 104
             @Unbound final BrowserWindow browserWindow,
@@ -179,7 +179,7 @@ public class DataLoaderWorker
179 179
         table.getModel().setRowCount(0);
180 180
         for (final AddonInfo info : data) {
181 181
             table.getModel().addRow(new Object[]{
182
-                new AddonInfoLabel(controller.getDialogManager(), info, browserWindow, workerFactory),
182
+                new AddonInfoLabel(info, browserWindow, workerFactory),
183 183
             });
184 184
         }
185 185
         table.getSelectionModel().setSelectionInterval(selectedRow, selectedRow);

+ 1
- 9
src/com/dmdirc/addons/ui_swing/components/addonbrowser/InstallListener.java 파일 보기

@@ -22,8 +22,6 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.components.addonbrowser;
24 24
 
25
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
26
-
27 25
 import java.awt.event.ActionEvent;
28 26
 import java.awt.event.ActionListener;
29 27
 
@@ -38,23 +36,18 @@ public class InstallListener implements ActionListener {
38 36
     private final InstallWorkerFactory workerFactory;
39 37
     /** Parent window. */
40 38
     private final BrowserWindow parentWindow;
41
-    /** Swing controller. */
42
-    private final DialogManager dialogManager;
43 39
 
44 40
     /**
45 41
      * Instantiates a new install listener.
46 42
      *
47
-     * @param dialogManager Manager to use for installer dialogs.
48 43
      * @param workerFactory Factory to use to construct install workers.
49 44
      * @param info Addoninfo to install
50 45
      * @param parentWindow Parent window
51 46
      */
52 47
     public InstallListener(
53
-            final DialogManager dialogManager,
54 48
             final InstallWorkerFactory workerFactory,
55 49
             final AddonInfo info,
56 50
             final BrowserWindow parentWindow) {
57
-        this.dialogManager = dialogManager;
58 51
         this.workerFactory = workerFactory;
59 52
         this.info = info;
60 53
         this.parentWindow = parentWindow;
@@ -67,8 +60,7 @@ public class InstallListener implements ActionListener {
67 60
      */
68 61
     @Override
69 62
     public void actionPerformed(final ActionEvent e) {
70
-        final InstallerWindow installer = new InstallerWindow(dialogManager,
71
-                parentWindow, info);
63
+        final InstallerWindow installer = new InstallerWindow(parentWindow, info);
72 64
         installer.display(parentWindow);
73 65
         workerFactory.getInstallWorker(info, installer).executeInExecutor();
74 66
     }

+ 3
- 3
src/com/dmdirc/addons/ui_swing/components/addonbrowser/InstallWorker.java 파일 보기

@@ -55,9 +55,9 @@ public class InstallWorker extends LoggingSwingWorker<String, Void> {
55 55
     private final PluginManager pluginManager;
56 56
 
57 57
     public InstallWorker(
58
-            @Directory(DirectoryType.TEMPORARY) final String tempDirectory,
59
-            @Directory(DirectoryType.PLUGINS) final String pluginDirectory,
60
-            @Directory(DirectoryType.THEMES) final String themeDirectory,
58
+            @SuppressWarnings("qualifiers") @Directory(DirectoryType.TEMPORARY) final String tempDirectory,
59
+            @SuppressWarnings("qualifiers") @Directory(DirectoryType.PLUGINS) final String pluginDirectory,
60
+            @SuppressWarnings("qualifiers") @Directory(DirectoryType.THEMES) final String themeDirectory,
61 61
             final PluginManager pluginManager,
62 62
             @Unbound final AddonInfo info,
63 63
             @Unbound final InstallerWindow window) {

+ 2
- 5
src/com/dmdirc/addons/ui_swing/components/addonbrowser/InstallerWindow.java 파일 보기

@@ -23,7 +23,6 @@
23 23
 package com.dmdirc.addons.ui_swing.components.addonbrowser;
24 24
 
25 25
 import com.dmdirc.addons.ui_swing.components.text.TextLabel;
26
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
27 26
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
28 27
 
29 28
 import java.awt.event.ActionEvent;
@@ -57,13 +56,11 @@ public class InstallerWindow extends StandardDialog implements ActionListener {
57 56
     /**
58 57
      * Instantiates a new installer window.
59 58
      *
60
-     * @param dialogManager The dialog manager looking after this window.
61 59
      * @param parentWindow Parent window
62 60
      * @param info Associated addon info
63 61
      */
64
-    public InstallerWindow(final DialogManager dialogManager,
65
-            final BrowserWindow parentWindow, final AddonInfo info) {
66
-        super(dialogManager, parentWindow, ModalityType.MODELESS);
62
+    public InstallerWindow(final BrowserWindow parentWindow, final AddonInfo info) {
63
+        super(parentWindow, ModalityType.MODELESS);
67 64
         this.info = info;
68 65
         this.parentWindow = parentWindow;
69 66
         setTitle("Installing addon...");

+ 12
- 11
src/com/dmdirc/addons/ui_swing/components/addonpanel/AddonPanel.java 파일 보기

@@ -28,6 +28,7 @@ import com.dmdirc.addons.ui_swing.components.LoggingSwingWorker;
28 28
 import com.dmdirc.addons.ui_swing.components.addonbrowser.BrowserWindow;
29 29
 import com.dmdirc.addons.ui_swing.components.renderers.AddonCellRenderer;
30 30
 import com.dmdirc.addons.ui_swing.components.text.TextLabel;
31
+import com.dmdirc.addons.ui_swing.dialogs.prefs.SwingPreferencesDialog;
31 32
 import com.dmdirc.config.prefs.PreferencesInterface;
32 33
 import com.dmdirc.ui.IconManager;
33 34
 
@@ -53,12 +54,14 @@ import net.miginfocom.swing.MigLayout;
53 54
 public abstract class AddonPanel extends JPanel implements AddonToggleListener,
54 55
         ListSelectionListener, PreferencesInterface, HyperlinkListener {
55 56
 
57
+    /** Serial version UID. */
58
+    private static final long serialVersionUID = 3;
56 59
     /** List of addons. */
57 60
     protected JTable addonList;
58 61
     /** Swing Controller. */
59 62
     protected final SwingController controller;
60
-    /** Serial version UID. */
61
-    private static final long serialVersionUID = 3;
63
+    /** The prefs dialog that contains this panel. */
64
+    private final SwingPreferencesDialog prefsDialog;
62 65
     /** Parent Window. */
63 66
     private final Window parentWindow;
64 67
     /** The icon manager used to retrieve icons. */
@@ -79,13 +82,17 @@ public abstract class AddonPanel extends JPanel implements AddonToggleListener,
79 82
      *
80 83
      * @param parentWindow Parent window
81 84
      * @param controller Swing Controller
85
+     * @param prefsDialog The prefs dialog that contains this panel
82 86
      */
83
-    public AddonPanel(final Window parentWindow,
84
-            final SwingController controller) {
87
+    public AddonPanel(
88
+            final Window parentWindow,
89
+            final SwingController controller,
90
+            final SwingPreferencesDialog prefsDialog) {
85 91
         super();
86 92
 
87 93
         this.parentWindow = parentWindow;
88 94
         this.controller = controller;
95
+        this.prefsDialog = prefsDialog;
89 96
         iconManager = controller.getIconManager();
90 97
 
91 98
         initComponents();
@@ -161,13 +168,7 @@ public abstract class AddonPanel extends JPanel implements AddonToggleListener,
161 168
 
162 169
     /** Lays out the dialog. */
163 170
     private void layoutComponents() {
164
-        if (controller == null) {
165
-            setLayout(new MigLayout("ins 0, fill, hmax " + 500));
166
-        } else {
167
-            setLayout(new MigLayout("ins 0, fill, hmax "
168
-                    + controller.getPrefsDialog().getPanelHeight()));
169
-        }
170
-
171
+        setLayout(new MigLayout("ins 0, fill, hmax " + prefsDialog.getPanelHeight()));
171 172
         add(blurbLabel, "wrap 5, growx, pushx");
172 173
         add(getMoreLabel, "wrap 5, right");
173 174
         add(scrollPane, "wrap 5, grow, push");

+ 7
- 3
src/com/dmdirc/addons/ui_swing/components/addonpanel/PluginPanel.java 파일 보기

@@ -26,6 +26,7 @@ import com.dmdirc.actions.ActionManager;
26 26
 import com.dmdirc.actions.CoreActionType;
27 27
 import com.dmdirc.addons.ui_swing.SwingController;
28 28
 import com.dmdirc.addons.ui_swing.UIUtilities;
29
+import com.dmdirc.addons.ui_swing.dialogs.prefs.SwingPreferencesDialog;
29 30
 import com.dmdirc.interfaces.ActionListener;
30 31
 import com.dmdirc.interfaces.actions.ActionType;
31 32
 import com.dmdirc.plugins.PluginInfo;
@@ -56,10 +57,13 @@ public class PluginPanel extends AddonPanel implements ActionListener {
56 57
      *
57 58
      * @param parentWindow Parent window
58 59
      * @param controller Swing Controller
60
+     * @param prefsDialog The prefs dialog that contains this panel
59 61
      */
60
-    public PluginPanel(final Window parentWindow,
61
-            final SwingController controller) {
62
-        super(parentWindow, controller);
62
+    public PluginPanel(
63
+            final Window parentWindow,
64
+            final SwingController controller,
65
+            final SwingPreferencesDialog prefsDialog) {
66
+        super(parentWindow, controller, prefsDialog);
63 67
 
64 68
         ActionManager.getActionManager().registerListener(this,
65 69
                 CoreActionType.PLUGIN_REFRESH);

+ 5
- 2
src/com/dmdirc/addons/ui_swing/components/addonpanel/ThemePanel.java 파일 보기

@@ -24,6 +24,7 @@ package com.dmdirc.addons.ui_swing.components.addonpanel;
24 24
 
25 25
 import com.dmdirc.addons.ui_swing.SwingController;
26 26
 import com.dmdirc.addons.ui_swing.UIUtilities;
27
+import com.dmdirc.addons.ui_swing.dialogs.prefs.SwingPreferencesDialog;
27 28
 import com.dmdirc.ui.themes.Theme;
28 29
 import com.dmdirc.ui.themes.ThemeManager;
29 30
 
@@ -57,12 +58,14 @@ public class ThemePanel extends AddonPanel {
57 58
      * @param parentWindow Parent window
58 59
      * @param controller Swing Controller
59 60
      * @param themeManager Manager to retrieve themes from.
61
+     * @param prefsDialog The prefs dialog that contains this panel
60 62
      */
61 63
     public ThemePanel(
62 64
             final Window parentWindow,
63 65
             final SwingController controller,
64
-            final ThemeManager themeManager) {
65
-        super(parentWindow, controller);
66
+            final ThemeManager themeManager,
67
+            final SwingPreferencesDialog prefsDialog) {
68
+        super(parentWindow, controller, prefsDialog);
66 69
         this.themeManager = themeManager;
67 70
     }
68 71
 

+ 8
- 21
src/com/dmdirc/addons/ui_swing/components/durationeditor/DurationDisplay.java 파일 보기

@@ -22,7 +22,6 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.components.durationeditor;
24 24
 
25
-import com.dmdirc.addons.ui_swing.SwingController;
26 25
 import com.dmdirc.addons.ui_swing.UIUtilities;
27 26
 import com.dmdirc.util.DateUtils;
28 27
 import com.dmdirc.util.collections.ListenerList;
@@ -52,8 +51,6 @@ public class DurationDisplay extends JPanel implements ActionListener,
52 51
     private static final long serialVersionUID = 1;
53 52
     /** Listener list. */
54 53
     private final ListenerList listeners;
55
-    /** Swing controller. */
56
-    private final SwingController controller;
57 54
     /** Current duration. */
58 55
     private int duration;
59 56
     /** Duration label. */
@@ -65,51 +62,42 @@ public class DurationDisplay extends JPanel implements ActionListener,
65 62
 
66 63
     /**
67 64
      * Initialises a new duration display of 0 milliseconds.
68
-     *
69
-     * @param controller Controller for dialog creation
70 65
      */
71
-    public DurationDisplay(final SwingController controller) {
72
-        this(controller, 0);
66
+    public DurationDisplay() {
67
+        this(0);
73 68
     }
74 69
 
75 70
     /**
76 71
      * Instantiates a new duration display.
77 72
      *
78
-     * @param controller Controller for dialog creation
79 73
      * @param window Parent window.
80 74
      *
81 75
      * @since 0.6
82 76
      */
83
-    public DurationDisplay(final SwingController controller,
84
-            final Window window) {
85
-        this(controller, window, 0);
77
+    public DurationDisplay(final Window window) {
78
+        this(window, 0);
86 79
     }
87 80
 
88 81
     /**
89 82
      * Instantiates a new duration display.
90 83
      *
91
-     * @param controller Controller for dialog creation
92 84
      * @param duration Starting duration
93 85
      */
94
-    public DurationDisplay(final SwingController controller,
95
-            final long duration) {
96
-        this(controller, null, duration);
86
+    public DurationDisplay(final long duration) {
87
+        this(null, duration);
97 88
     }
98 89
 
99 90
     /**
100 91
      * Initialises a new duration display showing the specified millisecond duration.
101 92
      *
102
-     * @param controller Controller for dialog creation
103 93
      * @param window Parent window.
104 94
      * @param duration Duration to display in milliseconds
105 95
      *
106 96
      * @since 0.6
107 97
      */
108
-    public DurationDisplay(final SwingController controller,
109
-            final Window window, final long duration) {
98
+    public DurationDisplay(final Window window, final long duration) {
110 99
         super();
111 100
 
112
-        this.controller = controller;
113 101
         this.window = window;
114 102
         this.duration = (int) (duration / 1000);
115 103
         listeners = new ListenerList();
@@ -162,8 +150,7 @@ public class DurationDisplay extends JPanel implements ActionListener,
162 150
      */
163 151
     @Override
164 152
     public void actionPerformed(final ActionEvent e) {
165
-        final DurationEditor editor = new DurationEditor(controller, window,
166
-                duration);
153
+        final DurationEditor editor = new DurationEditor(window, duration);
167 154
         editor.display(this);
168 155
         editor.addDurationListener(this);
169 156
     }

+ 5
- 10
src/com/dmdirc/addons/ui_swing/components/durationeditor/DurationEditor.java 파일 보기

@@ -85,15 +85,12 @@ public class DurationEditor extends StandardDialog implements ActionListener {
85 85
     /**
86 86
      * Instantiates a new duration editor.
87 87
      *
88
-     * @param controller Controller for dialog creation
89
-     *
90 88
      * @param window Parent window.
91 89
      *
92 90
      * @since 0.6
93 91
      */
94
-    public DurationEditor(final SwingController controller,
95
-            final Window window) {
96
-        this(controller, window, 0);
92
+    public DurationEditor(final Window window) {
93
+        this(window, 0);
97 94
     }
98 95
 
99 96
     /**
@@ -105,21 +102,19 @@ public class DurationEditor extends StandardDialog implements ActionListener {
105 102
      */
106 103
     public DurationEditor(final SwingController controller,
107 104
             final long duration) {
108
-        this(controller, controller.getMainFrame(), duration);
105
+        this(controller.getMainFrame(), duration);
109 106
     }
110 107
 
111 108
     /**
112 109
      * Instantiates a new duration editor.
113 110
      *
114
-     * @param controller Controller for dialog creation
115 111
      * @param window Parent window.
116 112
      * @param duration Starting duration
117 113
      *
118 114
      * @since 0.6
119 115
      */
120
-    public DurationEditor(final SwingController controller,
121
-            final Window window, final long duration) {
122
-        super(controller.getDialogManager(), window, ModalityType.MODELESS);
116
+    public DurationEditor(final Window window, final long duration) {
117
+        super(window, ModalityType.MODELESS);
123 118
 
124 119
         this.window = window;
125 120
 

+ 2
- 3
src/com/dmdirc/addons/ui_swing/components/frames/ServerFrame.java 파일 보기

@@ -26,7 +26,6 @@ import com.dmdirc.FrameContainer;
26 26
 import com.dmdirc.Server;
27 27
 import com.dmdirc.ServerState;
28 28
 import com.dmdirc.addons.ui_swing.SwingController;
29
-import com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog;
30 29
 import com.dmdirc.addons.ui_swing.dialogs.sslcertificate.SSLCertificateDialog;
31 30
 import com.dmdirc.commandparser.PopupType;
32 31
 import com.dmdirc.interfaces.Connection;
@@ -145,7 +144,7 @@ public final class ServerFrame extends InputTextFrame implements
145 144
     public void certificateProblemEncountered(final X509Certificate[] chain,
146 145
             final Collection<CertificateException> problems,
147 146
             final CertificateManager certificateManager) {
148
-        sslDialog = new SSLCertificateDialog(getController().getDialogManager(), getController().getIconManager(), getController().getMainFrame(),
147
+        sslDialog = new SSLCertificateDialog(getController().getIconManager(), getController().getMainFrame(),
149 148
                 new SSLCertificateDialogModel(chain, problems, certificateManager));
150 149
         sslDialog.display();
151 150
     }
@@ -161,7 +160,7 @@ public final class ServerFrame extends InputTextFrame implements
161 160
     /** {@inheritDoc} */
162 161
     @Override
163 162
     public void windowClosing(final FrameContainer window) {
164
-        controller.getDialogManager().dispose(ServerSettingsDialog.class);
163
+        controller.closeServerSettingsDialog((Server) window.getConnection());
165 164
         super.windowClosing(window);
166 165
     }
167 166
 

+ 1
- 1
src/com/dmdirc/addons/ui_swing/components/menubar/ChannelMenu.java 파일 보기

@@ -112,7 +112,7 @@ public class ChannelMenu extends JMenu implements ActionListener,
112 112
     public void actionPerformed(final ActionEvent e) {
113 113
         switch (e.getActionCommand()) {
114 114
             case "JoinChannel":
115
-                new ChannelJoinDialog(controller.getDialogManager(), controller.getMainFrame(),
115
+                new ChannelJoinDialog(controller.getMainFrame(),
116 116
                         ModalityType.MODELESS, "Join channel",
117 117
                         "Enter the name of the channel to join.").display();
118 118
                 break;

+ 14
- 9
src/com/dmdirc/addons/ui_swing/components/menubar/HelpMenu.java 파일 보기

@@ -24,9 +24,9 @@ package com.dmdirc.addons.ui_swing.components.menubar;
24 24
 
25 25
 import com.dmdirc.ServerManager;
26 26
 import com.dmdirc.addons.ui_swing.Apple;
27
-import com.dmdirc.addons.ui_swing.SwingController;
28 27
 import com.dmdirc.addons.ui_swing.dialogs.FeedbackDialog;
29 28
 import com.dmdirc.addons.ui_swing.dialogs.about.AboutDialog;
29
+import com.dmdirc.addons.ui_swing.injection.DialogProvider;
30 30
 
31 31
 import java.awt.event.ActionEvent;
32 32
 import java.awt.event.ActionListener;
@@ -44,24 +44,29 @@ public class HelpMenu extends JMenu implements ActionListener {
44 44
 
45 45
     /** Serial version UID. */
46 46
     private static final long serialVersionUID = 1;
47
-    /** Swing controller. */
48
-    private final SwingController controller;
49 47
     /** Server manager to use to join dev chat. */
50 48
     private final ServerManager serverManager;
49
+    /** Provider of feedback dialogs. */
50
+    private final DialogProvider<FeedbackDialog> feedbackDialogProvider;
51
+    /** Provider of about dialogs. */
52
+    private final DialogProvider<AboutDialog> aboutDialogProvider;
51 53
 
52 54
     /**
53 55
      * Instantiates a new help menu.
54 56
      *
55
-     * @param controller Swing controller
56 57
      * @param serverManager The manager to use to join dev chat.
58
+     * @param feedbackDialogProvider Provider of feedback dialogs.
59
+     * @param aboutDialogProvider Provider of about dialogs.
57 60
      */
58 61
     @Inject
59 62
     public HelpMenu(
60
-            final SwingController controller,
61
-            final ServerManager serverManager) {
63
+            final ServerManager serverManager,
64
+            final DialogProvider<FeedbackDialog> feedbackDialogProvider,
65
+            final DialogProvider<AboutDialog> aboutDialogProvider) {
62 66
         super("Help");
63
-        this.controller = controller;
64 67
         this.serverManager = serverManager;
68
+        this.feedbackDialogProvider = feedbackDialogProvider;
69
+        this.aboutDialogProvider = aboutDialogProvider;
65 70
         setMnemonic('h');
66 71
         initHelpMenu();
67 72
     }
@@ -105,13 +110,13 @@ public class HelpMenu extends JMenu implements ActionListener {
105 110
     public void actionPerformed(final ActionEvent e) {
106 111
         switch (e.getActionCommand()) {
107 112
             case "About":
108
-                controller.showDialog(AboutDialog.class);
113
+                aboutDialogProvider.displayOrRequestFocus();
109 114
                 break;
110 115
             case "JoinDevChat":
111 116
                 serverManager.joinDevChat();
112 117
                 break;
113 118
             case "feedback":
114
-                controller.showDialog(FeedbackDialog.class);
119
+                feedbackDialogProvider.displayOrRequestFocus();
115 120
                 break;
116 121
         }
117 122
     }

+ 11
- 8
src/com/dmdirc/addons/ui_swing/components/menubar/SettingsMenu.java 파일 보기

@@ -23,7 +23,6 @@
23 23
 package com.dmdirc.addons.ui_swing.components.menubar;
24 24
 
25 25
 import com.dmdirc.addons.ui_swing.Apple;
26
-import com.dmdirc.addons.ui_swing.SwingController;
27 26
 import com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsManagerDialog;
28 27
 import com.dmdirc.addons.ui_swing.dialogs.aliases.AliasManagerDialog;
29 28
 import com.dmdirc.addons.ui_swing.dialogs.prefs.SwingPreferencesDialog;
@@ -46,22 +45,26 @@ public class SettingsMenu extends JMenu implements ActionListener {
46 45
 
47 46
     /** Serial version UID. */
48 47
     private static final long serialVersionUID = 1;
49
-    /** Swing controller. */
50
-    private final SwingController controller;
51 48
     /** Provider of profile manager dialogs. */
52 49
     private final DialogProvider<ProfileManagerDialog> profileDialogProvider;
53 50
     /** Provider of action manager dialogs. */
54 51
     private final DialogProvider<ActionsManagerDialog> actionsDialogProvider;
52
+    /** Provider of preferences dialogs. */
53
+    private final DialogProvider<SwingPreferencesDialog> prefsDialogProvider;
54
+    /** Provider of alias manager dialogs. */
55
+    private final DialogProvider<AliasManagerDialog> aliasDialogProvider;
55 56
 
56 57
     @Inject
57 58
     public SettingsMenu(
58
-            final SwingController controller,
59 59
             final DialogProvider<ProfileManagerDialog> profileDialogProvider,
60
-            final DialogProvider<ActionsManagerDialog> actionsDialogProvider) {
60
+            final DialogProvider<ActionsManagerDialog> actionsDialogProvider,
61
+            final DialogProvider<SwingPreferencesDialog> prefsDialogProvider,
62
+            final DialogProvider<AliasManagerDialog> aliasDialogProvider) {
61 63
         super("Settings");
62
-        this.controller = controller;
63 64
         this.profileDialogProvider = profileDialogProvider;
64 65
         this.actionsDialogProvider = actionsDialogProvider;
66
+        this.prefsDialogProvider = prefsDialogProvider;
67
+        this.aliasDialogProvider = aliasDialogProvider;
65 68
 
66 69
         setMnemonic('e');
67 70
         initSettingsMenu();
@@ -109,7 +112,7 @@ public class SettingsMenu extends JMenu implements ActionListener {
109 112
     public void actionPerformed(final ActionEvent e) {
110 113
         switch (e.getActionCommand()) {
111 114
             case "Preferences":
112
-                controller.showDialog(SwingPreferencesDialog.class);
115
+                prefsDialogProvider.displayOrRequestFocus();
113 116
                 break;
114 117
             case "Profile":
115 118
                 profileDialogProvider.displayOrRequestFocus();
@@ -118,7 +121,7 @@ public class SettingsMenu extends JMenu implements ActionListener {
118 121
                 actionsDialogProvider.displayOrRequestFocus();
119 122
                 break;
120 123
             case "Aliases":
121
-                controller.showDialog(AliasManagerDialog.class);
124
+                aliasDialogProvider.displayOrRequestFocus();
122 125
                 break;
123 126
         }
124 127
     }

+ 1
- 2
src/com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel.java 파일 보기

@@ -103,8 +103,7 @@ public class ErrorPanel extends StatusbarPopupPanel<JLabel> implements
103 103
     /** {@inheritDoc} */
104 104
     @Override
105 105
     protected StatusbarPopupWindow getWindow() {
106
-        return new ErrorPopup(controller.getDialogManager(), controller.getIconManager(),
107
-                this, mainFrame);
106
+        return new ErrorPopup(controller.getIconManager(), this, mainFrame);
108 107
     }
109 108
 
110 109
     /** Clears the error. */

+ 1
- 4
src/com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup.java 파일 보기

@@ -22,7 +22,6 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.components.statusbar;
24 24
 
25
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
26 25
 import com.dmdirc.logger.ErrorLevel;
27 26
 import com.dmdirc.logger.ErrorManager;
28 27
 import com.dmdirc.logger.ErrorReportStatus;
@@ -53,17 +52,15 @@ public class ErrorPopup extends StatusbarPopupWindow {
53 52
     /**
54 53
      * Creates a new error popup.
55 54
      *
56
-     * @param dialogManager The manager to register the popup with.
57 55
      * @param iconManager The manager to use to retrieve icons.
58 56
      * @param parent Parent panel
59 57
      * @param parentWindow Parent window
60 58
      */
61 59
     public ErrorPopup(
62
-            final DialogManager dialogManager,
63 60
             final IconManager iconManager,
64 61
             final JPanel parent,
65 62
             final Window parentWindow) {
66
-        super(dialogManager, parent, parentWindow);
63
+        super(parent, parentWindow);
67 64
 
68 65
         this.iconManager = iconManager;
69 66
     }

+ 13
- 3
src/com/dmdirc/addons/ui_swing/components/statusbar/FeedbackNag.java 파일 보기

@@ -24,6 +24,7 @@ package com.dmdirc.addons.ui_swing.components.statusbar;
24 24
 
25 25
 import com.dmdirc.addons.ui_swing.SwingController;
26 26
 import com.dmdirc.addons.ui_swing.dialogs.FeedbackDialog;
27
+import com.dmdirc.addons.ui_swing.injection.DialogProvider;
27 28
 import com.dmdirc.interfaces.ui.StatusBarComponent;
28 29
 
29 30
 import java.awt.event.ActionEvent;
@@ -31,6 +32,7 @@ import java.awt.event.ActionListener;
31 32
 import java.awt.event.MouseEvent;
32 33
 import java.awt.event.MouseListener;
33 34
 
35
+import javax.inject.Inject;
34 36
 import javax.swing.BorderFactory;
35 37
 import javax.swing.JLabel;
36 38
 import javax.swing.JMenuItem;
@@ -54,15 +56,23 @@ public class FeedbackNag extends JLabel implements StatusBarComponent,
54 56
     private final JMenuItem show;
55 57
     /** Swing Controller. */
56 58
     private final SwingController controller;
59
+    /** Provider of feedback dialogs. */
60
+    private final DialogProvider<FeedbackDialog> feedbackDialogProvider;
57 61
 
58 62
     /**
59 63
      * Creates a new feedback nag.
60 64
      *
61 65
      * @param controller Swing controller
66
+     * @param feedbackDialogProvider Provider of feedback dialogs.
62 67
      */
63
-    public FeedbackNag(final SwingController controller) {
68
+    @Inject
69
+    public FeedbackNag(
70
+            final SwingController controller,
71
+            final DialogProvider<FeedbackDialog> feedbackDialogProvider) {
64 72
         super();
65 73
         this.controller = controller;
74
+        this.feedbackDialogProvider = feedbackDialogProvider;
75
+
66 76
         menu = new JPopupMenu();
67 77
         show = new JMenuItem("Open");
68 78
         final JMenuItem dismiss = new JMenuItem("Dismiss");
@@ -109,7 +119,7 @@ public class FeedbackNag extends JLabel implements StatusBarComponent,
109 119
     @Override
110 120
     public void mouseReleased(final MouseEvent e) {
111 121
         if (e.getButton() == 1) {
112
-            controller.showDialog(FeedbackDialog.class);
122
+            feedbackDialogProvider.displayOrRequestFocus();
113 123
             controller.getSwingStatusBar().removeComponent(this);
114 124
         }
115 125
         checkMouseEvent(e);
@@ -154,7 +164,7 @@ public class FeedbackNag extends JLabel implements StatusBarComponent,
154 164
     @Override
155 165
     public void actionPerformed(final ActionEvent e) {
156 166
         if (e.getSource() == show) {
157
-            controller.showDialog(FeedbackDialog.class);
167
+            feedbackDialogProvider.displayOrRequestFocus();
158 168
         }
159 169
         controller.getSwingStatusBar().removeComponent(this);
160 170
     }

+ 1
- 7
src/com/dmdirc/addons/ui_swing/components/statusbar/InviteLabel.java 파일 보기

@@ -32,7 +32,6 @@ import com.dmdirc.addons.ui_swing.MainFrame;
32 32
 import com.dmdirc.addons.ui_swing.SelectionListener;
33 33
 import com.dmdirc.addons.ui_swing.UIUtilities;
34 34
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
35
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
36 35
 import com.dmdirc.interfaces.ActionListener;
37 36
 import com.dmdirc.interfaces.Connection;
38 37
 import com.dmdirc.interfaces.InviteListener;
@@ -73,28 +72,23 @@ public class InviteLabel extends StatusbarPopupPanel<JLabel> implements
73 72
     private final JMenuItem accept;
74 73
     /** Main frame. */
75 74
     private final MainFrame mainFrame;
76
-    /** The dialog manager to register dialogs with. */
77
-    private final DialogManager dialogManager;
78 75
     /** Active server. */
79 76
     private Server activeServer;
80 77
 
81 78
     /**
82 79
      * Instantiates a new invite label.
83 80
      *
84
-     * @param dialogManager The manager to register dialogs with.
85 81
      * @param iconManager The manager to retrieve the invite icon from.
86 82
      * @param serverManager The manager to use to iterate servers.
87 83
      * @param mainFrame Main frame
88 84
      */
89 85
     @Inject
90 86
     public InviteLabel(
91
-            final DialogManager dialogManager,
92 87
             @GlobalConfig final IconManager iconManager,
93 88
             final ServerManager serverManager,
94 89
             final MainFrame mainFrame) {
95 90
         super(new JLabel());
96 91
 
97
-        this.dialogManager = dialogManager;
98 92
         this.mainFrame = mainFrame;
99 93
 
100 94
         setBorder(BorderFactory.createEtchedBorder());
@@ -126,7 +120,7 @@ public class InviteLabel extends StatusbarPopupPanel<JLabel> implements
126 120
     /** {@inheritDoc} */
127 121
     @Override
128 122
     protected StatusbarPopupWindow getWindow() {
129
-        return new InvitePopup(dialogManager, this, activeServer, mainFrame);
123
+        return new InvitePopup(this, activeServer, mainFrame);
130 124
     }
131 125
 
132 126
     /**

+ 2
- 4
src/com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup.java 파일 보기

@@ -23,7 +23,6 @@
23 23
 package com.dmdirc.addons.ui_swing.components.statusbar;
24 24
 
25 25
 import com.dmdirc.Invite;
26
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
27 26
 import com.dmdirc.interfaces.Connection;
28 27
 import com.dmdirc.util.DateUtils;
29 28
 
@@ -51,14 +50,13 @@ public class InvitePopup extends StatusbarPopupWindow {
51 50
     /**
52 51
      * Creates a new InvitePopup for the specified panel and connection.
53 52
      *
54
-     * @param dialogManager The dialog manager to register this dialog with.
55 53
      * @param parent The parent of this popup
56 54
      * @param connection The connection to show invites for
57 55
      * @param parentWindow Parent window
58 56
      */
59
-    public InvitePopup(final DialogManager dialogManager, final JPanel parent,
57
+    public InvitePopup(final JPanel parent,
60 58
             final Connection connection, final Window parentWindow) {
61
-        super(dialogManager, parent, parentWindow);
59
+        super(parent, parentWindow);
62 60
         this.connection = connection;
63 61
     }
64 62
 

+ 3
- 5
src/com/dmdirc/addons/ui_swing/components/statusbar/MessagePopup.java 파일 보기

@@ -23,7 +23,6 @@
23 23
 package com.dmdirc.addons.ui_swing.components.statusbar;
24 24
 
25 25
 import com.dmdirc.addons.ui_swing.SwingController;
26
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
27 26
 import com.dmdirc.ui.StatusMessage;
28 27
 import com.dmdirc.util.collections.RollingList;
29 28
 
@@ -80,7 +79,7 @@ class MessagePopup extends StatusbarTogglePanel<JLabel> {
80 79
     /* {@inheritDoc} */
81 80
     @Override
82 81
     protected StatusbarPopupWindow getWindow() {
83
-        return new MessageHistoryPanel(controller.getDialogManager(), this);
82
+        return new MessageHistoryPanel(this);
84 83
     }
85 84
 
86 85
     /* {@inheritDoc} */
@@ -141,11 +140,10 @@ class MessagePopup extends StatusbarTogglePanel<JLabel> {
141 140
         /**
142 141
          * Creates a new message history window.
143 142
          *
144
-         * @param dialogManager The dialog manager to register this window with.
145 143
          * @param window Parent window
146 144
          */
147
-        public MessageHistoryPanel(final DialogManager dialogManager, final JPanel parent) {
148
-            super(dialogManager, parent, parentWindow);
145
+        public MessageHistoryPanel(final JPanel parent) {
146
+            super(parent, parentWindow);
149 147
         }
150 148
 
151 149
         /* {@inheritDoc} */

+ 1
- 4
src/com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.java 파일 보기

@@ -22,7 +22,6 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.components.statusbar;
24 24
 
25
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
26 25
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
27 26
 
28 27
 import java.awt.Point;
@@ -56,15 +55,13 @@ public abstract class StatusbarPopupWindow extends StandardDialog {
56 55
     /**
57 56
      * Creates a new status bar popup window.
58 57
      *
59
-     * @param dialogManager The dialog manager to register this dialog with.
60 58
      * @param parent The {@link JPanel} to use for positioning
61 59
      * @param parentWindow Parent window
62 60
      */
63 61
     public StatusbarPopupWindow(
64
-            final DialogManager dialogManager,
65 62
             final JPanel parent,
66 63
             final Window parentWindow) {
67
-        super(dialogManager, parentWindow, ModalityType.MODELESS);
64
+        super(parentWindow, ModalityType.MODELESS);
68 65
 
69 66
         this.parent = parent;
70 67
         this.parentWindow = parentWindow;

+ 9
- 9
src/com/dmdirc/addons/ui_swing/components/statusbar/UpdaterLabel.java 파일 보기

@@ -25,6 +25,8 @@ package com.dmdirc.addons.ui_swing.components.statusbar;
25 25
 import com.dmdirc.addons.ui_swing.SwingController;
26 26
 import com.dmdirc.addons.ui_swing.dialogs.updater.SwingRestartDialog;
27 27
 import com.dmdirc.addons.ui_swing.dialogs.updater.SwingUpdaterDialog;
28
+import com.dmdirc.addons.ui_swing.injection.DialogModule.ForUpdates;
29
+import com.dmdirc.addons.ui_swing.injection.DialogProvider;
28 30
 import com.dmdirc.interfaces.ui.StatusBarComponent;
29 31
 import com.dmdirc.updater.manager.CachingUpdateManager;
30 32
 import com.dmdirc.updater.manager.UpdateManager;
@@ -34,7 +36,6 @@ import com.dmdirc.updater.manager.UpdateManagerStatus;
34 36
 import java.awt.event.MouseEvent;
35 37
 
36 38
 import javax.inject.Inject;
37
-import javax.inject.Provider;
38 39
 import javax.swing.BorderFactory;
39 40
 import javax.swing.JLabel;
40 41
 
@@ -56,9 +57,9 @@ public class UpdaterLabel extends StatusbarPopupPanel<JLabel> implements
56 57
     /** The update manager to use to retrieve information. */
57 58
     private final CachingUpdateManager updateManager;
58 59
     /** Provider of updater dialogs. */
59
-    private final Provider<SwingUpdaterDialog> updaterDialogProvider;
60
+    private final DialogProvider<SwingUpdaterDialog> updaterDialogProvider;
60 61
     /** Provider of restart dialogs. */
61
-    private final Provider<SwingRestartDialog> restartDialogProvider;
62
+    private final DialogProvider<SwingRestartDialog> restartDialogProvider;
62 63
 
63 64
     /**
64 65
      * Instantiates a new updater label, handles showing updates on the status
@@ -73,8 +74,8 @@ public class UpdaterLabel extends StatusbarPopupPanel<JLabel> implements
73 74
     public UpdaterLabel(
74 75
             final SwingController controller,
75 76
             final CachingUpdateManager updateManager,
76
-            final Provider<SwingUpdaterDialog> updaterDialogProvider,
77
-            final Provider<SwingRestartDialog> restartDialogProvider) {
77
+            final DialogProvider<SwingUpdaterDialog> updaterDialogProvider,
78
+            @ForUpdates final DialogProvider<SwingRestartDialog> restartDialogProvider) {
78 79
         super(new JLabel());
79 80
 
80 81
         this.controller = controller;
@@ -98,9 +99,9 @@ public class UpdaterLabel extends StatusbarPopupPanel<JLabel> implements
98 99
         if (mouseEvent.getButton() == MouseEvent.BUTTON1) {
99 100
             if (updateManager.getManagerStatus() == UpdateManagerStatus.IDLE_RESTART_NEEDED) {
100 101
                 closeDialog();
101
-                restartDialogProvider.get().displayOrRequestFocus();
102
+                restartDialogProvider.displayOrRequestFocus();
102 103
             } else {
103
-                updaterDialogProvider.get().displayOrRequestFocus();
104
+                updaterDialogProvider.displayOrRequestFocus();
104 105
             }
105 106
         }
106 107
     }
@@ -108,8 +109,7 @@ public class UpdaterLabel extends StatusbarPopupPanel<JLabel> implements
108 109
     /** {@inheritDoc} */
109 110
     @Override
110 111
     protected StatusbarPopupWindow getWindow() {
111
-        return new UpdaterPopup(controller.getDialogManager(), updateManager,
112
-                this, controller.getMainFrame());
112
+        return new UpdaterPopup(updateManager, this, controller.getMainFrame());
113 113
     }
114 114
 
115 115
     /** {@inheritDoc} */

+ 1
- 4
src/com/dmdirc/addons/ui_swing/components/statusbar/UpdaterPopup.java 파일 보기

@@ -22,7 +22,6 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.components.statusbar;
24 24
 
25
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
26 25
 import com.dmdirc.updater.UpdateComponent;
27 26
 import com.dmdirc.updater.manager.CachingUpdateManager;
28 27
 import com.dmdirc.updater.manager.UpdateStatus;
@@ -52,17 +51,15 @@ public class UpdaterPopup extends StatusbarPopupWindow {
52 51
     /**
53 52
      * Creates a new popup window for the specified panel and window.
54 53
      *
55
-     * @param dialogManager The manager to register this popup with.
56 54
      * @param updateManager The manager to use to get update information.
57 55
      * @param parent The panel that owns this popup
58 56
      * @param parentWindow The Window that owns this popup
59 57
      */
60 58
     public UpdaterPopup(
61
-            final DialogManager dialogManager,
62 59
             final CachingUpdateManager updateManager,
63 60
             final JPanel parent,
64 61
             final Window parentWindow) {
65
-        super(dialogManager, parent, parentWindow);
62
+        super(parent, parentWindow);
66 63
 
67 64
         this.updateManager = updateManager;
68 65
     }

+ 2
- 3
src/com/dmdirc/addons/ui_swing/dialogs/ChannelJoinDialog.java 파일 보기

@@ -40,16 +40,15 @@ public class ChannelJoinDialog extends StandardInputDialog {
40 40
      * Creates a new dialog which prompts a user and then joins the channel
41 41
      * they specify.
42 42
      *
43
-     * @param dialogManager Dialog manager
44 43
      * @param mainFrame Main frame
45 44
      * @param modality Window modality
46 45
      * @param title Window title
47 46
      * @param message Window message
48 47
      */
49
-    public ChannelJoinDialog(final DialogManager dialogManager, final MainFrame mainFrame,
48
+    public ChannelJoinDialog(final MainFrame mainFrame,
50 49
             final ModalityType modality, final String title,
51 50
             final String message) {
52
-        super(dialogManager, mainFrame, modality, title, message);
51
+        super(mainFrame, modality, title, message);
53 52
 
54 53
         this.mainFrame = mainFrame;
55 54
     }

+ 2
- 3
src/com/dmdirc/addons/ui_swing/dialogs/ConfirmQuitDialog.java 파일 보기

@@ -39,11 +39,10 @@ public abstract class ConfirmQuitDialog extends StandardQuestionDialog {
39 39
     /**
40 40
      * Creates a new client quit confirmation dialog.
41 41
      *
42
-     * @param dialogManager Dialog manager
43 42
      * @param parentWindow Parent window
44 43
      */
45
-    public ConfirmQuitDialog(final DialogManager dialogManager, final Window parentWindow) {
46
-        super(dialogManager, parentWindow, ModalityType.APPLICATION_MODAL, "Quit confirm",
44
+    public ConfirmQuitDialog(final Window parentWindow) {
45
+        super(parentWindow, ModalityType.APPLICATION_MODAL, "Quit confirm",
47 46
                 "You are about to quit DMDirc, are you sure?");
48 47
     }
49 48
 

+ 0
- 253
src/com/dmdirc/addons/ui_swing/dialogs/DialogManager.java 파일 보기

@@ -1,253 +0,0 @@
1
-/*
2
- * Copyright (c) 2006-2014 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.ui_swing.dialogs;
24
-
25
-import com.dmdirc.ServerManager;
26
-import com.dmdirc.actions.ActionFactory;
27
-import com.dmdirc.actions.ActionSubstitutorFactory;
28
-import com.dmdirc.actions.wrappers.PerformWrapper;
29
-import com.dmdirc.addons.ui_swing.MainFrame;
30
-import com.dmdirc.addons.ui_swing.PrefsComponentFactory;
31
-import com.dmdirc.addons.ui_swing.SwingController;
32
-import com.dmdirc.addons.ui_swing.SwingWindowFactory;
33
-import com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar;
34
-import com.dmdirc.config.prefs.PreferencesManager;
35
-import com.dmdirc.interfaces.LifecycleController;
36
-import com.dmdirc.interfaces.config.AggregateConfigProvider;
37
-import com.dmdirc.interfaces.config.ConfigProvider;
38
-import com.dmdirc.interfaces.config.IdentityController;
39
-import com.dmdirc.interfaces.config.IdentityFactory;
40
-import com.dmdirc.interfaces.ui.StatusBar;
41
-import com.dmdirc.plugins.ServiceManager;
42
-import com.dmdirc.ui.IconManager;
43
-import com.dmdirc.ui.core.util.URLHandler;
44
-import com.dmdirc.util.SimpleInjector;
45
-
46
-import java.awt.Window;
47
-import java.util.Collections;
48
-import java.util.HashMap;
49
-import java.util.Map;
50
-
51
-import org.slf4j.LoggerFactory;
52
-
53
-/**
54
- * Manages the DMDirc dialogs, creates and disposes as required to ensure only
55
- * the required number exist at any one time.
56
- */
57
-public class DialogManager {
58
-
59
-    private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(DialogManager.class);
60
-
61
-    /** Controller used for standard parameters for dependency injection. */
62
-    private final SwingController controller;
63
-    /** Stores all known dialogs in this manager. */
64
-    private final Map<Class<? extends StandardDialog>, StandardDialog> dialogs;
65
-
66
-    /**
67
-     * Creates a new instance of the dialog manager.
68
-     *
69
-     * @param controller Parent Swing controller
70
-     */
71
-    public DialogManager(final SwingController controller) {
72
-        this.controller = controller;
73
-        dialogs = Collections.synchronizedMap(
74
-                new HashMap<Class<? extends StandardDialog>, StandardDialog>());
75
-    }
76
-
77
-    /**
78
-     * Creates, or retrieves, an instance of the specified dialog and displays
79
-     * this dialog to the user. For more details on what parameters might be
80
-     * required see {@link DialogManager#getDialog(Class, Object...)}
81
-     *
82
-     * @param <T> Dialog type
83
-     *
84
-     * @see DialogManager#getDialog(Class, Object...) getDialog
85
-     *
86
-     * @param klass The class of the dialog to show
87
-     * @param params Any non standard parameters required
88
-     *
89
-     * @return Dialog instance
90
-     * @deprecated Use dagger instead.
91
-     */
92
-    @Deprecated
93
-    public <T extends StandardDialog> T showDialog(final Class<T> klass,
94
-            final Object... params) {
95
-        final T dialog = getDialog(klass, params);
96
-        if (dialog.isVisible()) {
97
-            LOG.trace("Requesting focus for dialog: {}", klass);
98
-            dialog.requestFocus();
99
-        } else {
100
-            LOG.trace("Display new dialog: {}", klass);
101
-            dialog.display();
102
-        }
103
-        return dialog;
104
-    }
105
-
106
-    /**
107
-     * Creates, or retrieves, an instance of the specified dialog.
108
-     *
109
-     * The following parameters will automatically be provided when creating a
110
-     * dialog, any extra parameters will need to be provided.
111
-     * <ul>
112
-     *   <li>SwingController</li>
113
-     *   <li>IconManager</li>
114
-     *   <li>IdentityManager</li>
115
-     *   <li>ConfigManager</li>
116
-     *   <li>MainFrame</li>
117
-     *   <li>Window</li>
118
-     *   <li>SwingStatusBar</li>
119
-     *   <li>StatusBar</li>
120
-     *   <li>SwingWindowFactory</li>
121
-     *   <li>URLHandler</li>
122
-     *   <li>DialogManager</li>
123
-     * </ul>
124
-     *
125
-     * @param <T> Dialog type
126
-     *
127
-     * @param klass The class of the dialog to show
128
-     * @param params Any non standard parameters required
129
-     *
130
-     * @return Dialog instance
131
-     * @deprecated Use dagger instead.
132
-     */
133
-    @Deprecated
134
-    @SuppressWarnings("unchecked")
135
-    public <T extends StandardDialog> T getDialog(final Class<T> klass,
136
-            final Object... params) {
137
-        final T instance;
138
-        if (dialogs.containsKey(klass)) {
139
-            LOG.trace("Getting pre-existing dialog: {}", klass);
140
-            instance = (T) dialogs.get(klass);
141
-        } else {
142
-            LOG.trace("Creating new dialog: {}", klass);
143
-            final SimpleInjector injector = getInjector(params);
144
-            instance = injector.createInstance(klass);
145
-
146
-            dialogs.put(instance.getClass(), instance);
147
-        }
148
-        return instance;
149
-    }
150
-
151
-    /**
152
-     * Creates and initialises the a dependency injector that can be used to
153
-     * create a dialog.
154
-     *
155
-     * The following parameters will automatically be provided when creating a
156
-     * dialog, any extra parameters will need to be provided.
157
-     * <ul>
158
-     *   <li>SwingController</li>
159
-     *   <li>IconManager</li>
160
-     *   <li>IdentityManager</li>
161
-     *   <li>ConfigManager</li>
162
-     *   <li>MainFrame</li>
163
-     *   <li>Window</li>
164
-     *   <li>SwingStatusBar</li>
165
-     *   <li>StatusBar</li>
166
-     *   <li>SwingWindowFactory</li>
167
-     *   <li>URLHandler</li>
168
-     *   <li>DialogManager</li>
169
-     * </ul>
170
-     *
171
-     * @param params Extra parameters to inject.
172
-     *
173
-     * @return Injector with parameters added
174
-     */
175
-    private SimpleInjector getInjector(final Object... params) {
176
-        final SimpleInjector injector = new SimpleInjector();
177
-
178
-        injector.addParameter(SwingController.class, controller);
179
-        injector.addParameter(IconManager.class, controller.getIconManager());
180
-        injector.addParameter(IdentityController.class, controller.getIdentityManager());
181
-        injector.addParameter(ConfigProvider.class, controller.getGlobalIdentity());
182
-        injector.addParameter(AggregateConfigProvider.class, controller.getGlobalConfig());
183
-        injector.addParameter(MainFrame.class, controller.getMainFrame());
184
-        injector.addParameter(LifecycleController.class, controller.getLifecycleController());
185
-        injector.addParameter(ActionSubstitutorFactory.class, controller.getActionSubstitutorFactory());
186
-        injector.addParameter(Window.class, controller.getMainFrame());
187
-        injector.addParameter(SwingStatusBar.class, controller.getSwingStatusBar());
188
-        injector.addParameter(StatusBar.class, controller.getSwingStatusBar());
189
-        injector.addParameter(SwingWindowFactory.class, controller.getWindowFactory());
190
-        injector.addParameter(URLHandler.class, controller.getUrlHandler());
191
-        injector.addParameter(DialogManager.class, this);
192
-        injector.addParameter(PerformWrapper.class, controller.getPerformWrapper());
193
-        injector.addParameter(ServerManager.class, controller.getServerManager());
194
-        injector.addParameter(PrefsComponentFactory.class, controller.getPrefsComponentFactory());
195
-        injector.addParameter(ActionFactory.class, controller.getActionFactory());
196
-        injector.addParameter(IdentityFactory.class, controller.getIdentityFactory());
197
-        injector.addParameter(ServiceManager.class, controller.getPluginManager());
198
-        injector.addParameter(PreferencesManager.class, PreferencesManager.getPreferencesManager());
199
-
200
-        for (final Object param : params) {
201
-            injector.addParameter(param);
202
-        }
203
-
204
-        return injector;
205
-    }
206
-
207
-    /**
208
-     * Closes the previously created instance of a dialog.
209
-     *
210
-     * @param klass The class of the dialog to show
211
-     * @deprecated Use dagger instead.
212
-     */
213
-    @Deprecated
214
-    public void close(final Class<? extends StandardDialog> klass) {
215
-        final StandardDialog dialog = dispose(klass);
216
-        if (dialog != null) {
217
-            dialog.dispose();
218
-        }
219
-    }
220
-
221
-    /**
222
-     * Removes a previously created instance of a dialog from the dialog
223
-     * manager.
224
-     *
225
-     * @param klass The class of the dialog to show
226
-     *
227
-     * @return Instance of the dialog that has been removed or null if there
228
-     * was no dialog created
229
-     */
230
-    public StandardDialog dispose(final Class<? extends StandardDialog> klass) {
231
-        if (dialogs.containsKey(klass)) {
232
-            return dialogs.remove(klass);
233
-        }
234
-        return null;
235
-    }
236
-
237
-    /**
238
-     * Removes a previously created instance of a dialog from the dialog
239
-     * manager.
240
-     *
241
-     * @param dialog Dialog to dispose of
242
-     *
243
-     * @return Instance of the dialog that has been removed or null if there was no dialog created
244
-     */
245
-    public StandardDialog dispose(final StandardDialog dialog) {
246
-        if (dialogs.containsKey(dialog.getClass())) {
247
-            LOG.trace("Disposing of known dialog: {}", dialog);
248
-            return dispose(dialog.getClass());
249
-        }
250
-        LOG.trace("Unknown dialog, not disposing: {}", dialog);
251
-        return null;
252
-    }
253
-}

+ 8
- 5
src/com/dmdirc/addons/ui_swing/dialogs/FeedbackDialog.java 파일 보기

@@ -22,8 +22,10 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.dialogs;
24 24
 
25
+import com.dmdirc.ClientModule.GlobalConfig;
25 26
 import com.dmdirc.Server;
26 27
 import com.dmdirc.ServerManager;
28
+import com.dmdirc.addons.ui_swing.MainFrame;
27 29
 import com.dmdirc.addons.ui_swing.SwingController;
28 30
 import com.dmdirc.addons.ui_swing.UIUtilities;
29 31
 import com.dmdirc.addons.ui_swing.components.SendWorker;
@@ -33,10 +35,10 @@ import com.dmdirc.interfaces.config.IdentityController;
33 35
 import com.dmdirc.ui.core.util.Info;
34 36
 
35 37
 import java.awt.Insets;
36
-import java.awt.Window;
37 38
 import java.awt.event.ActionEvent;
38 39
 import java.awt.event.ActionListener;
39 40
 
41
+import javax.inject.Inject;
40 42
 import javax.swing.BorderFactory;
41 43
 import javax.swing.JButton;
42 44
 import javax.swing.JCheckBox;
@@ -78,17 +80,18 @@ public class FeedbackDialog extends StandardDialog implements ActionListener, Do
78 80
     /**
79 81
      * Instantiates the feedback dialog.
80 82
      *
81
-     * @param dialogManager Dialog manager
82 83
      * @param parentWindow Parent window
83 84
      * @param identityController Identity controller (needs to be a config directory)
84 85
      * @param serverManager Server manager
85 86
      * @param config Config
86 87
      */
87
-    public FeedbackDialog(final DialogManager dialogManager, final Window parentWindow,
88
+    @Inject
89
+    public FeedbackDialog(
90
+            final MainFrame parentWindow,
88 91
             final IdentityController identityController,
89 92
             final ServerManager serverManager,
90
-            final AggregateConfigProvider config) {
91
-        super(dialogManager, parentWindow, ModalityType.MODELESS);
93
+            @GlobalConfig final AggregateConfigProvider config) {
94
+        super(parentWindow, ModalityType.MODELESS);
92 95
 
93 96
         this.serverManager = serverManager;
94 97
         this.config = config;

+ 1
- 3
src/com/dmdirc/addons/ui_swing/dialogs/NewServerDialog.java 파일 보기

@@ -105,7 +105,6 @@ public class NewServerDialog extends StandardDialog implements
105 105
     /**
106 106
      * Creates a new instance of the dialog.
107 107
      *
108
-     * @param dialogManager Dialog manager
109 108
      * @param mainFrame Main frame
110 109
      * @param config Config
111 110
      * @param iconManager Icon manager
@@ -115,14 +114,13 @@ public class NewServerDialog extends StandardDialog implements
115 114
      */
116 115
     @Inject
117 116
     public NewServerDialog(
118
-            final DialogManager dialogManager,
119 117
             final MainFrame mainFrame,
120 118
             @GlobalConfig final AggregateConfigProvider config,
121 119
             @GlobalConfig final IconManager iconManager,
122 120
             final IdentityController identityController,
123 121
             final ServerManager serverManager,
124 122
             final DialogProvider<ProfileManagerDialog> profileDialogProvider) {
125
-        super(dialogManager, mainFrame, ModalityType.MODELESS);
123
+        super(mainFrame, ModalityType.MODELESS);
126 124
         this.identityController = identityController;
127 125
         this.serverManager = serverManager;
128 126
         this.mainFrame = mainFrame;

+ 3
- 20
src/com/dmdirc/addons/ui_swing/dialogs/StandardDialog.java 파일 보기

@@ -39,13 +39,10 @@ import javax.swing.SwingUtilities;
39 39
 /**
40 40
  * Provides common methods for dialogs.
41 41
  */
42
-@SuppressWarnings("unused")
43 42
 public class StandardDialog extends JDialog {
44 43
 
45 44
     /** Serial version UID. */
46 45
     private static final long serialVersionUID = 1;
47
-    /** Dialog manager. */
48
-    private final DialogManager dialogManager;
49 46
     /** Parent window. */
50 47
     private final Window owner;
51 48
     /** The OK button for this frame. */
@@ -56,27 +53,22 @@ public class StandardDialog extends JDialog {
56 53
     /**
57 54
      * Creates a new instance of StandardDialog.
58 55
      *
59
-     * @param dialogManager Dialog Manager used for disposal
60 56
      * @param owner The frame that owns this dialog
61 57
      * @param modal Whether to display modally or not
62 58
      */
63
-    public StandardDialog(final DialogManager dialogManager,
64
-            final Frame owner, final boolean modal) {
65
-        this(dialogManager, owner, modal ? ModalityType.APPLICATION_MODAL : ModalityType.MODELESS);
59
+    public StandardDialog(final Frame owner, final boolean modal) {
60
+        this(owner, modal ? ModalityType.APPLICATION_MODAL : ModalityType.MODELESS);
66 61
     }
67 62
 
68 63
     /**
69 64
      * Creates a new instance of StandardDialog.
70 65
      *
71
-     * @param dialogManager Dialog Manager used for disposal
72 66
      * @param owner The frame that owns this dialog
73 67
      * @param modal Whether to display modally or not
74 68
      */
75
-    public StandardDialog(final DialogManager dialogManager,
76
-            final Window owner, final ModalityType modal) {
69
+    public StandardDialog(final Window owner, final ModalityType modal) {
77 70
         super(owner, modal);
78 71
         this.owner = owner;
79
-        this.dialogManager = dialogManager;
80 72
 
81 73
         if (owner != null) {
82 74
             setIconImages(owner.getIconImages());
@@ -91,15 +83,6 @@ public class StandardDialog extends JDialog {
91 83
         super.setTitle("DMDirc: " + title);
92 84
     }
93 85
 
94
-    /** {@inheritDoc} */
95
-    @Override
96
-    public void dispose() {
97
-        if (dialogManager != null) {
98
-            dialogManager.dispose(this);
99
-        }
100
-        super.dispose();
101
-    }
102
-
103 86
     /**
104 87
      * Displays the dialog centering on the parent window.
105 88
      */

+ 4
- 6
src/com/dmdirc/addons/ui_swing/dialogs/StandardInputDialog.java 파일 보기

@@ -64,16 +64,15 @@ public abstract class StandardInputDialog extends StandardDialog {
64 64
     /**
65 65
      * Instantiates a new standard input dialog.
66 66
      *
67
-     * @param dialogManager Dialog manager
68 67
      * @param owner Dialog owner
69 68
      * @param modal modality type
70 69
      * @param title Dialog title
71 70
      * @param message Dialog message
72 71
      */
73
-    public StandardInputDialog(final DialogManager dialogManager,
72
+    public StandardInputDialog(
74 73
             final Window owner, final ModalityType modal,
75 74
             final String title, final String message) {
76
-        this(dialogManager, owner, modal, title, message, new Validator<String>() {
75
+        this(owner, modal, title, message, new Validator<String>() {
77 76
 
78 77
             /** {@inheritDoc} */
79 78
             @Override
@@ -86,18 +85,17 @@ public abstract class StandardInputDialog extends StandardDialog {
86 85
     /**
87 86
      * Instantiates a new standard input dialog.
88 87
      *
89
-     * @param dialogManager Dialog manager
90 88
      * @param owner Dialog owner
91 89
      * @param modal modality type
92 90
      * @param validator Textfield validator
93 91
      * @param title Dialog title
94 92
      * @param message Dialog message
95 93
      */
96
-    public StandardInputDialog(final DialogManager dialogManager,
94
+    public StandardInputDialog(
97 95
             final Window owner, final ModalityType modal,
98 96
             final String title, final String message,
99 97
             final Validator<String> validator) {
100
-        super(dialogManager, owner, modal);
98
+        super(owner, modal);
101 99
 
102 100
         this.validator = validator;
103 101
         this.message = message;

+ 2
- 4
src/com/dmdirc/addons/ui_swing/dialogs/StandardMessageDialog.java 파일 보기

@@ -22,7 +22,6 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.dialogs;
24 24
 
25
-import com.dmdirc.addons.ui_swing.SwingController;
26 25
 import com.dmdirc.addons.ui_swing.components.text.TextLabel;
27 26
 
28 27
 import java.awt.Window;
@@ -50,16 +49,15 @@ public class StandardMessageDialog extends StandardDialog {
50 49
     /**
51 50
      * Instantiates a new standard input dialog.
52 51
      *
53
-     * @param controller Swing controller
54 52
      * @param owner Dialog owner
55 53
      * @param modal modality type
56 54
      * @param title Dialog title
57 55
      * @param message Dialog message
58 56
      */
59
-    public StandardMessageDialog(final SwingController controller,
57
+    public StandardMessageDialog(
60 58
             final Window owner, final ModalityType modal, final String title,
61 59
             final String message) {
62
-        super(controller.getDialogManager(), owner, modal);
60
+        super(owner, modal);
63 61
 
64 62
         this.message = message;
65 63
 

+ 2
- 3
src/com/dmdirc/addons/ui_swing/dialogs/StandardQuestionDialog.java 파일 보기

@@ -51,16 +51,15 @@ public abstract class StandardQuestionDialog extends StandardDialog {
51 51
     /**
52 52
      * Instantiates a new standard input dialog.
53 53
      *
54
-     * @param dialogManager Dialog manager
55 54
      * @param owner Dialog owner
56 55
      * @param modal modality type
57 56
      * @param title Dialog title
58 57
      * @param message Dialog message
59 58
      */
60
-    public StandardQuestionDialog(final DialogManager dialogManager,
59
+    public StandardQuestionDialog(
61 60
             final Window owner, final ModalityType modal, final String title,
62 61
             final String message) {
63
-        super(dialogManager, owner, modal);
62
+        super(owner, modal);
64 63
 
65 64
         this.message = message;
66 65
 

+ 7
- 5
src/com/dmdirc/addons/ui_swing/dialogs/about/AboutDialog.java 파일 보기

@@ -22,14 +22,14 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.dialogs.about;
24 24
 
25
+import com.dmdirc.addons.ui_swing.MainFrame;
25 26
 import com.dmdirc.addons.ui_swing.SwingController;
26
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
27 27
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
28 28
 
29
-import java.awt.Window;
30 29
 import java.awt.event.ActionEvent;
31 30
 import java.awt.event.ActionListener;
32 31
 
32
+import javax.inject.Inject;
33 33
 import javax.swing.JButton;
34 34
 import javax.swing.JTabbedPane;
35 35
 import javax.swing.WindowConstants;
@@ -51,16 +51,18 @@ public class AboutDialog extends StandardDialog implements ActionListener, Chang
51 51
     private CreditsPanel cp;
52 52
     /** Tab history. */
53 53
     private int history = 0;
54
+
54 55
     /**
55 56
      * Creates a new instance of AboutDialog.
56 57
      *
57 58
      * @param controller Swing controller
58
-     * @param dialogManager Dialog manager
59 59
      * @param parentWindow Parent window
60 60
      */
61
-    public AboutDialog(final DialogManager dialogManager, final Window parentWindow,
61
+    @Inject
62
+    public AboutDialog(
63
+            final MainFrame parentWindow,
62 64
             final SwingController controller) {
63
-        super(dialogManager, parentWindow, ModalityType.MODELESS);
65
+        super(parentWindow, ModalityType.MODELESS);
64 66
 
65 67
         initComponents(controller);
66 68
     }

+ 21
- 13
src/com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionEditorDialog.java 파일 보기

@@ -22,17 +22,19 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.dialogs.actioneditor;
24 24
 
25
+import com.dmdirc.ClientModule.GlobalConfig;
25 26
 import com.dmdirc.actions.Action;
26 27
 import com.dmdirc.actions.ActionFactory;
27 28
 import com.dmdirc.actions.ActionStatus;
28 29
 import com.dmdirc.actions.ActionSubstitutorFactory;
29
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
30 30
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
31
+import com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsManagerDialog;
31 32
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
32 33
 import com.dmdirc.ui.IconManager;
34
+import com.dmdirc.util.annotations.factory.Factory;
35
+import com.dmdirc.util.annotations.factory.Unbound;
33 36
 
34 37
 import java.awt.Dimension;
35
-import java.awt.Window;
36 38
 import java.awt.event.ActionEvent;
37 39
 import java.awt.event.ActionListener;
38 40
 import java.beans.PropertyChangeEvent;
@@ -41,7 +43,6 @@ import java.beans.PropertyChangeListener;
41 43
 import javax.swing.JButton;
42 44
 import javax.swing.SwingUtilities;
43 45
 
44
-
45 46
 import net.miginfocom.swing.MigLayout;
46 47
 
47 48
 import org.slf4j.LoggerFactory;
@@ -49,6 +50,7 @@ import org.slf4j.LoggerFactory;
49 50
 /**
50 51
  * Action editor dialog.
51 52
  */
53
+@Factory(inject=true, singleton=true)
52 54
 public class ActionEditorDialog extends StandardDialog implements ActionListener,
53 55
         PropertyChangeListener {
54 56
 
@@ -88,7 +90,6 @@ public class ActionEditorDialog extends StandardDialog implements ActionListener
88 90
     /**
89 91
      * Instantiates the panel.
90 92
      *
91
-     * @param dialogManager Dialog manager
92 93
      * @param iconManager Icon manager
93 94
      * @param config Config
94 95
      * @param subsFactory Actions substitution factory
@@ -96,10 +97,14 @@ public class ActionEditorDialog extends StandardDialog implements ActionListener
96 97
      * @param parentWindow Parent window
97 98
      * @param group Action's group
98 99
      */
99
-    public ActionEditorDialog(final DialogManager dialogManager, final IconManager iconManager,
100
-            final AggregateConfigProvider config, final ActionSubstitutorFactory subsFactory,
101
-            final ActionFactory actionFactory, final Window parentWindow, final String group) {
102
-        super(dialogManager, parentWindow, ModalityType.DOCUMENT_MODAL);
100
+    public ActionEditorDialog(
101
+            @SuppressWarnings("qualifiers") @GlobalConfig final IconManager iconManager,
102
+            @SuppressWarnings("qualifiers") @GlobalConfig final AggregateConfigProvider config,
103
+            final ActionSubstitutorFactory subsFactory,
104
+            final ActionFactory actionFactory,
105
+            @Unbound final ActionsManagerDialog parentWindow,
106
+            @Unbound final String group) {
107
+        super(parentWindow, ModalityType.DOCUMENT_MODAL);
103 108
         LOG.debug("loading with group: " + group);
104 109
         setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
105 110
         setTitle("Action Editor");
@@ -119,7 +124,6 @@ public class ActionEditorDialog extends StandardDialog implements ActionListener
119 124
     /**
120 125
      * Instantiates the panel.
121 126
      *
122
-     * @param dialogManager Dialog manager
123 127
      * @param iconManager Icon manager
124 128
      * @param config Config
125 129
      * @param subsFactory Actions substitution factory
@@ -127,10 +131,14 @@ public class ActionEditorDialog extends StandardDialog implements ActionListener
127 131
      * @param parentWindow Parent window
128 132
      * @param action Action to be edited
129 133
      */
130
-    public ActionEditorDialog(final DialogManager dialogManager, final IconManager iconManager,
131
-            final AggregateConfigProvider config, final ActionSubstitutorFactory subsFactory,
132
-            final ActionFactory actionFactory, final Window parentWindow, final Action action) {
133
-        super(dialogManager, parentWindow, ModalityType.DOCUMENT_MODAL);
134
+    public ActionEditorDialog(
135
+            @SuppressWarnings("qualifiers") @GlobalConfig final IconManager iconManager,
136
+            @SuppressWarnings("qualifiers") @GlobalConfig final AggregateConfigProvider config,
137
+            final ActionSubstitutorFactory subsFactory,
138
+            final ActionFactory actionFactory,
139
+            @Unbound final ActionsManagerDialog parentWindow,
140
+            @Unbound final Action action) {
141
+        super(parentWindow, ModalityType.DOCUMENT_MODAL);
134 142
         LOG.debug("loading with action: " + action);
135 143
         setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
136 144
         setTitle("Action Editor");

+ 18
- 17
src/com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsGroupPanel.java 파일 보기

@@ -28,13 +28,13 @@ import com.dmdirc.actions.ActionTypeComparator;
28 28
 import com.dmdirc.addons.ui_swing.components.PackingTable;
29 29
 import com.dmdirc.addons.ui_swing.components.renderers.ActionTypeTableCellRenderer;
30 30
 import com.dmdirc.addons.ui_swing.components.renderers.ArrayCellRenderer;
31
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
32 31
 import com.dmdirc.addons.ui_swing.dialogs.StandardQuestionDialog;
33 32
 import com.dmdirc.addons.ui_swing.dialogs.StringArrayComparator;
34
-import com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog;
33
+import com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialogFactory;
34
+import com.dmdirc.util.annotations.factory.Factory;
35
+import com.dmdirc.util.annotations.factory.Unbound;
35 36
 
36 37
 import java.awt.Dialog.ModalityType;
37
-import java.awt.Window;
38 38
 import java.awt.event.ActionEvent;
39 39
 import java.awt.event.ActionListener;
40 40
 import java.awt.event.MouseAdapter;
@@ -57,6 +57,7 @@ import net.miginfocom.swing.MigLayout;
57 57
  * of the actions manager dialog. It shows the user all actions belonging to
58 58
  * a particular group.
59 59
  */
60
+@Factory(inject=true, singleton=true)
60 61
 public class ActionsGroupPanel extends JPanel implements ActionListener,
61 62
         ListSelectionListener {
62 63
 
@@ -66,10 +67,10 @@ public class ActionsGroupPanel extends JPanel implements ActionListener,
66 67
      * objects being unserialized with the new class).
67 68
      */
68 69
     private static final long serialVersionUID = 1;
69
-    /** Dialog Manager */
70
-    private final DialogManager dialogManager;
70
+    /** Factory to use to create editor dialogs. */
71
+    private final ActionEditorDialogFactory editorDialogFactory;
71 72
     /** Parent dialog. */
72
-    private final Window parent;
73
+    private final ActionsManagerDialog parent;
73 74
     /** Table scrollpane. */
74 75
     private JScrollPane scrollPane;
75 76
     /** Actions table. */
@@ -88,15 +89,17 @@ public class ActionsGroupPanel extends JPanel implements ActionListener,
88 89
     /**
89 90
      * Creates a new instance of ActionsManagerDialog.
90 91
      *
91
-     * @param dialogManager Dialog Manager
92
+     * @param editorDialogFactory Factory to use to create editor dialogs.
92 93
      * @param parent Parent window
93 94
      * @param group Action group to display
94 95
      */
95
-    public ActionsGroupPanel(final DialogManager dialogManager,
96
-            final Window parent, final ActionGroup group) {
96
+    public ActionsGroupPanel(
97
+            final ActionEditorDialogFactory editorDialogFactory,
98
+            @Unbound final ActionsManagerDialog parent,
99
+            @Unbound final ActionGroup group) {
97 100
         super();
98 101
 
99
-        this.dialogManager = dialogManager;
102
+        this.editorDialogFactory = editorDialogFactory;
100 103
         this.parent = parent;
101 104
         this.group = group;
102 105
 
@@ -245,19 +248,17 @@ public class ActionsGroupPanel extends JPanel implements ActionListener,
245 248
     @Override
246 249
     public void actionPerformed(final ActionEvent e) {
247 250
         if (e.getSource() == add) {
248
-            dialogManager.showDialog(ActionEditorDialog.class, this, parent,
249
-                    group.getName());
251
+            editorDialogFactory.getActionEditorDialog(parent, group.getName()).display();
250 252
         } else if (e.getSource() == edit) {
251
-            dialogManager.showDialog(ActionEditorDialog.class, this, parent,
252
-                    model.getAction(
253
-                    table.getRowSorter().convertRowIndexToModel(table.
254
-                    getSelectedRow())));
253
+            editorDialogFactory.getActionEditorDialog(parent,
254
+                    model.getAction(table.getRowSorter().convertRowIndexToModel(
255
+                            table.getSelectedRow()))).display();
255 256
         } else if (e.getSource() == delete) {
256 257
             final Action action =
257 258
                     model.getAction(
258 259
                     table.getRowSorter().convertRowIndexToModel(table.
259 260
                     getSelectedRow()));
260
-            new StandardQuestionDialog(dialogManager, parent,
261
+            new StandardQuestionDialog(parent,
261 262
                     ModalityType.APPLICATION_MODAL, "Confirm deletion",
262 263
                     "Are you sure you wish to delete the action '" + action.
263 264
                     getName() + "'?") {

+ 11
- 12
src/com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsManagerDialog.java 파일 보기

@@ -36,7 +36,6 @@ import com.dmdirc.addons.ui_swing.components.SortedListModel;
36 36
 import com.dmdirc.addons.ui_swing.components.frames.AppleJFrame;
37 37
 import com.dmdirc.addons.ui_swing.components.renderers.ActionGroupListCellRenderer;
38 38
 import com.dmdirc.addons.ui_swing.components.text.TextLabel;
39
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
40 39
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
41 40
 import com.dmdirc.addons.ui_swing.dialogs.StandardInputDialog;
42 41
 import com.dmdirc.addons.ui_swing.dialogs.StandardQuestionDialog;
@@ -78,8 +77,6 @@ public class ActionsManagerDialog extends StandardDialog implements
78 77
      * objects being unserialized with the new class).
79 78
      */
80 79
     private static final long serialVersionUID = 1;
81
-    /** Dialog manager. */
82
-    private final DialogManager dialogManager;
83 80
     /** Config instance. */
84 81
     private final ConfigProvider config;
85 82
     /** Preferences setting component factory. */
@@ -108,29 +105,31 @@ public class ActionsManagerDialog extends StandardDialog implements
108 105
     private ActionGroupSettingsPanel activeSettings;
109 106
     /** Group panel. */
110 107
     private JPanel groupPanel;
108
+    /** Factory to use to create group panels. */
109
+    private final ActionsGroupPanelFactory groupPanelFactory;
111 110
 
112 111
     /**
113 112
      * Creates a new instance of ActionsManagerDialog.
114 113
      *
115 114
      * @param parentWindow Parent window
116 115
      * @param controller Parent controller
117
-     * @param dialogManager Dialog manager
118 116
      * @param config Config to save dialog state to
119 117
      * @param compFactory Prefs setting component factory
118
+     * @param groupPanelFactory Factory to use to create group panels.
120 119
      */
121 120
     @Inject
122 121
     public ActionsManagerDialog(
123 122
             final MainFrame parentWindow,
124 123
             final SwingController controller,
125
-            final DialogManager dialogManager,
126 124
             @UserConfig final ConfigProvider config,
127
-            final PrefsComponentFactory compFactory) {
128
-        super(dialogManager, Apple.isAppleUI()
125
+            final PrefsComponentFactory compFactory,
126
+            final ActionsGroupPanelFactory groupPanelFactory) {
127
+        super(Apple.isAppleUI()
129 128
                 ? new AppleJFrame(parentWindow, controller)
130 129
                 : parentWindow, ModalityType.MODELESS);
131
-        this.dialogManager = dialogManager;
132 130
         this.config = config;
133 131
         this.compFactory = compFactory;
132
+        this.groupPanelFactory = groupPanelFactory;
134 133
 
135 134
         initComponents();
136 135
         validator = new ValidatorChain<>(
@@ -155,7 +154,7 @@ public class ActionsManagerDialog extends StandardDialog implements
155 154
                 + " there for you to organise groups, add or remove them"
156 155
                 + " to suit your needs.");
157 156
         groups = new JList(new SortedListModel<>(new ActionGroupNameComparator()));
158
-        actions = new ActionsGroupPanel(dialogManager, this, null);
157
+        actions = groupPanelFactory.getActionsGroupPanel(this, null);
159 158
         info = new ActionGroupInformationPanel(null);
160 159
         settings = new HashMap<>();
161 160
         activeSettings = new ActionGroupSettingsPanel(compFactory, null, this);
@@ -312,7 +311,7 @@ public class ActionsManagerDialog extends StandardDialog implements
312 311
     private void addGroup() {
313 312
         final int index = groups.getSelectedIndex();
314 313
         groups.getSelectionModel().clearSelection();
315
-        new StandardInputDialog(dialogManager, this,
314
+        new StandardInputDialog(this,
316 315
                 ModalityType.DOCUMENT_MODAL, "New action group",
317 316
                 "Please enter the name of the new action group", validator) {
318 317
 
@@ -353,7 +352,7 @@ public class ActionsManagerDialog extends StandardDialog implements
353 352
         final String oldName =
354 353
                 ((ActionGroup) groups.getSelectedValue()).getName();
355 354
         final StandardInputDialog inputDialog = new StandardInputDialog(
356
-                dialogManager, this, ModalityType.DOCUMENT_MODAL,
355
+                this, ModalityType.DOCUMENT_MODAL,
357 356
                 "Edit action group",
358 357
                 "Please enter the new name of the action group", validator) {
359 358
 
@@ -392,7 +391,7 @@ public class ActionsManagerDialog extends StandardDialog implements
392 391
     private void delGroup() {
393 392
         final String group =
394 393
                 ((ActionGroup) groups.getSelectedValue()).getName();
395
-        new StandardQuestionDialog(dialogManager, this,
394
+        new StandardQuestionDialog(this,
396 395
                 ModalityType.APPLICATION_MODAL,
397 396
                 "Confirm deletion",
398 397
                 "Are you sure you wish to delete the '" + group

+ 7
- 9
src/com/dmdirc/addons/ui_swing/dialogs/aliases/AliasManagerDialog.java 파일 보기

@@ -30,11 +30,11 @@ import com.dmdirc.actions.ActionSubstitutorFactory;
30 30
 import com.dmdirc.actions.CoreActionComparison;
31 31
 import com.dmdirc.actions.wrappers.Alias;
32 32
 import com.dmdirc.actions.wrappers.AliasWrapper;
33
+import com.dmdirc.addons.ui_swing.MainFrame;
33 34
 import com.dmdirc.addons.ui_swing.SwingController;
34 35
 import com.dmdirc.addons.ui_swing.components.PackingTable;
35 36
 import com.dmdirc.addons.ui_swing.components.renderers.ActionConditionCellRenderer;
36 37
 import com.dmdirc.addons.ui_swing.components.renderers.ArrayCellRenderer;
37
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
38 38
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
39 39
 import com.dmdirc.addons.ui_swing.dialogs.StandardQuestionDialog;
40 40
 import com.dmdirc.addons.ui_swing.dialogs.StringArrayComparator;
@@ -47,6 +47,7 @@ import java.util.ArrayList;
47 47
 import java.util.Arrays;
48 48
 import java.util.List;
49 49
 
50
+import javax.inject.Inject;
50 51
 import javax.swing.JButton;
51 52
 import javax.swing.JScrollPane;
52 53
 import javax.swing.JSplitPane;
@@ -76,8 +77,6 @@ public class AliasManagerDialog extends StandardDialog implements ActionListener
76 77
     private final SwingController controller;
77 78
     /** Actions substitutor factory. */
78 79
     private final ActionSubstitutorFactory substitutorFactory;
79
-    /** Dialog manager. */
80
-    private final DialogManager dialogManager;
81 80
     /** Table scrollpane. */
82 81
     private JScrollPane scrollPane;
83 82
     /** Error table. */
@@ -102,16 +101,15 @@ public class AliasManagerDialog extends StandardDialog implements ActionListener
102 101
      *
103 102
      * @param controller Swing controller
104 103
      * @param parentWindow Parent window
105
-     * @param dialogManager Dialog manager
106 104
      * @param substitutorFactory Actions substitution factory
107 105
      */
108
-    public AliasManagerDialog(final SwingController controller, final Window parentWindow,
109
-            final DialogManager dialogManager, final ActionSubstitutorFactory substitutorFactory) {
110
-        super(dialogManager, parentWindow, ModalityType.MODELESS);
106
+    @Inject
107
+    public AliasManagerDialog(final SwingController controller, final MainFrame parentWindow,
108
+            final ActionSubstitutorFactory substitutorFactory) {
109
+        super(parentWindow, ModalityType.MODELESS);
111 110
 
112 111
         this.controller = controller;
113 112
         this.substitutorFactory = substitutorFactory;
114
-        this.dialogManager = dialogManager;
115 113
         this.aliasWrapper = controller.getAliasWrapper();
116 114
         this.actionFactory = controller.getActionFactory();
117 115
 
@@ -297,7 +295,7 @@ public class AliasManagerDialog extends StandardDialog implements ActionListener
297 295
             }
298 296
             if (checkForDuplicates()) {
299 297
                 final StandardQuestionDialog dialog = new StandardQuestionDialog(
300
-                        dialogManager, this, ModalityType.APPLICATION_MODAL,
298
+                        this, ModalityType.APPLICATION_MODAL,
301 299
                         "Duplicate Aliases", "There are duplicate aliases in "
302 300
                         + "the table, these need to be removed before saving") {
303 301
 

+ 1
- 1
src/com/dmdirc/addons/ui_swing/dialogs/channellist/ChannelListDialog.java 파일 보기

@@ -47,7 +47,7 @@ public class ChannelListDialog extends StandardDialog implements
47 47
     private JLabel total;
48 48
 
49 49
     public ChannelListDialog(final SwingController controller) {
50
-        super(controller.getDialogManager(), controller.getMainFrame(), ModalityType.MODELESS);
50
+        super(controller.getMainFrame(), ModalityType.MODELESS);
51 51
         setTitle("Channel List");
52 52
         total = new JLabel("No results.");
53 53
         list = new ChannelListPanel((Server) controller.getMainFrame().getActiveFrame()

+ 1
- 1
src/com/dmdirc/addons/ui_swing/dialogs/channelsetting/ChannelListModesPane.java 파일 보기

@@ -277,7 +277,7 @@ public final class ChannelListModesPane extends JPanel implements ActionListener
277 277
             modeText = channel.getConfigManager().
278 278
                     getOption("server", "mode" + listModesArray[selectedIndex]);
279 279
         }
280
-        new StandardInputDialog(controller.getDialogManager(), parentWindow,
280
+        new StandardInputDialog(parentWindow,
281 281
                 ModalityType.DOCUMENT_MODAL, "Add new " + modeText,
282 282
                 "Please enter the hostmask for the new " + modeText,
283 283
                 new NotEmptyValidator()) {

+ 6
- 7
src/com/dmdirc/addons/ui_swing/dialogs/channelsetting/ChannelSettingsDialog.java 파일 보기

@@ -23,13 +23,13 @@
23 23
 package com.dmdirc.addons.ui_swing.dialogs.channelsetting;
24 24
 
25 25
 import com.dmdirc.Channel;
26
+import com.dmdirc.addons.ui_swing.MainFrame;
26 27
 import com.dmdirc.addons.ui_swing.PrefsComponentFactory;
27 28
 import com.dmdirc.addons.ui_swing.SwingController;
28 29
 import com.dmdirc.addons.ui_swing.SwingWindowFactory;
29 30
 import com.dmdirc.addons.ui_swing.UIUtilities;
30 31
 import com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel;
31 32
 import com.dmdirc.addons.ui_swing.components.modes.ChannelModesPane;
32
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
33 33
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
34 34
 import com.dmdirc.config.prefs.PreferencesManager;
35 35
 import com.dmdirc.interfaces.config.ConfigProvider;
@@ -38,7 +38,6 @@ import com.dmdirc.interfaces.ui.InputWindow;
38 38
 import com.dmdirc.plugins.ServiceManager;
39 39
 import com.dmdirc.ui.IconManager;
40 40
 
41
-import java.awt.Window;
42 41
 import java.awt.event.ActionEvent;
43 42
 import java.awt.event.ActionListener;
44 43
 
@@ -87,7 +86,6 @@ public class ChannelSettingsDialog extends StandardDialog implements ActionListe
87 86
      * Creates a new instance of ChannelSettingsDialog.
88 87
      *
89 88
      * @param controller Swing controller
90
-     * @param dialogManager Dialog manager
91 89
      * @param identityFactory Identity factory
92 90
      * @param windowFactory Swing window factory
93 91
      * @param iconManager Icon manager
@@ -97,16 +95,17 @@ public class ChannelSettingsDialog extends StandardDialog implements ActionListe
97 95
      * @param newChannel The channel object that we're editing settings for
98 96
      * @param parentWindow Parent window
99 97
      */
100
-    public ChannelSettingsDialog(final SwingController controller,
101
-            final DialogManager dialogManager,
98
+    public ChannelSettingsDialog(
99
+            final SwingController controller,
102 100
             final IdentityFactory identityFactory,
103 101
             final SwingWindowFactory windowFactory,
104 102
             final IconManager iconManager,
105 103
             final ServiceManager serviceManager,
106 104
             final PreferencesManager preferencesManager,
107 105
             final PrefsComponentFactory compFactory,
108
-            final Channel newChannel, final Window parentWindow) {
109
-        super(dialogManager, parentWindow, ModalityType.MODELESS);
106
+            final Channel newChannel,
107
+            final MainFrame parentWindow) {
108
+        super(parentWindow, ModalityType.MODELESS);
110 109
 
111 110
         this.controller = controller;
112 111
         this.iconManager = iconManager;

+ 1
- 1
src/com/dmdirc/addons/ui_swing/dialogs/error/ErrorListDialog.java 파일 보기

@@ -79,7 +79,7 @@ public final class ErrorListDialog extends StandardDialog implements
79 79
      * @param controller Swing controller
80 80
      */
81 81
     public ErrorListDialog(final SwingController controller) {
82
-        super(controller.getDialogManager(), controller.getMainFrame(), ModalityType.MODELESS);
82
+        super(controller.getMainFrame(), ModalityType.MODELESS);
83 83
 
84 84
         setTitle("Error list");
85 85
         setMinimumSize(new Dimension(600, 550));

+ 1
- 1
src/com/dmdirc/addons/ui_swing/dialogs/paste/PasteDialog.java 파일 보기

@@ -81,7 +81,7 @@ public final class PasteDialog extends StandardDialog implements ActionListener,
81 81
     public PasteDialog(final SwingController controller,
82 82
             final InputTextFrame newParent, final String text,
83 83
             final Window parentWindow) {
84
-        super(controller.getDialogManager(), parentWindow, ModalityType.MODELESS);
84
+        super(parentWindow, ModalityType.MODELESS);
85 85
 
86 86
         parent = newParent;
87 87
         this.parentWindow = parentWindow;

+ 18
- 7
src/com/dmdirc/addons/ui_swing/dialogs/prefs/SwingPreferencesDialog.java 파일 보기

@@ -30,6 +30,8 @@ import com.dmdirc.addons.ui_swing.components.addonpanel.PluginPanel;
30 30
 import com.dmdirc.addons.ui_swing.components.addonpanel.ThemePanel;
31 31
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
32 32
 import com.dmdirc.addons.ui_swing.dialogs.updater.SwingRestartDialog;
33
+import com.dmdirc.addons.ui_swing.injection.DialogModule.ForSettings;
34
+import com.dmdirc.addons.ui_swing.injection.DialogProvider;
33 35
 import com.dmdirc.config.prefs.PreferencesCategory;
34 36
 import com.dmdirc.config.prefs.PreferencesDialogModel;
35 37
 import com.dmdirc.logger.ErrorLevel;
@@ -41,6 +43,7 @@ import java.util.Collection;
41 43
 import java.util.List;
42 44
 import java.util.concurrent.ExecutionException;
43 45
 
46
+import javax.inject.Inject;
44 47
 import javax.swing.BorderFactory;
45 48
 import javax.swing.DefaultListModel;
46 49
 import javax.swing.JButton;
@@ -70,22 +73,29 @@ public final class SwingPreferencesDialog extends StandardDialog implements
70 73
     /** Preferences Manager. */
71 74
     private PreferencesDialogModel manager;
72 75
     /** Manager loading swing worker. */
73
-    private LoggingSwingWorker<PreferencesDialogModel, Void> worker;
76
+    private final LoggingSwingWorker<PreferencesDialogModel, Void> worker;
74 77
     /** Panel size. */
75 78
     private int panelSize = 500;
76 79
     /** Swing controller. */
77 80
     @Deprecated
78 81
     private final SwingController controller;
82
+    /** The provider to use for restart dialogs. */
83
+    private final DialogProvider<SwingRestartDialog> restartDialogProvider;
79 84
 
80 85
     /**
81 86
      * Creates a new instance of SwingPreferencesDialog.
82 87
      *
83 88
      * @param controller The controller which owns this preferences window.
89
+     * @param restartDialogProvider The provider to use for restart dialogs.
84 90
      */
85
-    public SwingPreferencesDialog(final SwingController controller) {
86
-        super(controller.getDialogManager(), controller.getMainFrame(), ModalityType.MODELESS);
91
+    @Inject
92
+    public SwingPreferencesDialog(
93
+            final SwingController controller,
94
+            @ForSettings final DialogProvider<SwingRestartDialog> restartDialogProvider) {
95
+        super(controller.getMainFrame(), ModalityType.MODELESS);
87 96
 
88 97
         this.controller = controller;
98
+        this.restartDialogProvider = restartDialogProvider;
89 99
 
90 100
         initComponents();
91 101
 
@@ -98,8 +108,10 @@ public final class SwingPreferencesDialog extends StandardDialog implements
98 108
                 PreferencesDialogModel prefsManager = null;
99 109
                 try {
100 110
                     prefsManager = new PreferencesDialogModel(
101
-                            new PluginPanel(controller.getMainFrame(), controller),
102
-                            new ThemePanel(controller.getMainFrame(), controller, controller.getThemeManager()),
111
+                            new PluginPanel(controller.getMainFrame(), controller,
112
+                                    SwingPreferencesDialog.this),
113
+                            new ThemePanel(controller.getMainFrame(), controller,
114
+                                    controller.getThemeManager(), SwingPreferencesDialog.this),
103 115
                             new UpdateConfigPanel(controller),
104 116
                             new URLConfigPanel(controller, controller.getMainFrame()),
105 117
                             controller.getGlobalConfig(),
@@ -312,8 +324,7 @@ public final class SwingPreferencesDialog extends StandardDialog implements
312 324
     public void saveOptions() {
313 325
         if (manager != null && manager.save()) {
314 326
             dispose();
315
-            controller.showDialog(SwingRestartDialog.class,
316
-                    ModalityType.APPLICATION_MODAL, "apply settings");
327
+            restartDialogProvider.displayOrRequestFocus();
317 328
         }
318 329
     }
319 330
 

+ 1
- 1
src/com/dmdirc/addons/ui_swing/dialogs/prefs/URLConfigPanel.java 파일 보기

@@ -262,7 +262,7 @@ public class URLConfigPanel extends JPanel implements
262 262
     @Override
263 263
     public void actionPerformed(final ActionEvent e) {
264 264
         if (e.getSource() == add) {
265
-            new StandardInputDialog(controller.getDialogManager(), parentWindow,
265
+            new StandardInputDialog(parentWindow,
266 266
                     ModalityType.MODELESS, "New URL handler",
267 267
                     "Please enter the name of the new protocol.",
268 268
                     new URLProtocolValidator(controller.getGlobalConfig())) {

+ 1
- 1
src/com/dmdirc/addons/ui_swing/dialogs/profiles/ProfileManagerDialog.java 파일 보기

@@ -128,7 +128,7 @@ public class ProfileManagerDialog extends StandardDialog {
128 128
      */
129 129
     @Inject
130 130
     public ProfileManagerDialog(final SwingController controller) {
131
-        super(controller.getDialogManager(), controller.getMainFrame(), ModalityType.MODELESS);
131
+        super(controller.getMainFrame(), ModalityType.MODELESS);
132 132
         this.model = new ProfileManagerModel(controller.getIdentityManager(), controller.getIdentityFactory());
133 133
         this.controller = new ProfileManagerController(this, model, controller.getIdentityFactory());
134 134
         final Bindings bindings = SwingUIBindings.extendedBindings();

+ 2
- 2
src/com/dmdirc/addons/ui_swing/dialogs/serversetting/IgnoreListPanel.java 파일 보기

@@ -178,7 +178,7 @@ public final class IgnoreListPanel extends JPanel implements ActionListener,
178 178
     @Override
179 179
     public void actionPerformed(final ActionEvent e) {
180 180
         if (e.getSource() == addButton) {
181
-            new StandardInputDialog(controller.getDialogManager(), parentWindow,
181
+            new StandardInputDialog(parentWindow,
182 182
                     ModalityType.MODELESS, "New ignore list entry",
183 183
                     "Please enter the new ignore list entry",
184 184
                     viewToggle.isSelected() ? new ValidatorChain<>(
@@ -214,7 +214,7 @@ public final class IgnoreListPanel extends JPanel implements ActionListener,
214 214
             }.display();
215 215
         } else if (e.getSource() == delButton && list.getSelectedIndex()
216 216
                 != -1) {
217
-            new StandardQuestionDialog(controller.getDialogManager(), parentWindow,
217
+            new StandardQuestionDialog(parentWindow,
218 218
                     ModalityType.APPLICATION_MODAL,
219 219
                     "Confirm deletion",
220 220
                     "Are you sure you want to delete this item?") {

+ 4
- 11
src/com/dmdirc/addons/ui_swing/dialogs/serversetting/ServerSettingsDialog.java 파일 보기

@@ -25,12 +25,12 @@ package com.dmdirc.addons.ui_swing.dialogs.serversetting;
25 25
 import com.dmdirc.Server;
26 26
 import com.dmdirc.ServerState;
27 27
 import com.dmdirc.actions.wrappers.PerformWrapper;
28
+import com.dmdirc.addons.ui_swing.MainFrame;
28 29
 import com.dmdirc.addons.ui_swing.PrefsComponentFactory;
29 30
 import com.dmdirc.addons.ui_swing.SwingController;
30 31
 import com.dmdirc.addons.ui_swing.UIUtilities;
31 32
 import com.dmdirc.addons.ui_swing.components.expandingsettings.SettingsPanel;
32 33
 import com.dmdirc.addons.ui_swing.components.modes.UserModesPane;
33
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
34 34
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
35 35
 import com.dmdirc.addons.ui_swing.dialogs.StandardQuestionDialog;
36 36
 import com.dmdirc.config.prefs.PreferencesManager;
@@ -38,7 +38,6 @@ import com.dmdirc.interfaces.config.AggregateConfigProvider;
38 38
 import com.dmdirc.interfaces.config.ConfigProvider;
39 39
 import com.dmdirc.ui.IconManager;
40 40
 
41
-import java.awt.Window;
42 41
 import java.awt.event.ActionEvent;
43 42
 import java.awt.event.ActionListener;
44 43
 
@@ -55,8 +54,6 @@ public class ServerSettingsDialog extends StandardDialog implements ActionListen
55 54
 
56 55
     /** Serial version UID. */
57 56
     private static final long serialVersionUID = 2;
58
-    /** Dialog Manager. */
59
-    private final DialogManager dialogManager;
60 57
     /** Parent server. */
61 58
     private final Server server;
62 59
     /** Perform wrapper for the perform panel. */
@@ -76,7 +73,6 @@ public class ServerSettingsDialog extends StandardDialog implements ActionListen
76 73
      * Creates a new instance of ServerSettingsDialog.
77 74
      *
78 75
      * @param controller Swing controller
79
-     * @param dialogManager Dialog manager
80 76
      * @param iconManager Icon manager
81 77
      * @param compFactory Preferences setting component factory
82 78
      * @param performWrapper Wrapper for the perform tab.
@@ -85,15 +81,12 @@ public class ServerSettingsDialog extends StandardDialog implements ActionListen
85 81
      */
86 82
     public ServerSettingsDialog(
87 83
             final SwingController controller,
88
-            final DialogManager dialogManager,
89 84
             final IconManager iconManager,
90 85
             final PrefsComponentFactory compFactory,
91 86
             final PerformWrapper performWrapper,
92 87
             final Server server,
93
-            final Window parentWindow) {
94
-        super(dialogManager, parentWindow, ModalityType.MODELESS);
95
-
96
-        this.dialogManager = dialogManager;
88
+            final MainFrame parentWindow) {
89
+        super(parentWindow, ModalityType.MODELESS);
97 90
         this.server = server;
98 91
         this.performWrapper = performWrapper;
99 92
 
@@ -169,7 +162,7 @@ public class ServerSettingsDialog extends StandardDialog implements ActionListen
169 162
     /** Saves the settings from this dialog. */
170 163
     public void saveSettings() {
171 164
         if (server.getState() != ServerState.CONNECTED) {
172
-            new StandardQuestionDialog(dialogManager, getOwner(),
165
+            new StandardQuestionDialog(getOwner(),
173 166
                     ModalityType.MODELESS,
174 167
                     "Server has been disconnected.", "Any changes you have " +
175 168
                     "made will be lost, are you sure you want to close this " +

+ 2
- 4
src/com/dmdirc/addons/ui_swing/dialogs/sslcertificate/SSLCertificateDialog.java 파일 보기

@@ -23,7 +23,6 @@
23 23
 package com.dmdirc.addons.ui_swing.dialogs.sslcertificate;
24 24
 
25 25
 import com.dmdirc.addons.ui_swing.components.text.TextLabel;
26
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
27 26
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
28 27
 import com.dmdirc.ui.IconManager;
29 28
 import com.dmdirc.ui.core.dialogs.sslcertificate.SSLCertificateDialogModel;
@@ -67,14 +66,13 @@ public class SSLCertificateDialog extends StandardDialog implements ActionListen
67 66
     /**
68 67
      * Creates a new instance of ActionsManagerDialog.
69 68
      *
70
-     * @param dialogManager Dialog manager
71 69
      * @param iconManager Icon manager
72 70
      * @param parent Parent window for the dialog
73 71
      * @param model dialog model
74 72
      */
75
-    public SSLCertificateDialog(final DialogManager dialogManager, final IconManager iconManager,
73
+    public SSLCertificateDialog(final IconManager iconManager,
76 74
             final Window parent, final SSLCertificateDialogModel model) {
77
-        super(dialogManager, parent, ModalityType.MODELESS);
75
+        super(parent, ModalityType.MODELESS);
78 76
 
79 77
         this.model = model;
80 78
         this.iconManager = iconManager;

+ 3
- 22
src/com/dmdirc/addons/ui_swing/dialogs/updater/SwingRestartDialog.java 파일 보기

@@ -22,9 +22,7 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.dialogs.updater;
24 24
 
25
-import com.dmdirc.addons.ui_swing.MainFrame;
26 25
 import com.dmdirc.addons.ui_swing.components.text.TextLabel;
27
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
28 26
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
29 27
 import com.dmdirc.interfaces.LifecycleController;
30 28
 import com.dmdirc.updater.components.LauncherComponent;
@@ -34,7 +32,6 @@ import java.awt.Window;
34 32
 import java.awt.event.ActionEvent;
35 33
 import java.awt.event.ActionListener;
36 34
 
37
-import javax.inject.Inject;
38 35
 import javax.swing.JButton;
39 36
 
40 37
 import net.miginfocom.swing.MigLayout;
@@ -51,34 +48,18 @@ public class SwingRestartDialog extends StandardDialog implements ActionListener
51 48
     /** Informational label. */
52 49
     private TextLabel info;
53 50
     /** Info text. */
54
-    private String cause;
51
+    private final String cause;
55 52
 
56 53
     /**
57 54
      * Dialog to restart the client.
58 55
      *
59
-     * @param dialogManager Dialog manager
60
-     * @param parentWindow Parent window
61
-     * @param lifecycleController Life cycle controller, for restarting client
62
-     */
63
-    @Inject
64
-    public SwingRestartDialog(
65
-            final DialogManager dialogManager,
66
-            final MainFrame parentWindow,
67
-            final LifecycleController lifecycleController) {
68
-        this(dialogManager, parentWindow, lifecycleController, "finish updating");
69
-    }
70
-
71
-    /**
72
-     * Dialog to restart the client.
73
-     *
74
-     * @param dialogManager Dialog manager
75 56
      * @param parentWindow Parent window
76 57
      * @param lifecycleController Life cycle controller, for restarting client
77 58
      * @param cause Reason for restart
78 59
      */
79
-    public SwingRestartDialog(final DialogManager dialogManager, final Window parentWindow,
60
+    public SwingRestartDialog(final Window parentWindow,
80 61
             final LifecycleController lifecycleController, final String cause) {
81
-        super(dialogManager, parentWindow, ModalityType.APPLICATION_MODAL);
62
+        super(parentWindow, ModalityType.APPLICATION_MODAL);
82 63
         this.cause = cause;
83 64
         this.lifecycleController = lifecycleController;
84 65
 

+ 7
- 13
src/com/dmdirc/addons/ui_swing/dialogs/updater/SwingUpdaterDialog.java 파일 보기

@@ -29,8 +29,9 @@ import com.dmdirc.addons.ui_swing.components.PackingTable;
29 29
 import com.dmdirc.addons.ui_swing.components.renderers.UpdateComponentTableCellRenderer;
30 30
 import com.dmdirc.addons.ui_swing.components.renderers.UpdateStatusTableCellRenderer;
31 31
 import com.dmdirc.addons.ui_swing.components.text.TextLabel;
32
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
33 32
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
33
+import com.dmdirc.addons.ui_swing.injection.DialogModule.ForUpdates;
34
+import com.dmdirc.addons.ui_swing.injection.DialogProvider;
34 35
 import com.dmdirc.updater.UpdateComponent;
35 36
 import com.dmdirc.updater.manager.CachingUpdateManager;
36 37
 import com.dmdirc.updater.manager.UpdateManager;
@@ -39,14 +40,12 @@ import com.dmdirc.updater.manager.UpdateManagerStatus;
39 40
 import com.dmdirc.updater.manager.UpdateStatus;
40 41
 
41 42
 import java.awt.Dimension;
42
-import java.awt.Window;
43 43
 import java.awt.event.ActionEvent;
44 44
 import java.awt.event.ActionListener;
45 45
 import java.util.ArrayList;
46 46
 import java.util.List;
47 47
 
48 48
 import javax.inject.Inject;
49
-import javax.inject.Provider;
50 49
 import javax.swing.JButton;
51 50
 import javax.swing.JScrollPane;
52 51
 import javax.swing.JTable;
@@ -65,8 +64,6 @@ public class SwingUpdaterDialog extends StandardDialog implements
65 64
 
66 65
     /** Serial version UID. */
67 66
     private static final long serialVersionUID = 3;
68
-    /** Dialog manager. */
69
-    private final DialogManager dialogManager;
70 67
     /** The update manager to use. */
71 68
     private final CachingUpdateManager updateManager;
72 69
     /** Update table. */
@@ -80,25 +77,22 @@ public class SwingUpdaterDialog extends StandardDialog implements
80 77
     /** Update.Status renderer. */
81 78
     private UpdateStatusTableCellRenderer updateStatusRenderer;
82 79
     /** Provider of restart dialogs. */
83
-    private final Provider<SwingRestartDialog> restartDialogProvider;
80
+    private final DialogProvider<SwingRestartDialog> restartDialogProvider;
84 81
 
85 82
     /**
86 83
      * Creates a new instance of the updater dialog.
87 84
      *
88 85
      * @param updateManager The update manager to use for information
89
-     * @param dialogManager Dialog manager
90 86
      * @param parentWindow Parent window
91 87
      * @param restartDialogProvider Provider of restart dialogs.
92 88
      */
93 89
     @Inject
94 90
     public SwingUpdaterDialog(
95 91
             final CachingUpdateManager updateManager,
96
-            final DialogManager dialogManager,
97 92
             final MainFrame parentWindow,
98
-            final Provider<SwingRestartDialog> restartDialogProvider) {
99
-        super(dialogManager, parentWindow, ModalityType.MODELESS);
93
+            @ForUpdates final DialogProvider<SwingRestartDialog> restartDialogProvider) {
94
+        super(parentWindow, ModalityType.MODELESS);
100 95
 
101
-        this.dialogManager = dialogManager;
102 96
         this.updateManager = updateManager;
103 97
         this.restartDialogProvider = restartDialogProvider;
104 98
 
@@ -210,7 +204,7 @@ public class SwingUpdaterDialog extends StandardDialog implements
210 204
             }.executeInExecutor();
211 205
 
212 206
             if (updateManager.getManagerStatus() == UpdateManagerStatus.IDLE_RESTART_NEEDED) {
213
-                restartDialogProvider.get().displayOrRequestFocus();
207
+                restartDialogProvider.displayOrRequestFocus();
214 208
                 dispose();
215 209
             }
216 210
         } else if (e.getSource().equals(getCancelButton())) {
@@ -238,7 +232,7 @@ public class SwingUpdaterDialog extends StandardDialog implements
238 232
 
239 233
                 if (status == UpdateManagerStatus.IDLE_RESTART_NEEDED) {
240 234
                     if (isVisible()) {
241
-                        restartDialogProvider.get().displayOrRequestFocus();
235
+                        restartDialogProvider.displayOrRequestFocus();
242 236
                     }
243 237
                     dispose();
244 238
                 } else {

+ 11
- 5
src/com/dmdirc/addons/ui_swing/dialogs/url/URLDialog.java 파일 보기

@@ -22,12 +22,15 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.dialogs.url;
24 24
 
25
+import com.dmdirc.ClientModule.UserConfig;
26
+import com.dmdirc.addons.ui_swing.MainFrame;
25 27
 import com.dmdirc.addons.ui_swing.components.URLProtocolPanel;
26 28
 import com.dmdirc.addons.ui_swing.components.text.TextLabel;
27
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
28 29
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
29 30
 import com.dmdirc.interfaces.config.ConfigProvider;
30 31
 import com.dmdirc.ui.core.util.URLHandler;
32
+import com.dmdirc.util.annotations.factory.Factory;
33
+import com.dmdirc.util.annotations.factory.Unbound;
31 34
 
32 35
 import java.awt.Window;
33 36
 import java.awt.event.ActionEvent;
@@ -39,6 +42,7 @@ import javax.swing.JButton;
39 42
 import net.miginfocom.swing.MigLayout;
40 43
 
41 44
 /** URL Protocol dialog. */
45
+@Factory(inject=true, singleton=true)
42 46
 public class URLDialog extends StandardDialog implements ActionListener {
43 47
 
44 48
     /** Serial version UID. */
@@ -57,15 +61,17 @@ public class URLDialog extends StandardDialog implements ActionListener {
57 61
     /**
58 62
      * Instantiates the URLDialog.
59 63
      *
60
-     * @param dialogManager Dialog manager
61 64
      * @param url URL to open once added
62 65
      * @param config Config
63 66
      * @param parentWindow Parent window
64 67
      * @param urlHandler The URL Handler to use to handle clicked links
65 68
      */
66
-    public URLDialog(final DialogManager dialogManager, final URI url,
67
-            final ConfigProvider config, final Window parentWindow, final URLHandler urlHandler) {
68
-        super(dialogManager, parentWindow, ModalityType.MODELESS);
69
+    public URLDialog(
70
+            @Unbound final URI url,
71
+            @SuppressWarnings("qualifiers") @UserConfig final ConfigProvider config,
72
+            final MainFrame parentWindow,
73
+            final URLHandler urlHandler) {
74
+        super(parentWindow, ModalityType.MODELESS);
69 75
 
70 76
         this.url = url;
71 77
         this.parentWindow = parentWindow;

+ 139
- 0
src/com/dmdirc/addons/ui_swing/injection/DialogModule.java 파일 보기

@@ -22,11 +22,33 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.injection;
24 24
 
25
+import com.dmdirc.Channel;
26
+import com.dmdirc.ClientModule.GlobalConfig;
27
+import com.dmdirc.Server;
28
+import com.dmdirc.actions.wrappers.PerformWrapper;
29
+import com.dmdirc.addons.ui_swing.MainFrame;
30
+import com.dmdirc.addons.ui_swing.PrefsComponentFactory;
31
+import com.dmdirc.addons.ui_swing.SwingController;
32
+import com.dmdirc.addons.ui_swing.SwingWindowFactory;
33
+import com.dmdirc.addons.ui_swing.dialogs.FeedbackDialog;
25 34
 import com.dmdirc.addons.ui_swing.dialogs.NewServerDialog;
35
+import com.dmdirc.addons.ui_swing.dialogs.about.AboutDialog;
26 36
 import com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsManagerDialog;
37
+import com.dmdirc.addons.ui_swing.dialogs.aliases.AliasManagerDialog;
38
+import com.dmdirc.addons.ui_swing.dialogs.channelsetting.ChannelSettingsDialog;
39
+import com.dmdirc.addons.ui_swing.dialogs.prefs.SwingPreferencesDialog;
27 40
 import com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileManagerDialog;
41
+import com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog;
42
+import com.dmdirc.addons.ui_swing.dialogs.updater.SwingRestartDialog;
43
+import com.dmdirc.addons.ui_swing.dialogs.updater.SwingUpdaterDialog;
44
+import com.dmdirc.config.prefs.PreferencesManager;
45
+import com.dmdirc.interfaces.LifecycleController;
46
+import com.dmdirc.interfaces.config.IdentityFactory;
47
+import com.dmdirc.plugins.ServiceManager;
48
+import com.dmdirc.ui.IconManager;
28 49
 
29 50
 import javax.inject.Provider;
51
+import javax.inject.Qualifier;
30 52
 import javax.inject.Singleton;
31 53
 
32 54
 import dagger.Module;
@@ -38,6 +60,18 @@ import dagger.Provides;
38 60
 @Module(library = true, complete = false)
39 61
 public class DialogModule {
40 62
 
63
+    /**
64
+     * Qualifier that indicates a restart dialog is needed for updates to be applied.
65
+     */
66
+    @Qualifier
67
+    public static @interface ForUpdates {}
68
+
69
+    /**
70
+     * Qualifier that indicates a restart dialog is needed for settings to be applied.
71
+     */
72
+    @Qualifier
73
+    public static @interface ForSettings {}
74
+
41 75
     @Provides
42 76
     @Singleton
43 77
     public DialogProvider<NewServerDialog> getNewServerDialogProvider(
@@ -59,4 +93,109 @@ public class DialogModule {
59 93
         return new DialogProvider<>(provider);
60 94
     }
61 95
 
96
+    @Provides
97
+    @Singleton
98
+    public DialogProvider<AliasManagerDialog> getAliasManagerDialogProvider(
99
+            final Provider<AliasManagerDialog> provider) {
100
+        return new DialogProvider<>(provider);
101
+    }
102
+
103
+    @Provides
104
+    @Singleton
105
+    public DialogProvider<FeedbackDialog> getFeedbackDialogProvider(
106
+            final Provider<FeedbackDialog> provider) {
107
+        return new DialogProvider<>(provider);
108
+    }
109
+
110
+    @Provides
111
+    @Singleton
112
+    public DialogProvider<AboutDialog> getAboutDialogProvider(
113
+            final Provider<AboutDialog> provider) {
114
+        return new DialogProvider<>(provider);
115
+    }
116
+
117
+    @Provides
118
+    @Singleton
119
+    public KeyedDialogProvider<Server, ServerSettingsDialog> getServerSettingsDialogProvider(
120
+            final SwingController controller,
121
+            @GlobalConfig final IconManager iconManager,
122
+            final PrefsComponentFactory compFactory,
123
+            final PerformWrapper performWrapper,
124
+            final MainFrame parentWindow) {
125
+        return new KeyedDialogProvider<Server, ServerSettingsDialog>() {
126
+            @Override
127
+            protected ServerSettingsDialog getInstance(final Server key) {
128
+                return new ServerSettingsDialog(controller, iconManager, compFactory,
129
+                        performWrapper, key, parentWindow);
130
+            }
131
+        };
132
+    }
133
+
134
+    @Provides
135
+    @Singleton
136
+    public KeyedDialogProvider<Channel, ChannelSettingsDialog> getChannelSettingsDialogProvider(
137
+            final SwingController controller,
138
+            final IdentityFactory identityFactory,
139
+            final SwingWindowFactory windowFactory,
140
+            @GlobalConfig final IconManager iconManager,
141
+            final ServiceManager serviceManager,
142
+            final PreferencesManager preferencesManager,
143
+            final PrefsComponentFactory compFactory,
144
+            final MainFrame parentWindow) {
145
+        return new KeyedDialogProvider<Channel, ChannelSettingsDialog>() {
146
+            @Override
147
+            protected ChannelSettingsDialog getInstance(final Channel key) {
148
+                return new ChannelSettingsDialog(controller, identityFactory, windowFactory,
149
+                        iconManager, serviceManager, preferencesManager, compFactory, key,
150
+                        parentWindow);
151
+            }
152
+        };
153
+    }
154
+
155
+    @Provides
156
+    @Singleton
157
+    public DialogProvider<SwingPreferencesDialog> getSwingPreferencesDialogProvider(
158
+            final Provider<SwingPreferencesDialog> provider) {
159
+        return new DialogProvider<>(provider);
160
+    }
161
+
162
+    @Provides
163
+    @Singleton
164
+    public DialogProvider<SwingUpdaterDialog> getSwingUpdaterDialogProvider(
165
+            final Provider<SwingUpdaterDialog> provider) {
166
+        return new DialogProvider<>(provider);
167
+    }
168
+
169
+    @Provides
170
+    @Singleton
171
+    @ForUpdates
172
+    public DialogProvider<SwingRestartDialog> getSwingRestartDialogProviderForUpdates(
173
+            @ForUpdates final Provider<SwingRestartDialog> provider) {
174
+        return new DialogProvider<>(provider);
175
+    }
176
+
177
+    @Provides
178
+    @Singleton
179
+    @ForSettings
180
+    public DialogProvider<SwingRestartDialog> getSwingRestartDialogProviderForSettings(
181
+            @ForSettings final Provider<SwingRestartDialog> provider) {
182
+        return new DialogProvider<>(provider);
183
+    }
184
+
185
+    @Provides
186
+    @ForUpdates
187
+    public SwingRestartDialog getRestartDialogForUpdates(
188
+            final MainFrame mainFrame,
189
+            final LifecycleController lifecycleController) {
190
+        return new SwingRestartDialog(mainFrame, lifecycleController, "finish updating");
191
+    }
192
+
193
+    @Provides
194
+    @ForSettings
195
+    public SwingRestartDialog getRestartDialogForSettings(
196
+            final MainFrame mainFrame,
197
+            final LifecycleController lifecycleController) {
198
+        return new SwingRestartDialog(mainFrame, lifecycleController, "apply settings");
199
+    }
200
+
62 201
 }

+ 131
- 0
src/com/dmdirc/addons/ui_swing/injection/KeyedDialogProvider.java 파일 보기

@@ -0,0 +1,131 @@
1
+/*
2
+ * Copyright (c) 2006-2014 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.ui_swing.injection;
24
+
25
+import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
26
+
27
+import java.awt.event.WindowAdapter;
28
+import java.awt.event.WindowEvent;
29
+import java.util.HashMap;
30
+import java.util.Map;
31
+
32
+import static com.dmdirc.addons.ui_swing.SwingPreconditions.checkOnEDT;
33
+
34
+/**
35
+ * Provider for {@link StandardDialog} based windows that correspond to some key.
36
+ *
37
+ * <p>This provider will cache instances that are created until the windows are closed. Once a
38
+ * window has been closed, the next call to {@link #get()} or {@link #displayOrRequestFocus()}
39
+ * will result in a new instance being created.
40
+ *
41
+ * <p>Dialogs with different keys may be open simultaneously, and are treated independently.
42
+ *
43
+ * @param <K> The type of key that dialogs are associated with.
44
+ * @param <T> The type of dialog that will be managed.
45
+ */
46
+public abstract class KeyedDialogProvider<K, T extends StandardDialog> {
47
+
48
+    /** The existing instances being displayed, if any. */
49
+    private final Map<K, T> instances = new HashMap<>();
50
+
51
+    /**
52
+     * Gets an instance of the dialog provided by this class.
53
+     *
54
+     * <p>If there is an existing instance with the same key that hasn't been closed, it will be
55
+     * returned. Otherwise a new instance will be created and returned. New instances will not be
56
+     * automatically be * displayed to the user - use
57
+     * {@link #displayOrRequestFocus(java.lang.Object)} to do so.
58
+     *
59
+     * <p>This method <em>must</em> be called on the Event Despatch Thread.
60
+     *
61
+     * @param key The key associated with the dialog to get.
62
+     * @return An instance of the dialog.
63
+     */
64
+    public T get(final K key) {
65
+        checkOnEDT();
66
+        if (!instances.containsKey(key)) {
67
+            final T instance = getInstance(key);
68
+            instance.addWindowListener(new Listener(key));
69
+            instances.put(key, instance);
70
+        }
71
+        return instances.get(key);
72
+    }
73
+
74
+    /**
75
+     * Disposes of the dialog associated with the given key, if it exists.
76
+     *
77
+     * <p>This method <em>must</em> be called on the Event Despatch Thread.
78
+     *
79
+     * @param key The key associated with the dialog to close.
80
+     */
81
+    public void dispose(final K key) {
82
+        checkOnEDT();
83
+        if (instances.containsKey(key)) {
84
+            instances.get(key).dispose();
85
+        }
86
+    }
87
+
88
+    /**
89
+     * Ensures the dialog is visible to the user.
90
+     *
91
+     * <p>If no dialog currently exists with the same key, a new one will be created and displayed
92
+     * to the user. If a dialog existed prior to this method being invoked, it will request focus
93
+     * to bring it to the user's attention.
94
+     *
95
+     * <p>This method <em>must</em> be called on the Event Despatch Thread.
96
+     *
97
+     * @param key The key associated with the dialog to display.
98
+     */
99
+    public void displayOrRequestFocus(final K key) {
100
+        checkOnEDT();
101
+        get(key).displayOrRequestFocus();
102
+    }
103
+
104
+    /**
105
+     * Returns a new instance of the dialog with the specified key.
106
+     *
107
+     * @param key The key to create a new dialog for.
108
+     * @return A new instance of this provider's dialog.
109
+     */
110
+    protected abstract T getInstance(final K key);
111
+
112
+    /**
113
+     * Listens to window closing events to remove the cached instance of the dialog.
114
+     */
115
+    private class Listener extends WindowAdapter {
116
+
117
+        private final K key;
118
+
119
+        public Listener(final K key) {
120
+            this.key = key;
121
+        }
122
+
123
+        @Override
124
+        public void windowClosing(final WindowEvent e) {
125
+            super.windowClosing(e);
126
+            instances.remove(key);
127
+        }
128
+
129
+    }
130
+
131
+}

+ 1
- 9
src/com/dmdirc/addons/ui_swing/injection/SwingModule.java 파일 보기

@@ -36,7 +36,6 @@ import com.dmdirc.addons.ui_swing.commands.Input;
36 36
 import com.dmdirc.addons.ui_swing.commands.PopInCommand;
37 37
 import com.dmdirc.addons.ui_swing.commands.PopOutCommand;
38 38
 import com.dmdirc.addons.ui_swing.commands.ServerSettings;
39
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
40 39
 import com.dmdirc.interfaces.LifecycleController;
41 40
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
42 41
 import com.dmdirc.ui.IconManager;
@@ -96,7 +95,6 @@ public class SwingModule {
96 95
     /**
97 96
      * Gets the main DMDirc window.
98 97
      *
99
-     * @param dialogManager Dialog manager
100 98
      * @param swingController The controller that will own the frame.
101 99
      * @param windowFactory The window factory to use to create and listen for windows.
102 100
      * @param lifecycleController The controller to use to quit the application.
@@ -109,7 +107,6 @@ public class SwingModule {
109 107
     @Provides
110 108
     @Singleton
111 109
     public MainFrame getMainFrame(
112
-            final DialogManager dialogManager,
113 110
             final SwingController swingController,
114 111
             final SwingWindowFactory windowFactory,
115 112
             final LifecycleController lifecycleController,
@@ -121,7 +118,7 @@ public class SwingModule {
121 118
             /** {@inheritDoc} */
122 119
             @Override
123 120
             public MainFrame call() {
124
-                return new MainFrame(dialogManager,
121
+                return new MainFrame(
125 122
                         swingController,
126 123
                         windowFactory,
127 124
                         lifecycleController,
@@ -152,9 +149,4 @@ public class SwingModule {
152 149
         return new URLHandler(swingController, globalConfig, serverManager, statusBarManager);
153 150
     }
154 151
 
155
-    @Provides
156
-    public DialogManager getDialogManager(final SwingController controller) {
157
-        return new DialogManager(controller);
158
-    }
159
-
160 152
 }

+ 2
- 5
src/com/dmdirc/addons/ui_swing/wizard/WizardDialog.java 파일 보기

@@ -22,7 +22,6 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.wizard;
24 24
 
25
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
26 25
 import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
27 26
 import com.dmdirc.ui.CoreUIUtils;
28 27
 
@@ -52,14 +51,12 @@ public class WizardDialog extends StandardDialog implements ActionListener {
52 51
      *
53 52
      * @param title Title for the wizard
54 53
      * @param steps Steps for the wizard
55
-     * @param dialogManager Dialog manager
56 54
      * @param parentWindow Parent component
57 55
      * @param modality Modality
58 56
      */
59
-    public WizardDialog(final String title, final List<Step> steps,
60
-            final DialogManager dialogManager, final Window parentWindow,
57
+    public WizardDialog(final String title, final List<Step> steps, final Window parentWindow,
61 58
             final ModalityType modality) {
62
-        super(dialogManager, parentWindow, modality);
59
+        super(parentWindow, modality);
63 60
 
64 61
         setTitle(title);
65 62
         setDefaultCloseOperation(DISPOSE_ON_CLOSE);

+ 1
- 4
src/com/dmdirc/addons/ui_swing/wizard/firstrun/SwingFirstRunWizard.java 파일 보기

@@ -29,7 +29,6 @@ import com.dmdirc.actions.ActionManager;
29 29
 import com.dmdirc.actions.CoreActionType;
30 30
 import com.dmdirc.addons.ui_swing.Apple;
31 31
 import com.dmdirc.addons.ui_swing.MainFrame;
32
-import com.dmdirc.addons.ui_swing.dialogs.DialogManager;
33 32
 import com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileManagerDialog;
34 33
 import com.dmdirc.addons.ui_swing.injection.DialogProvider;
35 34
 import com.dmdirc.addons.ui_swing.wizard.Step;
@@ -77,7 +76,6 @@ public class SwingFirstRunWizard implements WizardListener, FirstRunWizard {
77 76
      *
78 77
      * @param parentWindow Parent window
79 78
      * @param config Global config
80
-     * @param dialogManager Dialog manager
81 79
      * @param actionsDirectory Actions directory
82 80
      * @param pluginExtractor Plugin extractor to use.
83 81
      * @param iconManager Manager to use to find icons.
@@ -87,7 +85,6 @@ public class SwingFirstRunWizard implements WizardListener, FirstRunWizard {
87 85
     public SwingFirstRunWizard(
88 86
             final MainFrame parentWindow,
89 87
             @UserConfig final ConfigProvider config,
90
-            final DialogManager dialogManager,
91 88
             @Directory(DirectoryType.ACTIONS) final String actionsDirectory,
92 89
             final CorePluginExtractor pluginExtractor,
93 90
             @GlobalConfig final IconManager iconManager,
@@ -98,7 +95,7 @@ public class SwingFirstRunWizard implements WizardListener, FirstRunWizard {
98 95
         this.profileDialogProvider = profileDialogProvider;
99 96
 
100 97
         wizardDialog = new WizardDialog("Setup wizard", new ArrayList<Step>(),
101
-                dialogManager, parentWindow, ModalityType.APPLICATION_MODAL);
98
+                parentWindow, ModalityType.APPLICATION_MODAL);
102 99
         wizardDialog.setIconImage(iconManager.getImage("icon"));
103 100
         wizardDialog.addWizardListener(this);
104 101
         if(Apple.isAppleUI()) {

Loading…
취소
저장