ソースを参照

Remove some controllers.

Also close CSD when channel closes as with SSD to prevent NPEs.

Change-Id: Iedf19dcecea134db08f33ee14226b8522ecf1843
Reviewed-on: http://gerrit.dmdirc.com/3292
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
changes/92/3292/6
Greg Holmes 10年前
コミット
d1373476bb

+ 4
- 0
src/com/dmdirc/addons/ui_swing/components/frames/ChannelFrame.java ファイルの表示

@@ -83,6 +83,8 @@ public final class ChannelFrame extends InputTextFrame implements ActionListener
83 83
     private final String domain;
84 84
     /** Channel settings dialog provider. */
85 85
     private final KeyedDialogProvider<Channel, ChannelSettingsDialog> dialogProvider;
86
+    /** Channel instance. */
87
+    private final Channel channel;
86 88
 
87 89
     /**
88 90
      * Creates a new instance of ChannelFrame. Sets up callbacks and handlers, and default options
@@ -110,6 +112,7 @@ public final class ChannelFrame extends InputTextFrame implements ActionListener
110 112
         this.globalConfig = deps.globalConfig;
111 113
         this.domain = domain;
112 114
         this.dialogProvider = dialogProvider;
115
+        this.channel = owner;
113 116
 
114 117
         initComponents(topicBarFactory);
115 118
 
@@ -274,6 +277,7 @@ public final class ChannelFrame extends InputTextFrame implements ActionListener
274 277
     public void windowClosing(final FrameContainer window) {
275 278
         saveSplitPanePosition();
276 279
         topicBar.close();
280
+        dialogProvider.dispose(channel);
277 281
 
278 282
         super.windowClosing(window);
279 283
     }

+ 20
- 3
src/com/dmdirc/addons/ui_swing/components/frames/ServerFrame.java ファイルの表示

@@ -25,13 +25,17 @@ package com.dmdirc.addons.ui_swing.components.frames;
25 25
 import com.dmdirc.FrameContainer;
26 26
 import com.dmdirc.Server;
27 27
 import com.dmdirc.ServerState;
28
+import com.dmdirc.addons.ui_swing.MainFrame;
28 29
 import com.dmdirc.addons.ui_swing.SwingController;
29 30
 import com.dmdirc.addons.ui_swing.components.inputfields.SwingInputField;
31
+import com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog;
30 32
 import com.dmdirc.addons.ui_swing.dialogs.sslcertificate.SSLCertificateDialog;
33
+import com.dmdirc.addons.ui_swing.injection.KeyedDialogProvider;
31 34
 import com.dmdirc.commandparser.PopupType;
32 35
 import com.dmdirc.interfaces.Connection;
33 36
 import com.dmdirc.tls.CertificateManager;
34 37
 import com.dmdirc.tls.CertificateProblemListener;
38
+import com.dmdirc.ui.IconManager;
35 39
 import com.dmdirc.ui.core.dialogs.sslcertificate.SSLCertificateDialogModel;
36 40
 import com.dmdirc.util.annotations.factory.Factory;
37 41
 import com.dmdirc.util.annotations.factory.Unbound;
@@ -59,25 +63,38 @@ public final class ServerFrame extends InputTextFrame implements
59 63
     private static final long serialVersionUID = 9;
60 64
     /** Swing controller. */
61 65
     private final SwingController controller;
66
+    /** Main frame. */
67
+    private final Provider<MainFrame> mainFrame;
68
+    /** Icon manager. */
69
+    private final IconManager iconManager;
70
+    /** Dialog provider to close SSD. */
71
+    private final KeyedDialogProvider<Server, ServerSettingsDialog> dialogProvider;
62 72
     /** popup menu item. */
63 73
     private JMenuItem settingsMI;
64 74
     /** The SSL certificate dialog we're displaying for this server, if any. */
65 75
     private SSLCertificateDialog sslDialog = null;
76
+    /** Server instance. */
77
+    private final Server server;
66 78
 
67 79
     /**
68 80
      * Creates a new ServerFrame.
69 81
      *
70 82
      * @param deps               The dependencies required by text frames.
71 83
      * @param inputFieldProvider The provider to use to create a new input field.
84
+     * @param dialogProvider     Dialog provider to close SSD with
72 85
      * @param owner              Parent Frame container
73 86
      */
74 87
     public ServerFrame(
75 88
             final TextFrameDependencies deps,
76 89
             final Provider<SwingInputField> inputFieldProvider,
90
+            final KeyedDialogProvider<Server, ServerSettingsDialog> dialogProvider,
77 91
             @Unbound final Server owner) {
78 92
         super(deps, inputFieldProvider, owner);
79
-
93
+        this.mainFrame = deps.mainFrame;
94
+        this.iconManager = deps.iconManager;
80 95
         this.controller = deps.controller;
96
+        this.dialogProvider = dialogProvider;
97
+        this.server = owner;
81 98
         initComponents();
82 99
 
83 100
         owner.addCertificateProblemListener(this);
@@ -148,7 +165,7 @@ public final class ServerFrame extends InputTextFrame implements
148 165
     public void certificateProblemEncountered(final X509Certificate[] chain,
149 166
             final Collection<CertificateException> problems,
150 167
             final CertificateManager certificateManager) {
151
-        sslDialog = new SSLCertificateDialog(controller.getIconManager(), controller.getMainFrame(),
168
+        sslDialog = new SSLCertificateDialog(iconManager, mainFrame.get(),
152 169
                 new SSLCertificateDialogModel(chain, problems, certificateManager));
153 170
         sslDialog.display();
154 171
     }
@@ -162,7 +179,7 @@ public final class ServerFrame extends InputTextFrame implements
162 179
 
163 180
     @Override
164 181
     public void windowClosing(final FrameContainer window) {
165
-        controller.closeServerSettingsDialog((Server) window.getConnection());
182
+        dialogProvider.dispose(server);
166 183
         super.windowClosing(window);
167 184
     }
168 185
 

読み込み中…
キャンセル
保存