package de.javasoft.synthetica.democenter.examples.jypasswordfield;

import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

import de.javasoft.swing.JYPasswordField;
import de.javasoft.swing.JYTextField.PromptStrategy;

/**
 * Demonstrates simple password field usage.  
 */
@SuppressWarnings("serial")
public class SimplePasswordField extends JFrame
{
  public SimplePasswordField()
  {
    super("Simple JYSearchField Demo");
    setLayout(new FlowLayout(FlowLayout.CENTER, 10, 20));
    
    JYPasswordField passwordField = new JYPasswordField(15);
//@highlight
    //set custom prompt text
    passwordField.setPromptText("Type Password...");
    //print prompt if text field is empty - independent from focus
    passwordField.setPromptStrategy(PromptStrategy.NO_TEXT);
    //use bullet echo char
    passwordField.setEchoChar('\u2022');

    //create and set action
    Action a = new AbstractAction()
    {
      public void actionPerformed(ActionEvent evt)
      {
        JYPasswordField field = (JYPasswordField)evt.getSource();        
        JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(field), "Your password: " + new String(field.getPassword()));
      }
    };
    passwordField.setAction(a);    
//@/highlight

    add(passwordField);
    
    //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setSize(400, 250);
    setLocationRelativeTo(null);        //center
    setVisible(true);
  }

  /**
   * Static main method for application startup. 
   */
  public static void main(String[] args)
  {
    EventQueue.invokeLater(new Runnable()
    {
      public void run()
      {
        try
        {
          UIManager.setLookAndFeel("de.javasoft.plaf.synthetica.SyntheticaStandardLookAndFeel");
          //UIManager.put("JYPasswordField.echoChar", 0x2022);
          new SimplePasswordField();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }  
}
