![JAR search and dependency download from the Maven repository](/logo.png)
src.org.jets3t.gui.AuthenticationDialog Maven / Gradle / Ivy
/*
* jets3t : Java Extra-Tasty S3 Toolkit (for Amazon S3 online storage service)
* This is a java.net project, see https://jets3t.dev.java.net/
*
* Copyright 2006 James Murty
*
* 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.jets3t.gui;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
/**
* Dialog box for a user to enter authentication information for HTTP communication, such as
* NT or Basic authentication.
*
* @author James Murty
*/
public class AuthenticationDialog extends JDialog implements ActionListener {
private static final long serialVersionUID = -8112836668013270984L;
private final Insets insetsDefault = new Insets(5, 7, 5, 7);
private JTextField domainField = null;
private JTextField usernameField = null;
private JPasswordField passwordField = null;
private boolean isNtAuthentication = false;
private String domain = "";
private String user = "";
private String password = "";
/**
* Construct modal dialog for display over a Frame.
*
* @param owner Frame over which this dialog will be displayed and centred.
* @param title the dialog's title text
* @param question the question/statement to prompt the user for their password, may be html
* compatible with {@link JHtmlLabel}
* @param isNtAuthentication if true a domain name is required in addition to the username and password.
*/
public AuthenticationDialog(Frame owner, String title, String question, boolean isNtAuthentication) {
super(owner, title, true);
this.isNtAuthentication = isNtAuthentication;
initGui(question);
}
/**
* Construct modal dialog for display over another Dialog.
*
* @param owner Dialog over which this dialog will be displayed and centred.
* @param title the dialog's title text
* @param question the question/statement to prompt the user for their password
* @param isNtAuthentication if true a domain name is required in addition to the username and password.
*/
public AuthenticationDialog(Dialog owner, String title, String question, boolean isNtAuthentication) {
super(owner, title, true);
this.isNtAuthentication = isNtAuthentication;
initGui(question);
}
/**
* Initialises all GUI elements.
*
* @param question the question/statement to prompt the user for their password
*/
private void initGui(String question) {
this.setResizable(false);
this.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
int rowIndex = 0;
JPanel container = new JPanel(new GridBagLayout());
JHtmlLabel questionLabel = new JHtmlLabel(question, null);
container.add(questionLabel, new GridBagConstraints(0, rowIndex++, 2, 1, 0, 0,
GridBagConstraints.CENTER, GridBagConstraints.NONE, insetsDefault, 0, 0));
domainField = new JTextField();
usernameField = new JTextField();
passwordField = new JPasswordField();
if (isNtAuthentication) {
container.add(new JLabel("Domain:"), new GridBagConstraints(0, rowIndex, 1, 1, 0, 0,
GridBagConstraints.EAST, GridBagConstraints.NONE, insetsDefault, 0, 0));
container.add(domainField, new GridBagConstraints(1, rowIndex++, 1, 1, 1, 0,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, insetsDefault, 0, 0));
}
container.add(new JLabel("User:"), new GridBagConstraints(0, rowIndex, 1, 1, 0, 0,
GridBagConstraints.EAST, GridBagConstraints.NONE, insetsDefault, 0, 0));
container.add(usernameField, new GridBagConstraints(1, rowIndex++, 1, 1, 1, 0,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, insetsDefault, 0, 0));
container.add(new JLabel("Password:"), new GridBagConstraints(0, rowIndex, 1, 1, 0, 0,
GridBagConstraints.EAST, GridBagConstraints.NONE, insetsDefault, 0, 0));
container.add(passwordField, new GridBagConstraints(1, rowIndex++, 1, 1, 1, 0,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, insetsDefault, 0, 0));
JPanel buttonsContainer = new JPanel(new GridBagLayout());
final JButton cancelButton = new JButton("Cancel");
cancelButton.setActionCommand("Cancel");
cancelButton.addActionListener(this);
JButton okButton = new JButton("Authenticate me");
okButton.setActionCommand("OK");
okButton.setDefaultCapable(true);
okButton.addActionListener(this);
buttonsContainer.add(cancelButton, new GridBagConstraints(0, 0, 1, 1, 0, 0,
GridBagConstraints.CENTER, GridBagConstraints.NONE, insetsDefault, 0, 0));
buttonsContainer.add(okButton, new GridBagConstraints(1, 0, 1, 1, 0, 0,
GridBagConstraints.CENTER, GridBagConstraints.NONE, insetsDefault, 0, 0));
container.add(buttonsContainer, new GridBagConstraints(0, rowIndex++, 2, 1, 0, 0,
GridBagConstraints.CENTER, GridBagConstraints.NONE, insetsDefault, 0, 0));
// Set default ENTER and ESCAPE buttons.
this.getRootPane().setDefaultButton(okButton);
this.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke("ESCAPE"), "ESCAPE");
this.getRootPane().getActionMap().put("ESCAPE", new AbstractAction() {
private static final long serialVersionUID = 3717631976908670386L;
public void actionPerformed(ActionEvent actionEvent) {
cancelButton.doClick();
}
});
this.getContentPane().add(container);
this.pack();
this.setLocationRelativeTo(this.getOwner());
}
/**
* Event handler for this dialog.
*/
public void actionPerformed(ActionEvent e) {
if ("OK".equals(e.getActionCommand())) {
if (isNtAuthentication) {
this.domain = domainField.getText();
}
this.user = usernameField.getText();
this.password = new String(passwordField.getPassword());
} else if ("Cancel".equals(e.getActionCommand())) {
this.domain = "";
this.user = "";
this.password = "";
}
this.setVisible(false);
}
/**
* @return
* the domain entered by the user, or null if the dialog was cancelled or NT authentication wasn't used.
*/
public String getDomain() {
return domain;
}
/**
* @return
* the user name entered by the user, or null if the dialog was cancelled.
*/
public String getUser() {
return user;
}
/**
* @return
* the password entered by the user, or null if the dialog was cancelled.
*/
public String getPassword() {
return password;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy