import java.util.*;
import
java.text.*;
import java.awt.*;
import java.awt.event.*;
import
java.applet.Applet;
import javax.swing.JComboBox;
public class DatePickerApplet extends Applet
implements ActionListener , ItemListener
{
Button btns[] = new
Button[49];
Button btnNext = new
Button("Forward>>>");
Button btnLast = new
Button("<<<Back");
Button btnSelect = new
Button("Select");
boolean selectedMonthShowing = true;
Label
lblSelection = new Label("Date selected = (no selection)");
Calendar cal =
Calendar.getInstance();
String months[] =
{"January","February","March","April",
"May","June","July","August","September","October","November","December"};
String years[] = new String[15];
int mth = 0;
int yr =
0;
SimpleDateFormat sdf = new
SimpleDateFormat("MM-dd-yyyy");
JComboBox cboYears;
JComboBox cboMonths = new JComboBox(months);
public void init()
{
Panel frame = new Panel(new
BorderLayout());
mth =
cal.get(cal.MONTH);
yr =
cal.get(cal.YEAR);
for(int i = 0; i < years.length;
i++) years[i] = ""+(yr-2+i);
cboYears = new
JComboBox(years);
cboYears.addItemListener(this);
cboMonths.addItemListener(this);
btnSelect.addActionListener(this);
Panel top = new
Panel(new FlowLayout());
top.add(cboMonths);
top.add(cboYears);
top.add(btnSelect);
Panel mid = new Panel(new
GridLayout(7,7));
String days[] =
{"S","M","Tu","W","Th","F","S"};
for(int i = 0; i <
btns.length; i++)
{
btns[i] = new Button();
btns[i].setFont(new
Font("Arial",Font.BOLD, 12));
btns[i].setSize(new Dimension(50,50));
if(i
< 7)
{
btns[i].setLabel(days[i]);
}
else
{
btns[i].addActionListener(this);
btns[i].setFont(new Font("Arial",Font.BOLD,
12));
}
mid.add(btns[i]);
}
btnNext.addActionListener(this);
btnLast.addActionListener(this);
Panel bottom = new
Panel(new FlowLayout());
bottom.add(btnLast);
bottom.add(lblSelection);
bottom.add(btnNext);
frame.add(top,BorderLayout.NORTH);
frame.add(mid,BorderLayout.CENTER);
frame.add(bottom,BorderLayout.SOUTH);
setDates();
add(frame);
}
public void setDates()
{
for(int i = 7; i < btns.length;
i++)
{
btns[i].setLabel("");
}
cal.set(yr,mth,1);
cboMonths.setSelectedItem(months[cal.get(cal.MONTH)]);
cboYears.setSelectedItem(String.valueOf(cal.get(cal.YEAR)));
int firstDay =
cal.get(cal.DAY_OF_WEEK)-1+7;
int ii =
1;
for(int i = firstDay; i<firstDay+31;
i++)
{
btns[i].setLabel(String.valueOf(ii));
ii++;
cal.add(cal.DATE,1);
if(cal.get(cal.MONTH) !=
(1200 + mth)%12) break;
}
selectedMonthShowing = true;
}
public void
itemStateChanged(ItemEvent event)
{
selectedMonthShowing = false;
}
public void actionPerformed(ActionEvent
ae)
{
if(ae.getSource() ==
btnLast)
{
mth--;
setDates();
}
else if(ae.getSource() == btnNext)
{
mth++;
setDates();
}
else if(ae.getSource()
== btnSelect)
{
yr =
Integer.parseInt(cboYears.getSelectedItem().toString());
mth =
cboMonths.getSelectedIndex();
setDates();
selectedMonthShowing =
true;
}
else
if(!selectedMonthShowing)
{
lblSelection.setText("Click 'Select'
button");
}
else
{
for(int i = 7; i
< btns.length; i++)
{
if(ae.getSource() ==
btns[i])
{
if(!btns[i].getLabel().equals(""))
{
Calendar
cal2 =
Calendar.getInstance();
cal2.set(yr,mth,Integer.parseInt(btns[i].getLabel()));
lblSelection.setText("Date selected = "+
sdf.format(cal2.getTime()));
}
else
lblSelection.setText("Date selected = (no
selection)");
break;
}
}
}
}
}