import java.awt.*;
import java.awt.event.*;
import java.sql.*;

import javax.swing.*;

public class Password {

	public static String passwordDialog() {
		final JTextField jtf = new JTextField();
		final JPasswordField jpf = new JPasswordField();
		final JPanel panel = new JPanel();
		panel.setLayout(new GridLayout(2,2));
		panel.add(new JLabel("Brugernavn"));
		panel.add(jtf);
		panel.add(new JLabel("Password"));
		panel.add(jpf);
		JOptionPane jop = new JOptionPane(panel, JOptionPane.QUESTION_MESSAGE,
				JOptionPane.OK_CANCEL_OPTION);
		JDialog dialog = jop.createDialog(null, "Indtast venligst brugernavn og password");
		dialog.addComponentListener(new ComponentAdapter() {
			@Override
			public void componentShown(ComponentEvent e) {
				jtf.requestFocusInWindow();
			}
		});
		dialog.setVisible(true);
		int result = (Integer) jop.getValue();
		dialog.dispose();
		String username = null;
		char[] password = null;
		if (result == JOptionPane.OK_OPTION) {
			username = jtf.getText();
			password = jpf.getPassword();
		} else {
			return null;
		}
		return "?user="+username+"&password="+new String(password);
	}

	public static Connection connectionDialog() throws SQLException {
		final JTextField host = new JTextField();
		final JTextField port = new JTextField();
		final JTextField db = new JTextField();
		final JTextField user = new JTextField();
		final JPasswordField jpf = new JPasswordField();
		final JPanel panel = new JPanel();
		panel.setLayout(new GridLayout(5,2));
		panel.add(new JLabel("Server"));
		panel.add(host);
		panel.add(new JLabel("Port"));
		panel.add(port);
		panel.add(new JLabel("Database"));
		panel.add(db);
		panel.add(new JLabel("Brugernavn"));
		panel.add(user);
		panel.add(new JLabel("Password"));
		panel.add(jpf);
		JOptionPane jop = new JOptionPane(panel, JOptionPane.QUESTION_MESSAGE,
				JOptionPane.OK_CANCEL_OPTION);
		JDialog dialog = jop.createDialog(null, "Indtast venligst informationer for databaseforbindelsen");
		dialog.addComponentListener(new ComponentAdapter() {
			@Override
			public void componentShown(ComponentEvent e) {
				host.requestFocusInWindow();
			}
		});
		dialog.setVisible(true);
		int result = (Integer) jop.getValue();
		dialog.dispose();
		if (result == JOptionPane.OK_OPTION) {
			return DriverManager.getConnection("jdbc:postgresql://"+host.getText()+(port.getText().equals("") ? "" : ":"+port.getText())+"/"+db.getText(),
			user.getText(),
			new String(jpf.getPassword()));
		} else {
			return null;
		}
	}

	public static void main(String[] args) {
		System.out.println(passwordDialog());
	}

}
