package schedule; import utilities.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; /**** * * Class ScheduleMenu is the "Schedule" pulldown menu in the CalendarToolUI * prototype. Anonymous instances of JMenuItem are defined for each item in * the menu. *
* The constructor for this class receives a reference to the containing * ScheduleUI. It uses this reference to access the dialogs that ScheduleUI * constructs. Since this class and ScheduleUI are in the same package, it has * access to its protected data fields. This is not the best practice for info * hiding, but it's fine in a rapid prototype. *
* In the current prototype, only the first menu item has an action listener * that brings up a dialog. The other items just print a message to stdout. *
* See FileMenu.java documentation for further
* discussion on setting up menu items. See
* documentation for a description of the convenience class that constructs
* menu items that do nothing but print a message to stdout.
*
*/
public class ScheduleMenu extends JMenu {
/**
* Construct this by inserting each of its items, which are Appointment,
* Meeting, Task, Event, and Categories. A JSepartor goes after Event.
*
* The input parameter is used to reference the dialogs that ScheduleUI
* creates. Note that it must be declared final, since it is referenced
* inside an anonymous inner class.
*/
public ScheduleMenu(final ScheduleUI scheduleUI) {
super("Schedule");
add(new JMenuItem("Appointment ...")).addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
scheduleUI.apptDialog.setVisible(true);
scheduleUI.apptDialog.setLocation(new Point(50, 125));
}
}
);
add(new PrintOnlyMenuItem("Schedule", "Meeting ..."));
add(new PrintOnlyMenuItem("Schedule", "Task ..."));
add(new PrintOnlyMenuItem("Schedule", "Event ..."));
add(new JSeparator());
add(new PrintOnlyMenuItem("Schedule", "Categories ..."));
}
}