com.amazonaws.eclipse.identitymanagement.user.UpdatePasswordDialog.java Source code

Java tutorial

Introduction

Here is the source code for com.amazonaws.eclipse.identitymanagement.user.UpdatePasswordDialog.java

Source

/*
 * Copyright 2013 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.identitymanagement.user;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
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.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.FormToolkit;

import com.amazonaws.eclipse.core.AwsToolkitCore;
import com.amazonaws.services.identitymanagement.AmazonIdentityManagement;
import com.amazonaws.services.identitymanagement.model.CreateLoginProfileRequest;
import com.amazonaws.services.identitymanagement.model.UpdateLoginProfileRequest;
import com.amazonaws.services.identitymanagement.model.User;

public class UpdatePasswordDialog extends TitleAreaDialog {

    private FormToolkit toolkit;
    private Text passwordText;
    private Text confirmPasswordText;
    private User user;
    private boolean hasPassword;
    private AmazonIdentityManagement iam;
    private UserSummary userSummary;
    protected Button okButton;

    public UpdatePasswordDialog(AmazonIdentityManagement iam, UserSummary userSummary, Shell parentShell,
            FormToolkit toolkit, User user, boolean hasPassword) {
        super(parentShell);
        this.toolkit = toolkit;
        this.user = user;
        this.hasPassword = hasPassword;
        this.iam = iam;
        this.userSummary = userSummary;
    }

    @Override
    protected Control createContents(Composite parent) {
        Control contents = super.createContents(parent);
        if (hasPassword) {
            setTitle("Update User Password");
        } else {
            setTitle("Create User Password");
        }
        setTitleImage(AwsToolkitCore.getDefault().getImageRegistry().get(AwsToolkitCore.IMAGE_AWS_LOGO));
        okButton = getButton(IDialogConstants.OK_ID);
        validate();
        return contents;
    }

    @Override
    protected void configureShell(Shell shell) {
        super.configureShell(shell);
        if (hasPassword) {
            shell.setText("Update User Password");
        } else {
            shell.setText("Create User Password");
        }
        shell.setMinimumSize(600, 400);
    }

    @Override
    protected Control createDialogArea(Composite parent) {
        Control control;
        control = createContentPasswordLayout(parent);
        return control;

    }

    private Composite createContentPasswordLayout(Composite parent) {
        Composite composite = (Composite) super.createDialogArea(parent);

        composite.setLayout(new GridLayout(1, false));
        composite.setBackground(toolkit.getColors().getBackground());

        GridDataFactory gridDataFactory = GridDataFactory.swtDefaults().align(SWT.FILL, SWT.TOP).grab(true, false)
                .minSize(200, SWT.DEFAULT).span(2, SWT.DEFAULT).hint(200, SWT.DEFAULT);

        toolkit.createLabel(composite, "Password:");
        passwordText = toolkit.createText(composite, "", SWT.BORDER);
        gridDataFactory.copy().span(2, SWT.DEFAULT).applyTo(passwordText);
        toolkit.createLabel(composite, "Confirm Password:");
        passwordText.addModifyListener(new ModifyListener() {

            public void modifyText(ModifyEvent e) {
                validate();
            }
        });

        confirmPasswordText = toolkit.createText(composite, "", SWT.BORDER);
        gridDataFactory.copy().span(2, SWT.DEFAULT).applyTo(confirmPasswordText);
        confirmPasswordText.addModifyListener(new ModifyListener() {

            public void modifyText(ModifyEvent e) {
                validate();
            }
        });
        return composite;
    }

    private void createPassword(String password) {
        iam.createLoginProfile(
                new CreateLoginProfileRequest().withPassword(password).withUserName(user.getUserName()));
    }

    private void updatePassword(String password) {
        iam.updateLoginProfile(
                new UpdateLoginProfileRequest().withPassword(password).withUserName(user.getUserName()));
    }

    @Override
    protected void okPressed() {

        final String password = passwordText.getText();
        if (hasPassword) {
            new Job("Update password") {
                @Override
                protected IStatus run(IProgressMonitor monitor) {
                    try {
                        updatePassword(password);
                        userSummary.refresh();
                        return Status.OK_STATUS;
                    } catch (Exception e) {
                        return new Status(Status.ERROR, AwsToolkitCore.PLUGIN_ID,
                                "Unable to create the password: " + e.getMessage(), e);
                    }
                }
            }.schedule();
        } else {
            new Job("Create password") {
                @Override
                protected IStatus run(IProgressMonitor monitor) {
                    try {
                        createPassword(password);
                        userSummary.refresh();
                        return Status.OK_STATUS;
                    } catch (Exception e) {
                        return new Status(Status.ERROR, AwsToolkitCore.PLUGIN_ID,
                                "Unable to update the password: " + e.getMessage(), e);
                    }

                }
            }.schedule();
        }
        super.okPressed();
    }

    private void validate() {
        if (passwordText.getText() == null || passwordText.getText().length() <= 0) {
            setErrorMessage("Please input a valid password.");
            okButton.setEnabled(false);
            return;
        }
        if (confirmPasswordText.getText() == null || confirmPasswordText.getText().length() <= 0
                || (!confirmPasswordText.getText().equals(passwordText.getText()))) {
            setErrorMessage("Password fields do not match.");
            okButton.setEnabled(false);
            return;
        }
        okButton.setEnabled(true);
        setErrorMessage(null);
    }
}