blob: 71ecaef40e14fa278067fb03d6ae20cb132e892a [file] [log] [blame]
/*
* 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.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
import com.motorolamobility.studio.android.certmanager.CertificateManagerActivator;
import com.motorolamobility.studio.android.certmanager.i18n.CertificateManagerNLS;
/**
* Enables selection of a keystore (similar to {@link ImportKeystorePage} functionality.
* It adds a checkbox button that enables user to add the imported keystore into Signing and Keys view.
*/
public class SelectExistentKeystorePage extends ImportKeystorePage
{
private static final int SMALL_TEXT_SIZE = 64;
public static final String SELECT_KEYSTORE_HELP_ID = CertificateManagerActivator.PLUGIN_ID
+ ".select_keystore"; //$NON-NLS-1$
private Button alsoImportIntoView = null;
private boolean importIntoView = true;
private Label keystorePasswordLabel;
private Text keystorePassword;
private Button savePasswordCheckBox;
private boolean canSavePassword = false;
private String password = null;
private SelectionListener selectionListener = new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
validatePage();
}
};
protected SelectExistentKeystorePage(String pageName)
{
super(pageName);
}
@Override
public void createControl(Composite parent)
{
super.createControl(parent);
setTitle(CertificateManagerNLS.SelectExistentKeystorePage_WizardPageTitle);
setMessage(CertificateManagerNLS.SelectExistentKeystorePage_WizardPageMessage);
//KEYSTORE PASSWORD SECTION
keystorePasswordLabel = new Label(getMainComposite(), SWT.NONE);
keystorePasswordLabel
.setText(CertificateManagerNLS.SelectExistentKeystorePage_KeystorePasswordLabel); //$NON-NLS-2$
keystorePassword = new Text(getMainComposite(), SWT.SINGLE | SWT.BORDER | SWT.PASSWORD);
keystorePassword.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
keystorePassword.setTextLimit(SMALL_TEXT_SIZE);
keystorePassword.addSelectionListener(selectionListener);
keystorePassword.addModifyListener(new ModifyListener()
{
@Override
public void modifyText(ModifyEvent e)
{
password = keystorePassword.getText();
validatePage();
}
});
//Creates the save password checkbox
savePasswordCheckBox = new Button(getMainComposite(), SWT.CHECK);
savePasswordCheckBox.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 3, 1));
savePasswordCheckBox.setText(CertificateManagerNLS.PasswordProvider_SaveThisPassword);
savePasswordCheckBox.setSelection(false);
savePasswordCheckBox.setVisible(importIntoView);
savePasswordCheckBox.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
//update according to check status
canSavePassword = savePasswordCheckBox.getSelection();
}
});
alsoImportIntoView = new Button(getMainComposite(), SWT.CHECK);
alsoImportIntoView.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 3, 1));
alsoImportIntoView
.setText(CertificateManagerNLS.SelectExistentKeystorePage_CheckboxText_AlsoImportIntoSigningView);
alsoImportIntoView.setSelection(importIntoView);
alsoImportIntoView.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
//update according to check status
importIntoView = alsoImportIntoView.getSelection();
savePasswordCheckBox.setEnabled(importIntoView);
canSavePassword = importIntoView && savePasswordCheckBox.getSelection();
}
});
//set help id for this page
PlatformUI.getWorkbench().getHelpSystem()
.setHelp(getMainComposite(), SELECT_KEYSTORE_HELP_ID);
}
/**
* @return the importIntoView
*/
public boolean needToImportIntoView()
{
return importIntoView;
}
/**
* @return the password
*/
protected String getPassword()
{
return password;
}
@Override
protected boolean validatePage()
{
boolean pageComplete = super.validatePage();
String infoMessage = CertificateManagerNLS.SelectExistentKeystorePage_WizardPageMessage;
String errorMessage = null;
if (pageComplete)
{
if (!keystoreAlreadyMapped)
{
if (keystorePassword.getText().isEmpty())
{
pageComplete = false;
errorMessage = CertificateManagerNLS.CertificateBlock_EnterPassword_InfoMessage;
}
setMessage(infoMessage);
setErrorMessage(errorMessage);
setPageComplete(pageComplete);
}
}
return pageComplete;
}
/**
* @return the canSavePassword
*/
protected boolean canSavePassword()
{
return canSavePassword;
}
/* (non-Javadoc)
* @see com.motorolamobility.studio.android.certmanager.ui.wizards.ImportKeystorePage#importKeystore()
*/
@Override
public boolean importKeystore()
{
return importKeystore(getPassword(), canSavePassword());
}
}