package view;

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class UserConfig extends JDialog implements ActionListener {
	private JButton okButton = new JButton("ok");
	private JButton cancelButton = new JButton("cancel");
	private JTextField pseudoField = new JTextField("chatter");
	private JPasswordField passwordField = new JPasswordField("chatter");
	private String precPseudo;
	private String precPassword;
	
	public UserConfig(JFrame parent, String title, boolean modal) {
		super(parent, title, modal);
		
		precPseudo = pseudoField.getText();
		precPassword = new String(passwordField.getPassword());
		
		initGraphics();
		initListeners();
	}
	
	void initGraphics() {
		setSize(300,150);
		
		setLayout(new GridLayout(3,1,-1,10));

		JPanel buttonsPanel = new JPanel(new FlowLayout());
		buttonsPanel.add(okButton);
		buttonsPanel.add(cancelButton);
		
		getContentPane().add(Util.getLabeledComponent(pseudoField, "pseudo"));
		getContentPane().add(Util.getLabeledComponent(passwordField, "password"));
		getContentPane().add(buttonsPanel);

	}
	
	void initListeners() {
		okButton.addActionListener(this);
		cancelButton.addActionListener(this);
	}
	
	public String getPseudo() {
		return pseudoField.getText();
	}
	
	public String getPassword() {
		return new String(passwordField.getPassword());
	}
	
	public void validateAction() {
		setVisible(false);
		precPseudo = pseudoField.getText();
		precPassword = new String(passwordField.getPassword());
	}
	
	public void cancelAction() {
		setVisible(false);
		pseudoField.setText(precPseudo);
		passwordField.setText(precPassword);
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == okButton) {
			validateAction();
		} else if (e.getSource() == cancelButton) {
			cancelAction();
		}
	}
}
