diff options
Diffstat (limited to 'plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/NetworkParameterPage.java')
-rw-r--r-- | plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/NetworkParameterPage.java | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/NetworkParameterPage.java b/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/NetworkParameterPage.java index 5bcd3d7af..fa17ef514 100644 --- a/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/NetworkParameterPage.java +++ b/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/NetworkParameterPage.java @@ -21,6 +21,7 @@ package org.apache.directory.studio.connection.ui.widgets; +import java.security.cert.X509Certificate; import java.text.SimpleDateFormat; import java.util.Date; @@ -41,6 +42,7 @@ import org.apache.directory.studio.connection.ui.AbstractConnectionParameterPage import org.apache.directory.studio.connection.ui.ConnectionUIConstants; import org.apache.directory.studio.connection.ui.ConnectionUIPlugin; import org.apache.directory.studio.connection.ui.RunnableContextRunner; +import org.apache.directory.studio.connection.ui.dialogs.CertificateInfoDialog; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.dialogs.MessageDialog; @@ -116,6 +118,9 @@ public class NetworkParameterPage extends AbstractConnectionParameterPage /** The combo to select the encryption method */ private Combo encryptionMethodCombo; + /** The button to fetch and show the server's certificate */ + private Button viewServerCertificateButton; + /** The button to check the connection parameters */ private Button checkConnectionButton; @@ -316,11 +321,14 @@ public class NetworkParameterPage extends AbstractConnectionParameterPage .getString( "NetworkParameterPage.WarningCertificateValidation" ), 2 ); //$NON-NLS-1$ } - BaseWidgetUtils.createSpacer( groupComposite, 2 ); - checkConnectionButton = new Button( groupComposite, SWT.PUSH ); + BaseWidgetUtils.createSpacer( groupComposite, 1 ); GridData gridData = new GridData(); gridData.horizontalAlignment = SWT.RIGHT; gridData.verticalAlignment = SWT.BOTTOM; + viewServerCertificateButton = new Button( groupComposite, SWT.PUSH ); + viewServerCertificateButton.setLayoutData( gridData ); + viewServerCertificateButton.setText( Messages.getString( "NetworkParameterPage.ViewCertificate" ) ); //$NON-NLS-1$ + checkConnectionButton = new Button( groupComposite, SWT.PUSH ); checkConnectionButton.setLayoutData( gridData ); checkConnectionButton.setText( Messages.getString( "NetworkParameterPage.CheckNetworkParameter" ) ); //$NON-NLS-1$ @@ -340,7 +348,11 @@ public class NetworkParameterPage extends AbstractConnectionParameterPage { // set enabled/disabled state of check connection button checkConnectionButton.setEnabled( !hostCombo.getText().equals( StringUtils.EMPTY ) && - !portCombo.getText().equals( StringUtils.EMPTY ) ); //$NON-NLS-1$ //$NON-NLS-2$ + !portCombo.getText().equals( StringUtils.EMPTY ) ); + + // set enabled/disabled state of show server certificate button + viewServerCertificateButton.setEnabled( checkConnectionButton.isEnabled() + && getEncyrptionMethod() != EncryptionMethod.NONE ); // validate input fields message = null; @@ -459,6 +471,23 @@ public class NetworkParameterPage extends AbstractConnectionParameterPage } } ); + viewServerCertificateButton.addSelectionListener( new SelectionAdapter() + { + @Override + public void widgetSelected( SelectionEvent event ) + { + Connection connection = getTestConnection(); + CheckNetworkParameterRunnable runnable = new CheckNetworkParameterRunnable( connection ); + IStatus status = RunnableContextRunner.execute( runnable, runnableContext, true ); + + if ( status.isOK() ) + { + X509Certificate[] serverCertificates = runnable.getServerCertificates(); + new CertificateInfoDialog( Display.getDefault().getActiveShell(), serverCertificates ).open(); + } + } + } ); + readOnlyConnectionCheckbox.addSelectionListener( new SelectionAdapter() { /** |