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