blob: dfd9646f3957be7e5d3dd4b7278a82d218bee939 [file] [log] [blame]
package org.jetbrains.android.compiler.artifact;
import com.intellij.CommonBundle;
import com.intellij.ide.wizard.CommitStepException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import org.jetbrains.android.exportSignedPackage.NewKeyForm;
import org.jetbrains.android.util.AndroidBundle;
import org.jetbrains.android.util.AndroidUtils;
import org.jetbrains.android.util.SaveFileListener;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
import java.util.Collections;
import java.util.List;
/**
* @author Eugene.Kudelevsky
*/
public class NewKeyStoreDialog extends DialogWrapper {
private JPanel myNewKeyPanel;
private JPanel myPanel;
private TextFieldWithBrowseButton myKeyStorePathField;
private JPasswordField myPasswordField;
private JPasswordField myConfirmedPassword;
private final NewKeyForm myNewKeyForm;
private final Project myProject;
public NewKeyStoreDialog(@NotNull Project project, @NotNull String defaultKeyStorePath) {
super(project);
myProject = project;
myKeyStorePathField.setText(defaultKeyStorePath);
setTitle("New Key Store");
myNewKeyForm = new MyNewKeyForm();
myNewKeyPanel.add(myNewKeyForm.getContentPanel(), BorderLayout.CENTER);
myKeyStorePathField.addActionListener(new SaveFileListener(myPanel, myKeyStorePathField, AndroidBundle.message(
"android.extract.package.choose.keystore.title"), "jks") {
@Override
protected String getDefaultLocation() {
return getKeyStorePath();
}
});
init();
}
@Override
protected JComponent createCenterPanel() {
return myPanel;
}
@Override
public JComponent getPreferredFocusedComponent() {
return myKeyStorePathField;
}
@Override
protected void doOKAction() {
if (getKeyStorePath().length() == 0) {
Messages.showErrorDialog(myPanel, "Specify key store path", CommonBundle.getErrorTitle());
return;
}
try {
AndroidUtils.checkNewPassword(myPasswordField, myConfirmedPassword);
myNewKeyForm.createKey();
}
catch (CommitStepException e) {
Messages.showErrorDialog(myPanel, e.getMessage(), CommonBundle.getErrorTitle());
return;
}
super.doOKAction();
}
@NotNull
public String getKeyStorePath() {
return myKeyStorePathField.getText().trim();
}
@NotNull
public char[] getKeyStorePassword() {
return myPasswordField.getPassword();
}
@NotNull
public String getKeyAlias() {
return myNewKeyForm.getKeyAlias();
}
@NotNull
public char[] getKeyPassword() {
return myNewKeyForm.getKeyPassword();
}
private class MyNewKeyForm extends NewKeyForm {
@Override
protected List<String> getExistingKeyAliasList() {
return Collections.emptyList();
}
@NotNull
@Override
protected Project getProject() {
return myProject;
}
@NotNull
@Override
protected char[] getKeyStorePassword() {
return NewKeyStoreDialog.this.getKeyStorePassword();
}
@NotNull
@Override
protected String getKeyStoreLocation() {
return getKeyStorePath();
}
}
}