public void actionPerformed(ActionEvent ae) {
		String action = ae.getActionCommand();
		if(action.equals("open")) {
			SaveManager.chooseOpen();
			frame.repaint();
			updateTable();
		} else if(action.equals("save")) {
			SaveManager.chooseSave();
			frame.repaint();
		} else if(action.equals("about")) {
			derpMode = true;
			JOptionPane.showMessageDialog(frame, "This database was created by Nick Burnett and Jesse King\nfor FIRST Team 1277, the Robotomies.", "Version 1.0", JOptionPane.PLAIN_MESSAGE);
			derpMode = false;
			table.setBackground(new Color(230,230,230));
		} else if(action.equals("exit")) {
			running = false;
			destroy();
			//I don't know why setting running to false isn't doing anything...
		} else if(action.equals("add_part")) {
			PartEditor.addPartDialog();
		} else if(action.equals("remove_part")) {
			int id = table.getSelectedRow();
			Toolkit.getDefaultToolkit().beep();
			if(id == -1) {
				JOptionPane.showMessageDialog(frame, "You must select a Part to remove.", "Whoops.", JOptionPane.PLAIN_MESSAGE);
			} else {
				Part p = partList.get(id);
				int result = JOptionPane.showConfirmDialog(frame, "Are you sure that you want to delete " + p.name + "?" , "Yo Dawg", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
				if(result == 0) {
					partList.remove(id);
					tableModel.removeRow(id);
					if(table.getRowCount() > 1) {
						table.removeRowSelectionInterval(0, table.getRowCount()-1);
					}
				}
			}
		} else if(action.equals("edit_part")) {
			if (table.getSelectedRow()!=-1)
			PartEditor.editPartDialog(partList.get(table.getSelectedRow()));
		} else if(action.equals("checkout")) {
			int id = table.getSelectedRow();
			if(id == -1) {
				JOptionPane.showMessageDialog(frame, "What are you trying to pull here?", "Whoops.", JOptionPane.ERROR_MESSAGE);
			} else {
				Part part = partList.get(id);
				if(part.checkedOut) {
					int result = JOptionPane.showConfirmDialog(frame, "Welcome back " + part.whoChecked + ". Are you returning this part?", "Part Checkout", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
					if(result == 0) {
						part.checkedOut = false;
						part.whoChecked = ""; //For safety
						tableModel.setValueAt("Available", id, 5);
					}
					if(result == 2) { 
						JOptionPane.showMessageDialog(frame, "So, you're the type of person who presses cancel?", "Get with the times", JOptionPane.PLAIN_MESSAGE);
					}
				} else {
					String name = JOptionPane.showInputDialog(frame, "Please enter your name below.", "", JOptionPane.PLAIN_MESSAGE);
					if(name!=null) {
						if(name.equals("")) {
							JOptionPane.showMessageDialog(frame, "Sorry, we only give parts out to people with names.", "C'mon.", JOptionPane.PLAIN_MESSAGE);
							actionPerformed(ae);
						} else {
							part.checkedOut = true;
							part.whoChecked = name;
							tableModel.setValueAt(name, id, 5);
						}
					}
				}
			}
		} else if (action.equals("new")) {
			partList = new ArrayList<Part>();
			updateTable();
		}
		else if (action.equals("addMany")) {
			boolean flag = true;
			while(flag) {
				flag = PartEditor.addPartDialog();
			}
		}
	}