package caltool.view.schedule;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class RecurringCheckBoxListener implements ActionListener {

    public RecurringCheckBoxListener(RecurringInfoSubdialog parentView,
            ScheduleAppointmentDialog grandparentView) {
        this.parentView = parentView;
        this.grandparentView = grandparentView;
    }

    public void actionPerformed(ActionEvent e) {

        if (parentView.recurringCheckBox.isSelected()) {
            if ((grandparentView.getClass() ==
                    ScheduleAppointmentDialog.class) ||
                (grandparentView.getClass() ==
                    ScheduleTaskDialog.class)) {
                grandparentView.startDateLabel.setText("Start Date:  ");
            }
            else /* grandparent is meeting dialog */ {
                grandparentView.startDateLabel.setText(
                    "Earliest Start Date:  ");
                ((ScheduleMeetingDialog)grandparentView).latestStartDateLabel.
                    setText("Latest Start Date:  ");
            }
            setEnabled(true);
        }
        else {
            if (grandparentView.getClass() ==
                    ScheduleAppointmentDialog.class) {
                grandparentView.startDateLabel.setText("Date:  ");
            }
            else if (grandparentView.getClass() == ScheduleTaskDialog.class) {
                grandparentView.startDateLabel.setText("Due Date:  ");
            }
            else /* grandparent is meeting dialog */ {
                grandparentView.startDateLabel.setText("Earliest Date:  ");
                ((ScheduleMeetingDialog)grandparentView).latestStartDateLabel.
                    setText("Latest Date:  ");
            }
            setEnabled(false);
            clearAll();
        }
    }

    protected void setEnabled(boolean isEnabled) {
        grandparentView.endDateLabel.setEnabled(isEnabled);
        grandparentView.endDateTextField.setEnabled(isEnabled);
        if (grandparentView.getClass() == ScheduleMeetingDialog.class) {
            ((ScheduleMeetingDialog)grandparentView).latestEndDateLabel.
                setEnabled(isEnabled);
            ((ScheduleMeetingDialog)grandparentView).latestEndDateTextField.
                setEnabled(isEnabled);
        }
            
        parentView.intervalComboBox.setEnabled(isEnabled);
        parentView.intervalLabel.setEnabled(isEnabled);
        parentView.sunCheckBox.setEnabled(isEnabled);
        parentView.sunLabel.setEnabled(isEnabled);
        parentView.monCheckBox.setEnabled(isEnabled);
        parentView.monLabel.setEnabled(isEnabled);
        parentView.tueCheckBox.setEnabled(isEnabled);
        parentView.tueLabel.setEnabled(isEnabled);
        parentView.wedCheckBox.setEnabled(isEnabled);
        parentView.wedLabel.setEnabled(isEnabled);
        parentView.thuCheckBox.setEnabled(isEnabled);
        parentView.thuLabel.setEnabled(isEnabled);
        parentView.friCheckBox.setEnabled(isEnabled);
        parentView.friLabel.setEnabled(isEnabled);
        parentView.satCheckBox.setEnabled(isEnabled);
        parentView.satLabel.setEnabled(isEnabled);
    }

    protected void clearAll() {
        parentView.sunCheckBox.setSelected(false);
        parentView.monCheckBox.setSelected(false);
        parentView.tueCheckBox.setSelected(false);
        parentView.wedCheckBox.setSelected(false);
        parentView.thuCheckBox.setSelected(false);
        parentView.friCheckBox.setSelected(false);
        parentView.satCheckBox.setSelected(false);
    }   


    /** The recurring info parent view */
    protected RecurringInfoSubdialog parentView;

    /** The schedule appointment grandparent view */
    protected ScheduleAppointmentDialog grandparentView;

}