/** * MonthSpinner.java * Created On 2006, Apr 8, 2006 4:58:52 PM * @author E. Rajasekar */ package app.astrosoft.ui.comp; import java.awt.Color; import java.awt.Component; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.event.ChangeEvent; public abstract class CalendarChooser { private List <DateListener> listeners; //private Date selectedDate; public static CalendarSpinner getMonthChooser(){ return new CalendarSpinner(CalendarSpinner.FMT_MONTH_YEAR); } public static CalendarSpinner getTimeChooser(){ return new CalendarSpinner(CalendarSpinner.FMT_TIME); } public static CalendarSpinner getDateChooser(){ return new CalendarSpinner(CalendarSpinner.FMT_DATE); } protected CalendarChooser() { listeners = new ArrayList<DateListener>(); } public void addDateListener(DateListener listener){ listeners.add(listener); } public void removeDateListener(DateListener listener){ listeners.remove(listener); } protected void selectionChanged(ChangeEvent e) { //NOTE: Assumes every chooser is spinner, which may change //in future JSpinner spinner = (JSpinner) e.getSource(); //selectedDate = (Date)spinner.getValue(); notifyListeners((Date)spinner.getValue()); } private void notifyListeners(Date selectedDate) { for(DateListener l : listeners){ l.dateChanged(selectedDate); } } public abstract Date getSelectedDate(); public abstract void setSelectedDate(Date date); public abstract JPanel getChooser(); public abstract JPanel getChooser(String label); public abstract void setForeground(Color fgClr); public abstract void setBackground(Color bgClr); }