org.eclipse.equinox.internal.provisional.security.ui.X509CertificateViewDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.equinox.internal.provisional.security.ui.X509CertificateViewDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2008,  Jay Rosenthal and others
 * 
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     Jay Rosenthal - initial API and implementation
 *******************************************************************************/

package org.eclipse.equinox.internal.provisional.security.ui;

import java.security.cert.X509Certificate;
import java.text.DateFormat;
import org.eclipse.equinox.internal.security.ui.Activator;
import org.eclipse.equinox.internal.security.ui.SecurityUIMsg;
import org.eclipse.equinox.internal.security.ui.wizard.CertificateViewer;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

public class X509CertificateViewDialog extends TitleAreaDialog {
    private final static String titleImageName = "/titleAreaCert.gif"; //$NON-NLS-1$
    private X509Certificate theCert;
    private static final DateFormat _df = DateFormat.getDateInstance(DateFormat.LONG);
    private X500PrincipalHelper nameHelper = new X500PrincipalHelper();

    // We use the "bannerFont" for our bold font
    private static Font boldFont = JFaceResources.getBannerFont();
    private Image titleImage;

    public X509CertificateViewDialog(Shell parentShell, X509Certificate cert) {
        super(parentShell);
        this.theCert = cert;
    }

    protected Control createContents(Composite parent) {
        return super.createContents(parent);
    }

    protected Control createDialogArea(Composite parent) {
        nameHelper.setPrincipal(theCert.getSubjectX500Principal());

        setTitle((nameHelper.getCN() != null ? nameHelper.getCN() : nameHelper.getOU()));

        titleImage = Activator.getImageDescriptor(titleImageName).createImage();

        if (titleImage != null)
            setTitleImage(titleImage);

        Composite composite = (Composite) super.createDialogArea(parent);

        TabFolder tabFolder = new TabFolder(composite, SWT.BORDER);
        GridData bdata = new GridData(
                GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_VERTICAL);
        tabFolder.setLayoutData(bdata);

        createBasicTab(tabFolder);

        createAdvancedTab(tabFolder);

        return composite;
    }

    private void createBasicTab(TabFolder tabFolder) {
        String displayName = null;
        int labelIndent = 10;
        int dataIdent = 10;

        TabItem basicTab = new TabItem(tabFolder, SWT.NULL);
        basicTab.setText(SecurityUIMsg.CERTVIEW_LABEL_BASIC);
        Composite basicTabComposite = new Composite(tabFolder, SWT.NONE);

        GridLayout tabLayout = new GridLayout();
        tabLayout.numColumns = 2;
        basicTabComposite.setLayout(tabLayout);

        Label issueToLabel = new Label(basicTabComposite, SWT.NONE);
        issueToLabel.setText(SecurityUIMsg.CERTPROP_X509_ISSUED_TO);
        issueToLabel.setFont(boldFont);
        configureLayout(issueToLabel, 2, 0, 0, 0);

        // Display the RDNs of the Subject
        nameHelper.setPrincipal(theCert.getSubjectX500Principal());

        Label CNLabel = new Label(basicTabComposite, SWT.NONE);
        CNLabel.setText(SecurityUIMsg.X500_LABEL_CN);
        configureLayout(CNLabel, 0, 0, labelIndent, 0);

        Label subjectCN = new Label(basicTabComposite, SWT.NONE);
        displayName = nameHelper.getCN();
        subjectCN.setText((displayName != null ? displayName : SecurityUIMsg.CERTVAL_UNDEFINED));
        configureLayout(subjectCN, 0, 0, dataIdent, 0);

        Label OLabel = new Label(basicTabComposite, SWT.NONE);
        OLabel.setText(SecurityUIMsg.X500_LABEL_O);
        configureLayout(OLabel, 0, 0, labelIndent, 0);

        Label subjectO = new Label(basicTabComposite, SWT.NONE);
        displayName = nameHelper.getO();
        subjectO.setText((displayName != null ? displayName : SecurityUIMsg.CERTVAL_UNDEFINED));
        configureLayout(subjectO, 0, 0, dataIdent, 0);

        Label OULabel = new Label(basicTabComposite, SWT.NONE);
        OULabel.setText(SecurityUIMsg.X500_LABEL_OU);
        configureLayout(OULabel, 0, 0, labelIndent, 0);

        Label subjectOU = new Label(basicTabComposite, SWT.NONE);
        displayName = nameHelper.getOU();
        subjectOU.setText((displayName != null ? displayName : SecurityUIMsg.CERTVAL_UNDEFINED));
        configureLayout(subjectOU, 0, 0, dataIdent, 0);

        Label issueByLabel = new Label(basicTabComposite, SWT.NONE);
        issueByLabel.setText(SecurityUIMsg.CERTPROP_X509_ISSUED_BY);
        configureLayout(issueByLabel, 2, 0, 0, 0);
        issueByLabel.setFont(boldFont);

        // Display the RDNs of the Issuer
        nameHelper.setPrincipal(theCert.getIssuerX500Principal());

        Label CNLabel2 = new Label(basicTabComposite, SWT.NONE);
        CNLabel2.setText(SecurityUIMsg.X500_LABEL_CN);
        configureLayout(CNLabel2, 0, 0, labelIndent, 0);

        Label issuerCN = new Label(basicTabComposite, SWT.NONE);
        displayName = nameHelper.getCN();
        issuerCN.setText((displayName != null ? displayName : SecurityUIMsg.CERTVAL_UNDEFINED));
        configureLayout(issuerCN, 0, 0, dataIdent, 0);

        Label OLabel2 = new Label(basicTabComposite, SWT.NONE);
        OLabel2.setText(SecurityUIMsg.X500_LABEL_O);
        configureLayout(OLabel2, 0, 0, labelIndent, 0);

        Label issuerO = new Label(basicTabComposite, SWT.NONE);
        displayName = nameHelper.getO();
        issuerO.setText((displayName != null ? displayName : SecurityUIMsg.CERTVAL_UNDEFINED));
        configureLayout(issuerO, 0, 0, dataIdent, 0);

        Label OULabel2 = new Label(basicTabComposite, SWT.NONE);
        OULabel2.setText(SecurityUIMsg.X500_LABEL_OU);
        configureLayout(OULabel2, 0, 0, labelIndent, 0);

        Label issuerOU = new Label(basicTabComposite, SWT.NONE);
        displayName = nameHelper.getOU();
        issuerOU.setText((displayName != null ? displayName : SecurityUIMsg.CERTVAL_UNDEFINED));
        configureLayout(issuerOU, 0, 0, dataIdent, 0);

        Label datesLabel = new Label(basicTabComposite, SWT.NONE);
        datesLabel.setText(SecurityUIMsg.CERTVIEW_LABEL_VALIDITY_DATES);
        configureLayout(datesLabel, 2, 0, 0, 0);
        datesLabel.setFont(boldFont);

        Label validFrom = new Label(basicTabComposite, SWT.NONE);
        validFrom.setText(SecurityUIMsg.CERTPROP_X509_VALID_FROM);
        configureLayout(validFrom, 0, 0, labelIndent, 0);

        Label fromDate = new Label(basicTabComposite, SWT.NONE);
        fromDate.setText(_df.format(theCert.getNotBefore()));
        configureLayout(fromDate, 0, 0, dataIdent, 0);

        Label validTo = new Label(basicTabComposite, SWT.NONE);
        validTo.setText(SecurityUIMsg.CERTPROP_X509_VALID_TO);
        configureLayout(validTo, 0, 0, labelIndent, 0);

        Label toDate = new Label(basicTabComposite, SWT.NONE);
        toDate.setText(_df.format(theCert.getNotAfter()));
        configureLayout(toDate, 0, 0, dataIdent, 0);

        basicTab.setControl(basicTabComposite);
    }

    protected static void configureLayout(Control c, int horizontalSpan, int verticalSpan, int horizontalIndent,
            int vertIndent) {
        GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_CENTER);

        gd.horizontalSpan = horizontalSpan;
        gd.verticalSpan = verticalSpan;
        gd.horizontalIndent = horizontalIndent;
        gd.verticalIndent = vertIndent;

        c.setLayoutData(gd);

    }

    private void createAdvancedTab(final TabFolder tabFolder) {
        TabItem advancedTab = new TabItem(tabFolder, SWT.NULL);
        advancedTab.setText(SecurityUIMsg.CERTVIEW_LABEL_DETAILS);
        Composite advTabComposite = new Composite(tabFolder, SWT.NONE);
        advTabComposite.setLayout(new FillLayout(SWT.VERTICAL));

        CertificateViewer certViewer = new CertificateViewer(advTabComposite);
        certViewer.setCertificate(theCert);
        advancedTab.setControl(advTabComposite);
    }

    protected void setShellStyle(int newShellStyle) {

        super.setShellStyle(newShellStyle | SWT.RESIZE | SWT.DIALOG_TRIM);
    }

    protected void createButtonsForButtonBar(Composite parent) {
        // The default has only a "Close" button, but it returns the CANCEL Id
        createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CLOSE_LABEL, true);

    }

    public boolean close() {
        if (titleImage != null) {
            titleImage.dispose();
        }
        return super.close();
    }

}