import java.util.*;
import java.awt.*;
import java.text.*;
import java.awt.event.*;
import javax.swing.*;
import com.lavantech.gui.comp.*;

public class ToolTipDateTimePicker extends DateTimePicker implements DateUnavailabilityModel,
    ContainerListener
{

    JPanel dayGridPanel;

    public ToolTipDateTimePicker(GregorianCalendar cal, String datePattern )
    {
        super(cal, datePattern);

        setDateUnavailabilityModel(this);

        JPanel calPanel = getCalendarPanel();

        //Get the child panel that containes the day buttons
        dayGridPanel = (JPanel)calPanel.getComponent(1);
        //When the month changes the day buttons are removed and added.
        dayGridPanel.addContainerListener(this);

        Component[] dayButtons = dayGridPanel.getComponents();
        for(int i=0; i<dayButtons.length; i++)
            setUnavailableToolTip(dayButtons[i]);
    }

    private void setUnavailableToolTip(Component comp)
    {
        if(!(comp instanceof JButton))
            return;
        JButton dayB = (JButton)comp;

        int day;
        try
        {
            day = Integer.parseInt(dayB.getText());
        }
        catch(Exception exp)
        {
            return;
        }

        switch(day)
        {
            case 1:
                dayB.setToolTipText("New Year Day");
                break;
            case 5:
                dayB.setToolTipText("5th of Jan");
                break;
            case 10:
                dayB.setToolTipText("10th of Jan");
                break;
            default:
                dayB.setToolTipText("");
        }
    }

    public int[] getUnavailableDaysInAMonth(int month, int year)
    {
        int[] retval = new int[3];
        retval[0] = 1;
        retval[1] = 5;
        retval[2] = 10;
        return retval;
    }

    public void componentAdded(ContainerEvent evt)
    {
        setUnavailableToolTip(evt.getChild());
    }

    public void componentRemoved(ContainerEvent evt)
    {
    }

    public static void main(String[] args)
    {
        JFrame frame = new JFrame("Date Time Picker Test");
        frame.getContentPane().add(
            new ToolTipDateTimePicker(new GregorianCalendar(), "dd-MMM-yyyy HH:mm"));
        frame.pack();
        frame.show();
    }
}
