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

import java.awt.EventQueue;
import java.awt.FlowLayout;

import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.UIManager;

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

/**
 * Demonstrates usage of JYSearchField with popup button.  
 */
@SuppressWarnings("serial")
public class SearchFieldWithPopupButton extends JFrame
{
  public SearchFieldWithPopupButton()
  {
    super("SearchField With Popup Button");
    setLayout(new FlowLayout(FlowLayout.CENTER, 10, 20));
    
    JYSearchField searchField = new JYSearchField(15);
    
//@highlight
    //enable popup button and add popup menu
    searchField.setSearchPopupButtonEnabled(true);
    JPopupMenu popup = new JPopupMenu();
    popup.add(new JMenuItem("Item 1"));
    popup.add(new JMenuItem("Item 2"));
    popup.addSeparator();
    popup.add(new JCheckBoxMenuItem("Case sensitive", true));
    searchField.setSearchPopupMenu(popup);
    
    //modify position of search button 
    //searchField.setSearchControlsPosition(JYSearchField.SearchControlsPosition.CLEAR_LEADING_SEARCH_TRAILING);
    
    //print prompt if text field is empty - independent from focus
    searchField.setPromptStrategy(PromptStrategy.NO_TEXT);
//@/highlight
    add(searchField);
    
    //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");
          new SearchFieldWithPopupButton();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }  
}
