/* Application to generate file for registrar. Written 4/97 by Kim Bruce Updated 4/98 by Kim Bruce for Java 1.1 event model */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; public class Register extends JFrame { protected CardLayout cardManager; // Layout manager allowing different panels to show // Card showing display when start game protected JPanel startPanel = new JPanel(); // JPanel for entire start screen protected JPanel topStartPanel = new JPanel(); // subJPanels to make it look nicer protected JPanel bottomStartPanel = new JPanel(); // Buttons (and label) for actions in start screen protected JButton startButton = new JButton("Create new data file"); protected JButton quitButton = new JButton("Quit"); // Card showing display when entering new student protected JPanel newEntryPanel = new JPanel(); // JPanel for entering new student course selections protected JLabel studentLabel = new JLabel("Student name:",Label.RIGHT); // prompt for name protected JTextField studentField = new JTextField(30); // slot for student name protected JLabel courseLabel = new JLabel( "Please enter 4 courses",JLabel.CENTER); // prompt for courses protected JTextField[] courseField = new JTextField[4]; // fields for courses protected JPanel[] courseJPanel = new JPanel[4]; // four subJPanels for course info protected JButton enterButton = new JButton("Enter Data"); // Button to add data to file protected JButton eraseButton = new JButton("Clear Data"); // Button to erase data protected JButton noMoreButton = new JButton("No more students"); // Button to quit entering data protected JLabel message = new JLabel("",JLabel.CENTER); protected JPanel studentPanel = new JPanel(); // subJPanel for student name (and JLabel) protected JPanel buttonPanel = new JPanel(); // subJPanel for buttons on entry JPanel. Container contentPane; DataOutputStream outFile; // File holding course info /* post: Creates a frame for program to run in. */ public static void main(String[] args) { // Set up and show frame new Register(); } /* Set up all JPanels for program and initialize animalTree for playing. */ public Register() { super("Registrar data entry"); cardManager = new CardLayout(); contentPane = getContentPane(); contentPane.setLayout(cardManager); startButton.setBackground(Color.green); startButton.addActionListener(new StartListener()); startPanel.add(startButton); quitButton.setBackground(Color.red); quitButton.addActionListener(new QuitListener()); startPanel.add(quitButton); contentPane.add("Start",startPanel); // set up data entry card newEntryPanel.setLayout(new GridLayout(8,1)); studentPanel.add(studentLabel); studentPanel.add(studentField); studentField.setBackground(Color.white); newEntryPanel.add(studentPanel); newEntryPanel.add(courseLabel); for (int courseNo = 0; courseNo < 4; courseNo++) { courseField[courseNo] = new JTextField(30); courseJPanel[courseNo] = new JPanel(); courseJPanel[courseNo].add(courseField[courseNo]); newEntryPanel.add(courseJPanel[courseNo]); courseField[courseNo].setBackground(Color.white); } enterButton.setBackground(Color.green); enterButton.addActionListener(new EnterListener()); buttonPanel.add(enterButton); eraseButton.setBackground(Color.cyan); eraseButton.addActionListener(new EraseListener()); buttonPanel.add(eraseButton); noMoreButton.setBackground(Color.red); noMoreButton.addActionListener(new NoMoreListener()); buttonPanel.add(noMoreButton); newEntryPanel.add(buttonPanel); newEntryPanel.add(message); contentPane.add("New entry",newEntryPanel); cardManager.first(contentPane); // Set frame so at starting JPanel setSize(600,600); show(); } /* On Enter card post: Clear all text fields */ public void doClear() { message.setText(""); // Clear all text fields studentField.setText(""); for (int courseNo = 0; courseNo < 4; courseNo++) courseField[courseNo].setText(""); } // Listener for start button on start card protected class StartListener implements ActionListener{ // Open file and go to data entry field when click on start button public void actionPerformed(ActionEvent evt){ String fileName; do{ FileDialog dialog = new FileDialog(Register.this,"New file for students:",FileDialog.SAVE); dialog.show(); fileName = dialog.getFile(); } while (fileName == null); try { outFile = new DataOutputStream(new FileOutputStream(fileName)); cardManager.last(contentPane); } catch(IOException e) // error with file operation { // directions.setText("Not legal name! Re-enter file name:"); } } } // Listener for quit button on start card protected class QuitListener implements ActionListener{ // Delete window when click on quit button public void actionPerformed(ActionEvent evt){ setVisible(false); dispose(); } } // Listener for enter button on Enter card protected class EnterListener implements ActionListener{ // Store student info when click on enter button public void actionPerformed(ActionEvent evt){ String name = studentField.getText(); // name of student String[] courses= new String[4]; // courses selected for (int courseNo = 0; courseNo < 4; courseNo++) courses[courseNo] = courseField[courseNo].getText(); if (!name.equals("") && !courses[0].equals("") && !courses[1].equals("") && !courses[2].equals("") && !courses[3].equals("")) { try{ outFile.writeUTF(name); for (int courseNo = 0; courseNo < 4; courseNo++) { outFile.writeUTF(courses[courseNo]); } doClear(); } catch (IOException e) { message.setText("Bad data caused write failure"); } } else // Some fields were blank message.setText("Please fill in name and all course slots"); } } // Listener for erase button on Enter card protected class EraseListener implements ActionListener{ // Clear all fields when click on erase button public void actionPerformed(ActionEvent evt){ doClear(); } } // Listener for "no more students" button on Enter card protected class NoMoreListener implements ActionListener{ // Return to start card when "no more students" button public void actionPerformed(ActionEvent evt){ try{ outFile.writeUTF("$$"); outFile.close(); } catch(IOException e) // error with file operation { System.out.println("File close failed!"); } message.setText(""); cardManager.first(contentPane); } } }