Browse Source

Support for certificate listeners

Change-Id: I0824e93a7f0f0f11baf9ce444626e2aaf380471f
Depends-On: Ia13ab57d81b176c801c71d4a252cace76beb9163
Reviewed-on: http://gerrit.dmdirc.com/1876
Reviewed-by: Greg Holmes <greg@dmdirc.com>
Automatic-Compile: DMDirc Local Commits <dmdirc@googlemail.com>
tags/0.7rc1
Chris Smith 13 years ago
parent
commit
20d6d3322b

+ 32
- 1
src/com/dmdirc/addons/ui_swing/components/frames/ServerFrame.java View File

@@ -27,11 +27,18 @@ import com.dmdirc.ServerState;
27 27
 import com.dmdirc.addons.ui_swing.SwingController;
28 28
 import com.dmdirc.addons.ui_swing.components.inputfields.SwingInputHandler;
29 29
 import com.dmdirc.addons.ui_swing.dialogs.serversetting.ServerSettingsDialog;
30
+import com.dmdirc.addons.ui_swing.dialogs.sslcertificate.SSLCertificateDialog;
30 31
 import com.dmdirc.commandparser.PopupType;
32
+import com.dmdirc.tls.CertificateManager;
33
+import com.dmdirc.tls.CertificateProblemListener;
34
+import com.dmdirc.ui.core.dialogs.sslcertificate.SSLCertificateDialogModel;
31 35
 import com.dmdirc.ui.interfaces.ServerWindow;
32 36
 
33 37
 import java.awt.event.ActionEvent;
34 38
 import java.awt.event.ActionListener;
39
+import java.security.cert.CertificateException;
40
+import java.security.cert.X509Certificate;
41
+import java.util.Collection;
35 42
 
36 43
 import javax.swing.JMenuItem;
37 44
 import javax.swing.JPopupMenu;
@@ -42,7 +49,7 @@ import net.miginfocom.swing.MigLayout;
42 49
  * The ServerFrame is the MDI window that shows server messages to the user.
43 50
  */
44 51
 public final class ServerFrame extends InputTextFrame implements ServerWindow,
45
-        ActionListener {
52
+        ActionListener, CertificateProblemListener {
46 53
 
47 54
     /**
48 55
      * A version number for this class. It should be changed whenever the class
@@ -50,9 +57,13 @@ public final class ServerFrame extends InputTextFrame implements ServerWindow,
50 57
      * objects being unserialized with the new class).
51 58
      */
52 59
     private static final long serialVersionUID = 9;
60
+
53 61
     /** popup menu item. */
54 62
     private JMenuItem settingsMI;
55 63
 
64
+    /** The SSL certificate dialog we're displaying for this server, if any. */
65
+    private SSLCertificateDialog sslDialog = null;
66
+
56 67
     /**
57 68
      * Creates a new ServerFrame.
58 69
      *
@@ -66,6 +77,8 @@ public final class ServerFrame extends InputTextFrame implements ServerWindow,
66 77
 
67 78
         setInputHandler(new SwingInputHandler(getInputField(),
68 79
                 owner.getCommandParser(), this));
80
+
81
+        owner.addCertificateProblemListener(this);
69 82
     }
70 83
 
71 84
     /**
@@ -144,4 +157,22 @@ public final class ServerFrame extends InputTextFrame implements ServerWindow,
144 157
         }
145 158
         super.close();
146 159
     }
160
+
161
+    /** {@inhertiDoc} */
162
+    @Override
163
+    public void certificateProblemEncountered(final X509Certificate[] chain,
164
+            final Collection<CertificateException> problems,
165
+            final CertificateManager certificateManager) {
166
+        sslDialog = new SSLCertificateDialog(getController().getMainFrame(),
167
+                new SSLCertificateDialogModel(chain, problems, certificateManager));
168
+        sslDialog.display();
169
+    }
170
+
171
+    /** {@inheritDoc} */
172
+    @Override
173
+    public void certificateProblemResolved(final CertificateManager manager) {
174
+        if (sslDialog != null) {
175
+            sslDialog.dispose();
176
+        }
177
+    }
147 178
 }

+ 1
- 1
src/com/dmdirc/addons/ui_swing/dialogs/sslcertificate/ActionsPanel.java View File

@@ -22,7 +22,7 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.dialogs.sslcertificate;
24 24
 
25
-import com.dmdirc.ui.core.dialogs.sslcertificate.CertificateAction;
25
+import com.dmdirc.tls.CertificateAction;
26 26
 
27 27
 import javax.swing.BorderFactory;
28 28
 import javax.swing.ButtonGroup;

Loading…
Cancel
Save