/**
*
*/
package de.tutorials;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.InputVerifier;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.text.JTextComponent;
/**
* @author Tom
*/
public class LoginDialog extends JDialog {
private JLabel lblUsername;
private JLabel lblPassword;
private JTextField txtUsername;
private JPasswordField txtPassword;
private JButton btnLogin;
private final static int MAX_RETRY = 3;
private int loginCnt;
public LoginDialog(final JFrame owner) {
super(owner, "LoginDialog");
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
InputVerifier verifier = new InputVerifier() {
public boolean verify(JComponent input) {
JTextComponent textComponent = (JTextComponent) input;
return !textComponent.getText().trim().equals("");
}
};
lblUsername = new JLabel("Username: ");
txtUsername = new JTextField(10);
txtUsername.setInputVerifier(verifier);
lblPassword = new JLabel("Password: ");
txtPassword = new JPasswordField(10);
txtPassword.setInputVerifier(verifier);
btnLogin = new JButton("login");
setLayout(new GridLayout(3, 2));
add(lblUsername);
add(txtUsername);
add(lblPassword);
add(txtPassword);
add(btnLogin);
btnLogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String username = txtUsername.getText().trim();
String password = String.valueOf(txtPassword.getPassword());
if (username.equals("")) {
return;
}
if (loginCnt++ < MAX_RETRY) {
try {
login(username, password);
owner.setVisible(true);
setVisible(false);
dispose();
} catch (SecurityException e1) {
JOptionPane.showMessageDialog(LoginDialog.this,
"Authentifikation fehlgeschlagen!\nVerbleibende Versuche: "
+ (MAX_RETRY - loginCnt), "Fehler",
JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane
.showMessageDialog(
LoginDialog.this,
"Authentifikation fehlgeschlagen!\nMaximale Loginversuche aufgebraucht!",
"Fehler", JOptionPane.ERROR_MESSAGE);
System.exit(-1);
}
}
});
pack();
setVisible(true);
setModal(true);
}
private void login(String username, String password)
throws SecurityException {
if (!(username.equals("root") && password.equals("admin"))) {
throw new SecurityException("Illegal Login!");
}
}
}