package hu.elte.inf.pszt.prt.javalib.utils;

import java.awt.Component;
import java.awt.GridBagConstraints;
import javax.swing.*;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

/**
 *
 * @author lengyel zsolt
 */
public class ElteJOptionPane extends JOptionPane {

    public static String showPasswordDialog(Component parentComponent, Object message) {
        JOptionPane inputDialog = new JOptionPane(message, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null, null, null);
        inputDialog.setWantsInput(true);
        JPanel body = ((JPanel) ((JPanel) ((JPanel) inputDialog.getComponent(0)).getComponent(0)).getComponent(1));
        final JTextField tf = (JTextField) body.getComponent(1);
        body.remove(1);
        final JPasswordField pf = new JPasswordField();
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.anchor = 10;
        gbc.fill = 2;
        pf.setLocation(0, 19);
        pf.setSize(195, 20);
        pf.setName("OptionPane.textField2");
        pf.addCaretListener(new CaretListener() {

            @Override
            public void caretUpdate(CaretEvent e) {
                tf.setText(new String(pf.getPassword()));
            }
        });
        body.add(pf, gbc);
        final JDialog dialog = inputDialog.createDialog(parentComponent, "question");
        inputDialog.selectInitialValue();
        dialog.setVisible(true);
        Object value = inputDialog.getInputValue();

        if (value == JOptionPane.UNINITIALIZED_VALUE) {
            return null;
        }
        return value.toString();
    }
    
    public static String showPasswordDialog(Object message){
        return showPasswordDialog(null, message);
    }
}
