import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

import com.jidesoft.swing.SearchableUtils;

public class LookAndFeelExtension {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                setLookAndFeel();
                createUI();
            }
        });
    }

    private static void setLookAndFeel() {
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (Exception e) {
            e.printStackTrace();
//            ignore
        }
    }
    
    private static void createUI() {
        JFrame frame = new JFrame("Jide OSS Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setLayout(new BorderLayout());
        
        JMenuBar menuBar = new JMenuBar();
        
        JMenu fileMenu = new JMenu("File");
        
        JMenuItem openFile = new JMenuItem("Open ...");
        JMenuItem save = new JMenuItem("Save");
        JMenuItem saveAs = new JMenuItem("Save as ...");
        JMenuItem exit = new JMenuItem("Exit");
        
        JMenu importMenu = new JMenu("Import");
        
        JMenuItem importFile = new JMenuItem("From file ...");
        JMenuItem importUrl = new JMenuItem("From URL ...");

        importMenu.add(importFile);
        importMenu.add(importUrl);
        
        fileMenu.add(openFile);
        fileMenu.addSeparator();
        fileMenu.add(save);
        fileMenu.add(saveAs);
        fileMenu.addSeparator();
        fileMenu.add(importMenu);
        fileMenu.addSeparator();
        fileMenu.add(exit);
        
        menuBar.add(fileMenu);
        
        frame.setJMenuBar(menuBar);
        
        JList list = new JList(new Object[] {
           "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"     
        });
        
        list.setVisibleRowCount(5);
        
        JScrollPane scrollPane = new JScrollPane(list);
        SearchableUtils.installSearchable(list);
        
        frame.add(scrollPane);
        frame.setSize(new Dimension(400, 250));
        frame.setVisible(true);
    }
}
