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

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

/** @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);
}
}
