/* * EmpGUI.java * * Created on October 7, 2002, 11:30 PM */ /** * * @author Nathan Balon * Program #4 * SN# 797737 * IS 375 * @version */ package Employee; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.util.*; public class EmpGUI{ private WhiteCollarGUI whiteCollarGUI; private LineWorkerGUI lineWorkerGUI; private JFrame employeeGUI; private Employee [] staff; private File fileName; private ObjectInputStream in; private ObjectOutputStream out; private boolean fileDeleted; private JPanel southPanel; private JButton enterLineButton, enterWhiteCollarButton, cancel; private JMenuItem displayItem, saveItem, newItem, openItem, exitItem, deleteFileItem, addWhiteCollarItem, addLineWorkerItem; private int counter; /** Creates new EmpGUI */ public EmpGUI() { staff = new Employee [20]; employeeGUI = new JFrame(); employeeGUI.setTitle("Employee Information Application"); employeeGUI.getContentPane().setBackground(Color.blue); JMenu fileMenu = new JMenu("File"); newItem = new JMenuItem("New"); newItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ newFile(); } }); fileMenu.add(newItem); openItem = fileMenu.add("Open"); fileMenu.addSeparator(); openItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ openFile(); } }); displayItem = fileMenu.add("Display Report"); displayItem.setEnabled(false); displayItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ displayFile(); } }); saveItem = fileMenu.add("Save"); saveItem.setEnabled(false); saveItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ saveFile(); } }); fileMenu.addSeparator(); fileMenu.add(new AbstractAction("Exit") { public void actionPerformed(ActionEvent event){ if (!fileDeleted) closeFile(); System.exit(0); } }); JMenu addEmployeeMenu = new JMenu("Add Employee"); JMenuItem addWhiteCollarItem = new JMenuItem("White Collar Employee"); addWhiteCollarItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ displayWhiteGUI(); } }); addWhiteCollarItem.setEnabled(false); addEmployeeMenu.add(addWhiteCollarItem); JMenuItem addLineWorkerItem = new JMenuItem("Line Worker"); addLineWorkerItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ displayLineWorkerGUI(); } }); addLineWorkerItem.setEnabled(false); addEmployeeMenu.add(addLineWorkerItem); JMenu deleteMenu = new JMenu("Delete"); deleteFileItem = new JMenuItem("Delete File"); deleteFileItem.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ deleteFile(); } }); deleteFileItem.setEnabled(false); deleteMenu.add(deleteFileItem); JMenuBar menuBar = new JMenuBar(); employeeGUI.setJMenuBar(menuBar); menuBar.add(fileMenu); menuBar.add(addEmployeeMenu); menuBar.add(deleteMenu); whiteCollarGUI = new WhiteCollarGUI(); lineWorkerGUI = new LineWorkerGUI(); southPanel = new JPanel(); southPanel.setBackground(Color.blue); enterWhiteCollarButton = new JButton("Enter WhiteCollar"); enterWhiteCollarButton.setVisible(false); enterWhiteCollarButton.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ addWhiteCollarWorker(); } }); southPanel.add(enterWhiteCollarButton); enterLineButton = new JButton("Enter Line Worker"); enterLineButton.setVisible(false); enterLineButton.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ addLineWorker(); } }); southPanel.add(enterLineButton); JButton clearButton = new JButton("Clear"); clearButton.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ lineWorkerGUI.clearFields(); whiteCollarGUI.clearFields(); } }); southPanel.add(clearButton); employeeGUI.addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent event){ if( in != null) closeFile(); System.exit(0); } } ); employeeGUI.getContentPane().add(southPanel, BorderLayout.SOUTH); employeeGUI.setSize(350, 225); employeeGUI.setVisible(true); } /** Creates a new employee file and saves the first three records */ public void newFile(){ try{ staff[0] = new LineWorker("Nathan" , "Balon", "IS", "764-9636", "Programmer", "Java"); staff[1] = new WhiteCollar("Rocko", "Smith", "979-1000", "Management", "11/14/1999"); staff[2] = new LineWorker("Ivan" , "Frances", "Cleaning", "877-9006", "Janitor", "Mop"); JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int result = fileChooser.showSaveDialog(employeeGUI); if (result ==JFileChooser.CANCEL_OPTION) return; fileName = fileChooser.getSelectedFile(); out = new ObjectOutputStream(new FileOutputStream(fileName)); for( int i = 0; i < Employee.getCount(); i ++){ if(staff[i] == null) break; out.writeObject(staff[i]); } out.close(); openItem.setEnabled(false); newItem.setEnabled(false); displayItem.setEnabled(true); saveItem.setEnabled(true); deleteFileItem.setEnabled(true); addLineWorkerItem.setEnabled(true); addWhiteCollarItem.setEnabled(true); } catch (Exception e){ e.printStackTrace(); } } /** Deletes a the file that is currently open */ public void deleteFile(){ if (fileName.exists()){ fileName.delete(); JOptionPane.showMessageDialog(employeeGUI, "File " + fileName.getName() + " Deleted", "File Deleted", JOptionPane.INFORMATION_MESSAGE); fileDeleted = true; } } /** Lets the user select a file to open */ public void openFile(){ try{ JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int result = fileChooser.showOpenDialog(employeeGUI); if (result ==JFileChooser.CANCEL_OPTION) return; fileName = fileChooser.getSelectedFile(); if(fileName == null || fileName.getName().equals("")) JOptionPane.showMessageDialog(employeeGUI, "Invalid File Name", "Invalid FileName", JOptionPane.ERROR_MESSAGE); else{ try{ if( in != null) in.close(); in = new ObjectInputStream(new FileInputStream(fileName)); staff = (Employee[])in.readObject(); } catch (IOException ioException){ JOptionPane.showMessageDialog(employeeGUI, "Error Opening File", "Error", JOptionPane.ERROR_MESSAGE); } } openItem.setEnabled(false); newItem.setEnabled(false); displayItem.setEnabled(true); saveItem.setEnabled(true); deleteFileItem.setEnabled(true); } catch (Exception e){ e.printStackTrace(); } } /** Displays a list of all the records in the file */ public void displayFile(){ counter = 0; for (int i = 0; i < 20; i++){ if(staff[i] != null) ++ counter; } System.out.println("\n Employee Report"); System.out.println("\nThe file " + fileName.getName() + " contains " + counter + " records\n"); for (int i = 0; i < staff.length; i ++){ if (staff[i] == null) break; else System.out.println(staff[i]); } } /** Closes the file */ private void closeFile(){ try{ if( in != null) in.close(); } catch (IOException ioException){ JOptionPane.showMessageDialog( employeeGUI, "Error closing the file", "Error", JOptionPane.ERROR_MESSAGE); System.exit(1); } } /** Saves the file to the location of where the file was created */ public void saveFile(){ try{ fileName.delete(); out = new ObjectOutputStream(new FileOutputStream(fileName)); out.writeObject(staff); out.close(); JOptionPane.showMessageDialog(employeeGUI, "File " + fileName.getName() + " has been saved", "File Saved", JOptionPane.INFORMATION_MESSAGE); } catch (Exception e) { e.printStackTrace(); } } /** Displays the White Collar GUI in the Frame */ public void displayWhiteGUI(){ employeeGUI.getContentPane().remove(lineWorkerGUI); enterLineButton.setVisible(false); employeeGUI.repaint(); southPanel.repaint(); enterWhiteCollarButton.setVisible(true); employeeGUI.getContentPane().add(whiteCollarGUI); employeeGUI.validate(); } /** Displays the Line Worker GUI in the main Frame */ public void displayLineWorkerGUI(){ employeeGUI.getContentPane().remove(whiteCollarGUI); enterWhiteCollarButton.setVisible(false); employeeGUI.repaint(); southPanel.repaint(); employeeGUI.getContentPane().add(lineWorkerGUI); enterLineButton.setVisible(true); employeeGUI.validate(); } /** Adds a line worker employee to the employee array */ public void addLineWorker(){ String[] values = lineWorkerGUI.getFields(); if(values[0].equals("")){ JOptionPane.showMessageDialog(employeeGUI, "You must add data first", "Read Error", JOptionPane.ERROR_MESSAGE); return; } if(Employee.getCount() > 20){ JOptionPane.showMessageDialog(employeeGUI, "Can not add any more records to the file", "Error", JOptionPane.ERROR_MESSAGE); return; } LineWorker lineWorker = new LineWorker(); lineWorker.setFname(values[0]); lineWorker.setLname(values[1]); lineWorker.setPhone(values[2]); lineWorker.setDept(values[3]); lineWorker.setPosition(values[4]); lineWorker.setSkill(values[5]); for (int i = 0; i < 20; i++){ if (staff[i] == null){ staff[i] = lineWorker; break; } } lineWorkerGUI.clearFields(); } /** Adds a white collar worker to the employee array */ public void addWhiteCollarWorker(){ String [] values = whiteCollarGUI.getFields(); if(values[0].equals("")){ JOptionPane.showMessageDialog(employeeGUI, "You must add data first", "Read Error", JOptionPane.ERROR_MESSAGE); return; } if(staff[19] != null){ JOptionPane.showMessageDialog(employeeGUI, "Can not add any more records to the file", "Error", JOptionPane.ERROR_MESSAGE); return; } WhiteCollar whitecollar = new WhiteCollar(); whitecollar.setFname(values[0]); whitecollar.setLname(values[1]); whitecollar.setPhone(values[2]); whitecollar.setDept(values[3]); whitecollar.setHireDate(values[4]); for (int i = 0; i < 20; i++){ if (staff[i] == null){ staff[i] = whitecollar; break; } } whiteCollarGUI.clearFields(); } /** Main method to execute the program */ public static void main(String [] args){ EmpGUI frame = new EmpGUI(); } }