com.amazonaws.eclipse.ec2.ui.keypair.CreateKeyPairDialog.java Source code

Java tutorial

Introduction

Here is the source code for com.amazonaws.eclipse.ec2.ui.keypair.CreateKeyPairDialog.java

Source

/*
 * Copyright 2008-2011 Amazon Technologies, Inc. 
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at:
 * 
 *    http://aws.amazon.com/apache2.0
 *
 * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 
 * OR CONDITIONS OF ANY KIND, either express or implied. See the 
 * License for the specific language governing permissions and 
 * limitations under the License. 
 */

package com.amazonaws.eclipse.ec2.ui.keypair;

import java.io.File;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

import com.amazonaws.eclipse.ec2.keypairs.KeyPairManager;

/**
 * A dialog for creating a new EC2 Key Pair.
 */
class CreateKeyPairDialog extends Dialog {

    private Text keyPairNameText;
    private Text privateKeyDirectoryText;

    private String keyPairName;
    private String privateKeyDirectoryName;

    private final String accountId;

    protected CreateKeyPairDialog(Shell parentShell, String accountId) {
        super(parentShell);
        this.accountId = accountId;
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.dialogs.Dialog#create()
     */
    @Override
    public void create() {
        super.create();

        this.getShell().setText("Create New Key Pair");
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.dialogs.Dialog#createButtonBar(org.eclipse.swt.widgets.Composite)
     */
    @Override
    protected Control createButtonBar(Composite parent) {
        Control control = super.createButtonBar(parent);

        updateOkButton();

        return control;
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
     */
    @Override
    protected Control createDialogArea(Composite parent) {
        ModifyListener listener = new ModifyListener() {
            public void modifyText(ModifyEvent e) {
                updateOkButton();
            }
        };

        Composite composite = new Composite(parent, SWT.BORDER);
        GridLayout gridLayout = new GridLayout(3, false);
        gridLayout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
        gridLayout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
        gridLayout.verticalSpacing = 0;
        gridLayout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);

        composite.setLayout(gridLayout);
        composite.setLayoutData(new GridData(GridData.FILL_BOTH));

        GridData gridData;

        Label label = new Label(composite, SWT.NONE);
        label.setText("Key Pair Name:");
        gridData = new GridData(GridData.FILL_BOTH);
        gridData.horizontalAlignment = SWT.LEFT;
        gridData.verticalAlignment = SWT.CENTER;
        gridData.horizontalSpan = 3;
        label.setLayoutData(gridData);

        keyPairNameText = new Text(composite, SWT.BORDER);
        keyPairNameText.addModifyListener(listener);
        gridData = new GridData(GridData.FILL_BOTH);
        gridData.horizontalSpan = 3;
        keyPairNameText.setLayoutData(gridData);

        label = new Label(composite, SWT.NONE);
        label.setText("Private Key Directory:");
        gridData = new GridData(GridData.FILL_BOTH);
        gridData.horizontalAlignment = SWT.LEFT;
        gridData.verticalAlignment = SWT.CENTER;
        gridData.horizontalSpan = 3;
        label.setLayoutData(gridData);

        privateKeyDirectoryText = new Text(composite, SWT.BORDER);
        privateKeyDirectoryText.addModifyListener(listener);

        File defaultPrivateKeyDirectory = KeyPairManager.getDefaultPrivateKeyDirectory();
        if (defaultPrivateKeyDirectory != null) {
            privateKeyDirectoryText.setText(defaultPrivateKeyDirectory.getAbsolutePath());
        }

        gridData = new GridData(GridData.FILL_BOTH);
        gridData.horizontalSpan = 2;
        gridData.widthHint = 300;
        privateKeyDirectoryText.setLayoutData(gridData);

        Button button = new Button(composite, SWT.PUSH);
        button.setText("Browse...");
        button.addSelectionListener(new SelectionListener() {
            public void widgetDefaultSelected(SelectionEvent e) {
            }

            public void widgetSelected(SelectionEvent e) {
                DirectoryDialog dialog = new DirectoryDialog(Display.getCurrent().getActiveShell());
                String directoryPath = dialog.open();

                privateKeyDirectoryText.setText(directoryPath);
            }
        });

        applyDialogFont(composite);

        return composite;
    }

    private void updateOkButton() {
        boolean b = true;
        if (keyPairNameText == null || keyPairNameText.getText().length() == 0 || privateKeyDirectoryText == null
                || privateKeyDirectoryText.getText().length() == 0) {
            b = false;
        }

        Button okButton = getButton(OK);
        if (okButton == null) {
            return;
        }

        okButton.setEnabled(b);
    }

    public String getKeyPairName() {
        return keyPairName;
    }

    public String getPrivateKeyDirectory() {
        return privateKeyDirectoryName;
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.dialogs.Dialog#okPressed()
     */
    @Override
    protected void okPressed() {
        privateKeyDirectoryName = privateKeyDirectoryText.getText();
        keyPairName = keyPairNameText.getText();

        super.okPressed();
    }

}