package com.onaro.util.jfc.date;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.ListSelectionModel;
import javax.swing.SpinnerDateModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import com.onaro.client.DateFormats;
/**
* A three way time selection component. To select time, the user may type it in an input field, use a spinner or select
* from a list.
*
* The current selected date can be traced using PropertyChangeEvents.
*/
public class TimeSelector extends JPanel {
private static final long serialVersionUID = 1L;
/**
* Property name for the current selected time.
*/
public static final String PROPERTY_TIME = "selectedTime"; //$NON-NLS-1$
/**
* The current time.
*/
private Date time;
/**
* A spinner allowing the user to roll the time back and forwards in steps of one minute.
*/
private JSpinner timeSpinner;
/**
* Pattern for time display.
*/
private String timePattern = DateFormats.getHourPattern();
/**
* The list of hours the user may select from.
*/
private JList