blob: ac8dc9760cc7af85976c068ea5bf96405c5aaa63 [file] [log] [blame]
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* 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 org.jetbrains.idea.svn.dialogs;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.svn.SvnBundle;
import javax.swing.*;
import java.awt.*;
public class SSLCredentialsDialog extends DialogWrapper {
private JPanel myPanel;
private TextFieldWithBrowseButton myCertificatePath;
private JPasswordField myCertificatePassword;
private JCheckBox mySaveAuth;
public SSLCredentialsDialog(final Project project, final String authRealm, final boolean authSaveAllowed) {
super(project, true);
setResizable(true);
initUI(authRealm, authSaveAllowed);
init();
}
protected String getDimensionServiceKey() {
return "svn.sslCredentialsDialog";
}
@NotNull
protected Action[] createActions() {
return new Action[]{getOKAction(), getCancelAction()};
}
private void initUI(final String authRealm, final boolean authSaveAllowed) {
myPanel = new JPanel(new GridBagLayout());
final GridBagConstraints gb =
new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(1, 1, 1, 1), 0, 0);
gb.fill = GridBagConstraints.HORIZONTAL;
gb.gridwidth = 2;
gb.weightx = 0;
JLabel label = new JLabel(SvnBundle.message("label.auth.authentication.realm", authRealm));
myPanel.add(label, gb);
++ gb.gridy;
gb.gridwidth = 1;
gb.weightx = 0;
final JLabel certificatePath = new JLabel(SvnBundle.message("label.ssl.certificate.path"));
myPanel.add(certificatePath, gb);
myCertificatePath = new TextFieldWithBrowseButton();
myCertificatePath.addBrowseFolderListener(
SvnBundle.message("dialog.edit.http.proxies.settings.dialog.select.ssl.client.certificate.path.title"),
null, null, FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor());
gb.weightx = 1;
++ gb.gridx;
myPanel.add(myCertificatePath, gb);
gb.gridx = 0;
gb.weightx = 0;
++ gb.gridy;
final JLabel certificatePassword = new JLabel(SvnBundle.message("label.ssl.certificate.password"));
myPanel.add(certificatePassword, gb);
++ gb.gridx;
gb.weightx = 1;
myCertificatePassword = new JPasswordField();
myPanel.add(myCertificatePassword, gb);
gb.gridx = 0;
++ gb.gridy;
gb.weightx = 0;
mySaveAuth = new JCheckBox(SvnBundle.message("checkbox.ssl.keep.for.current.session"), authSaveAllowed);
mySaveAuth.setEnabled(authSaveAllowed);
myPanel.add(mySaveAuth, gb);
if (! authSaveAllowed) {
++ gb.gridy;
gb.gridwidth = 2;
final JLabel cannotSaveLabel = new JLabel(SvnBundle.message("svn.cannot.save.credentials.store-auth-creds"));
cannotSaveLabel.setForeground(UIUtil.getInactiveTextColor());
myPanel.add(cannotSaveLabel, gb);
}
}
@Override
public JComponent getPreferredFocusedComponent() {
return StringUtil.isEmptyOrSpaces(myCertificatePath.getText()) ? myCertificatePath : myCertificatePassword;
}
public String getCertificatePath() {
return myCertificatePath.getText();
}
public char[] getCertificatePassword() {
return myCertificatePassword.getPassword();
}
public boolean getSaveAuth() {
return mySaveAuth.isSelected();
}
@Override
protected JComponent createNorthPanel() {
return myPanel;
}
protected JComponent createCenterPanel() {
return null;
}
public void setFile(@NotNull String file) {
myCertificatePath.setText(file);
}
}