package edu.byu.cs.roots.opg.nfs.newapi;
import java.awt.Dialog;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class NFSLoginFrame extends JFrame{
private String username = "";
private String password = "";
private JTextField uField;
private JPasswordField pField;
private boolean cancelled = false;
private Object keyLock;
public NFSLoginFrame(Object lock){
super("Login to new FamilySearch");
keyLock = lock;
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setLayout(gridbag);
setLocationRelativeTo(null);
uField = new JTextField(20);
uField.setText("api-user-1254");
JLabel uLabel = new JLabel("Username: ");
uLabel.setLabelFor(uField);
JPanel uPanel = new JPanel();
uPanel.add(uLabel);
uPanel.add(uField);
c.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(uPanel, c);
add(uPanel);
pField = new JPasswordField(20);
pField.setText("18f7");
JLabel pLabel = new JLabel("Password: ");
pLabel.setLabelFor(pField);
JPanel pPanel = new JPanel();
pPanel.add(pLabel);
pPanel.add(pField);
c.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(pPanel, c);
add(pPanel);
JPanel bPanel = new JPanel();
JButton okButton = new JButton("OK");
JButton cancelButton = new JButton("Cancel");
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
acceptClicked();
}
});
KeyListener keyListener = new KeyListener(){
private int pressedCode;
@Override
public void keyPressed(KeyEvent e) {pressedCode = e.getKeyCode();}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER && e.getKeyCode() == pressedCode) {
acceptClicked();
}}
@Override
public void keyTyped(KeyEvent e) {}
};
pField.addKeyListener(keyListener);
uField.addKeyListener(keyListener);
okButton.addKeyListener(keyListener);
cancelButton.addKeyListener(keyListener);
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
cancelClicked();
}
});
bPanel.add(okButton);
bPanel.add(cancelButton);
c.gridwidth = GridBagConstraints.RELATIVE;
gridbag.setConstraints(bPanel, c);
add(bPanel);
}
public void acceptClicked(){
username = uField.getText();
password = new String(pField.getPassword());
dispose();
releaseLock();
}
public void cancelClicked(){
dispose();
cancelled = true;
releaseLock();
}
public void releaseLock(){
synchronized(keyLock){
keyLock.notify();
}
}
public String getUsername(){return username;}
public String getPassword(){return password;}
public boolean getCancelled(){return cancelled;}
}