/* | |
* 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()); | |
} | |
} |