/* * Copyright (C) 2012 The Android Open Source Project * * 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://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License 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.motorolamobility.studio.android.certmanager.ui.wizards; import org.eclipse.core.runtime.jobs.IJobChangeListener; import org.eclipse.jface.wizard.IWizard; import com.motorola.studio.android.wizards.BaseWizardPage; import com.motorolamobility.studio.android.certmanager.CertificateManagerActivator; import com.motorolamobility.studio.android.certmanager.i18n.CertificateManagerNLS; import com.motorolamobility.studio.android.certmanager.job.CreateKeyJob; import com.motorolamobility.studio.android.certmanager.ui.composite.NewKeyBlock; import com.motorolamobility.studio.android.certmanager.ui.model.CertificateDetailsInfo; import com.motorolamobility.studio.android.certmanager.ui.model.IKeyStore; /** * Wizard page to create an Android key. */ public class CreateKeyWizardPage extends BaseWizardPage { private IKeyStore keystore = null; private String alias = null; private String keyStorePass; public static final String CREATE_SELF_SIGNED_CERTIFICATE_HELP_ID = CertificateManagerActivator.PLUGIN_ID + ".create-self-cert"; private IJobChangeListener createKeyJobListener = null; /** * The default constructor. */ public CreateKeyWizardPage(IKeyStore keystore) { super(new NewKeyBlock(), CertificateManagerNLS.CreateSelfSignedCertificateWizardPage_Title, CertificateManagerNLS.CreateSelfSignedCertificateWizardPage_Description, CREATE_SELF_SIGNED_CERTIFICATE_HELP_ID); //$NON-NLS-2$ ((NewKeyBlock) block).setBaseWizardPage(this); this.keystore = keystore; } public CreateKeyWizardPage(IKeyStore keystore, String keystorePassword, IJobChangeListener createKeyJobListener) { this(keystore); setKeyStorePass(keystorePassword); this.createKeyJobListener = createKeyJobListener; } /** * Obtains the key pair alias defined by user. * * @return The key pair alias. */ public String getAlias() { return ((NewKeyBlock) block).getAlias(); } /** * Obtains the common name defined by user. * * @return The common name. */ public String getCommonName() { return ((NewKeyBlock) block).getCommonName(); } /** * Obtains the organization defined by user. * * @return The organization. */ public String getOrganization() { return ((NewKeyBlock) block).getOrganization(); } /** * Obtains the organization unit defined by user. * * @return The organization unit. */ public String getOrganizationUnit() { return ((NewKeyBlock) block).getOrganizationUnit(); } /** * Obtains the locality defined by user. * * @return The locality. */ public String getLocality() { return ((NewKeyBlock) block).getLocality(); } /** * Obtains the state defined by user. * * @return The state. */ public String getState() { return ((NewKeyBlock) block).getState(); } /** * Obtains the country defined by user. * * @return The country. */ public String getCountry() { return ((NewKeyBlock) block).getCountry(); } /** * Obtains the validity defined by user. * * @return The validity. */ public String getValidity() { return ((NewKeyBlock) block).getValidity(); } public String getEntryPassword() { return ((NewKeyBlock) block).getKeyPassword(); } public String getEntryConfirmPassword() { return ((NewKeyBlock) block).getKeyConfirmPassword(); } public boolean needToSaveKeyEntryPassword() { return ((NewKeyBlock) block).needToSaveKeyPassword(); } public boolean createKey() { boolean successfullyCreated = true; alias = getAlias(); if (isPageCompleteWithAllFieldsBlank()) { successfullyCreated = true; } else { final CertificateDetailsInfo certificateDetailsInfo = new CertificateDetailsInfo(alias, getCommonName(), getOrganization(), getOrganizationUnit(), getLocality(), getCountry(), getState(), getValidity(), getEntryPassword()); CreateKeyJob createKeyJob = new CreateKeyJob("Create key job", (NewKeyBlock) block, certificateDetailsInfo, keystore, keyStorePass); if (createKeyJobListener != null) { createKeyJob.addJobChangeListener(createKeyJobListener); } createKeyJob.schedule(); successfullyCreated = true; } return successfullyCreated; } /** * @param keystoreNode */ public void setKeyStore(IKeyStore keystoreNode) { this.keystore = keystoreNode; } /* * If all fields are blank and this page is under CreateKeystoreWizard context, * then if all fields are blank the page is considered complete and no keypair will be created. */ public boolean isPageCompleteWithAllFieldsBlank() { boolean result = false; IWizard wizardContext = getWizard(); //in the context of CreateKeyStoreWizard and if this is NOT the current page, then allow all fields blank //be a valid complete page if ((wizardContext instanceof CreateKeystoreWizard) && !isCurrentPage() && areAllFieldsBlank()) { result = true; } return result; } /* * return true if all fields are blank */ private boolean areAllFieldsBlank() { boolean result = false; if (getAlias().isEmpty() && getCommonName().isEmpty() && getOrganization().isEmpty() && getOrganizationUnit().isEmpty() && getLocality().isEmpty() && getState().isEmpty() && getCountry().isEmpty() && getEntryPassword().isEmpty() && getEntryConfirmPassword().isEmpty()) { result = true; } return result; } /* * (non-Javadoc) * @see org.eclipse.jface.wizard.WizardPage#isPageComplete() */ @Override public boolean isPageComplete() { if (this.block == null) { return true; } return this.block.isPageComplete() || isPageCompleteWithAllFieldsBlank(); } /** * This method just works. * @return */ public String getTrueAlias() { return alias; } public void setKeyStorePass(String password) { this.keyStorePass = password; } /** * @return the keystore */ public IKeyStore getKeystore() { return keystore; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.DialogPage#setVisible(boolean) */ @Override public void setVisible(boolean visible) { super.setVisible(visible); if (visible) { ((NewKeyBlock) block).setFocus(); } } }