/* * This file is part of ReqTracker. * * Copyright (C) 2015 Taleh Didover, Florian Gerdes, Dmitry Gorelenkov, * Rajab Hassan Kaoneka, Katsiaryna Krauchanka, Tobias Polzer, * Gayathery Sathya, Lukas Tajak * * ReqTracker is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ReqTracker is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with ReqTracker. If not, see <http://www.gnu.org/licenses/>. */ package de.fau.osr.gui.Authentication; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Frame; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.border.LineBorder; /** * GUI to get login details * @author Gayathery * */ public class LoginDialog extends JDialog { private JTextField tfUsername; private JPasswordField pfPassword; private JLabel lbUsername; private JLabel lbPassword; private JButton btnLogin; private JButton btnCancel; private boolean succeeded; public LoginDialog(Frame parent,String title) { super(parent, title, true); // JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints cs = new GridBagConstraints(); cs.fill = GridBagConstraints.HORIZONTAL; lbUsername = new JLabel("Username: "); cs.gridx = 0; cs.gridy = 0; cs.gridwidth = 1; panel.add(lbUsername, cs); tfUsername = new JTextField(20); cs.gridx = 1; cs.gridy = 0; cs.gridwidth = 2; panel.add(tfUsername, cs); lbPassword = new JLabel("Password: "); cs.gridx = 0; cs.gridy = 1; cs.gridwidth = 1; panel.add(lbPassword, cs); pfPassword = new JPasswordField(25); cs.gridx = 1; cs.gridy = 1; cs.gridwidth = 2; panel.add(pfPassword, cs); panel.setBorder(new LineBorder(Color.GRAY)); btnLogin = new JButton("Login"); btnLogin.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (Login.authenticate(getUsername(), getPassword())) { JOptionPane.showMessageDialog(LoginDialog.this, "Welcome " + getUsername(), title, JOptionPane.INFORMATION_MESSAGE); succeeded = true; dispose(); } else { JOptionPane.showMessageDialog(LoginDialog.this, "Invalid username or password", title, JOptionPane.ERROR_MESSAGE); // reset username and password tfUsername.setText(""); pfPassword.setText(""); succeeded = false; } } }); btnCancel = new JButton("Cancel"); btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); } }); JPanel bp = new JPanel(); bp.add(btnLogin); bp.add(btnCancel); getContentPane().add(panel, BorderLayout.CENTER); getContentPane().add(bp, BorderLayout.PAGE_END); pack(); setResizable(false); setLocationRelativeTo(parent); } public String getUsername() { return tfUsername.getText().trim(); } public String getPassword() { return new String(pfPassword.getPassword()); } public boolean isSucceeded() { return succeeded; } }