package gradertool.view; import javax.swing.*; import java.awt.*; import java.awt.event.*; import gradertool.charts.HistoricalTrends; import gradertool.gradebook.NewStudentDisplay; import gradertool.gradebook.*; /**** * * Class FileMenu is the "File" pulldown menu in the GraderToolUI prototype. * Anonymous instances of JMenuItem are defined for each item in the menu. * <p> * This class serves as a good example for how items are added to a menu, and * how an item's "action listener" is given a simple prototype implementation. * <p> * As explained in the Java Swing Tutorial, an action listener is implemented * in a method named "actionPerformed". This method is specialized for all * clickable GUI components, such as menu items and buttons. In a complete * implementation, action listeners perform actual computations, by calling * methods in companion computational classes. * <p> * In a GUI prototype, action listeners don't do any real work. Instead, they * do one of two things: * <ol><li> * print a simple message to stdout, to indicate that a menu item or button has * been clicked on * <li> * bring up another prototype GUI, such as a dialog or display window * </ol> * <p> * In the full implementation next quarter in 309, these simple prototype * actions will be replaced by calls to methods that do real work. * */ public class ToolsMenu extends JMenu { /** * Construct this by inserting each of its nine menu items into the * pulldown menu. The items are New, Open, Close, Close All, Save, Save * As, Save All, Print, and Exit. JSeparators are placed after the 'Close * All', 'Save All', and 'Print' items. */ public ToolsMenu() { super("Tools"); /* * Add each of the items to the menu, with separators in the * appropriate places (per the requirements). */ //add(new JSeparator()); addAssignmentItem(); addStudentItem(); addGradeTrendsItem(); addClassOptionsItem(); } /** * Add the 'New' menu item. This and all other file menu items are created * using the following pattern: * <pre> * JMenu.add(new JMenuItem("<em>Item name</em>")).addActionListener( * new ActionListener() { * public void actionPerformed(ActionEvent e) { * <em>print a message to stdout, or bring up another GUI</em> * } * } * ); * </pre> */ protected void addAssignmentItem() { JMenu subMenu = new JMenu("Graded Item"); subMenu.add(new JMenuItem("Add")).addActionListener( new ActionListener(){ public void actionPerformed (ActionEvent e){ GradedItemDisplay gid = new GradedItemDisplay("Add"); gid.setVisible(true); } } ); subMenu.add(new JMenuItem("Modify")).addActionListener( new ActionListener(){ public void actionPerformed (ActionEvent e){ GradedItemDisplay gid = new GradedItemDisplay("Modify"); gid.setVisible(true); } } ); subMenu.add(new JMenuItem("Delete")).addActionListener( new ActionListener(){ public void actionPerformed (ActionEvent e){ int n = JOptionPane.showConfirmDialog(new JFrame(),"Are you sure you want to delete this graded item?\nThis action cannot be undone", "Confirm Delete", JOptionPane.YES_NO_OPTION); if (n == JOptionPane.NO_OPTION){ System.out.println("No pressed"); } else if (n == JOptionPane.YES_OPTION){ System.out.println("Yes pressed"); } } } ); /* * Use the standard menu item pattern for the item. */ add(subMenu); } /** * Add the 'Open ...' menu item. Its action listener brings up a standard * Swing file choose, provided by the JFileChooser class. method. See the * description of the <a href= FileMenu.html#addNewItem> addNewItem </a> * method for further info. */ protected void addStudentItem() { JMenu subMenu = new JMenu("Student"); subMenu.add(new JMenuItem("Add")).addActionListener( new ActionListener(){ public void actionPerformed (ActionEvent e){ NewStudentDisplay newStudentDisplay = new NewStudentDisplay(); newStudentDisplay.setVisible(true); } } ); subMenu.add(new JMenuItem("Modify")).addActionListener( new ActionListener(){ public void actionPerformed (ActionEvent e){ NewStudentDisplay newStudentDisplay = new NewStudentDisplay(); newStudentDisplay.setVisible(true); } } ); subMenu.add(new JMenuItem("Delete")).addActionListener( new ActionListener(){ public void actionPerformed (ActionEvent e){ DelStudentDisplay delStudentDisplay = new DelStudentDisplay(); delStudentDisplay.setVisible(true); } } ); add(subMenu); } /** * Add the 'Close' menu item. Its action listener just prints a message. * See the description of the <a href= FileMenu.html#addNewItem> addNewItem * </a> method for further info. */ protected void addGradeTrendsItem() { final JMenuItem item; // Used by JFileChooser for placement add(new JMenuItem("Grade Trends")).addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { HistoricalTrends hist = new HistoricalTrends(); } } ); } /** * Add the 'Close All menu item. Its action listener just prints a * message. See the description of the <a href= FileMenu.html#addNewItem> * addNewItem </a> method for further info. */ protected void addClassOptionsItem() { final JMenuItem item; // Used by JFileChooser for placement add(new JMenuItem("Class Options ...")).addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Class Options clicked"); } } ); } }