private void initElements() {		
		// Open the JFrame
		frmAdjustersList = new JFrame();
		frmAdjustersList.setTitle("Adjusters List");
		frmAdjustersList.setBounds(0, 0, 600, 558);
		frmAdjustersList.setLocationRelativeTo(null);
		frmAdjustersList.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmAdjustersList.setResizable(false);
		
		btnCancelSearch = new JButton("Cancel");
		btnCancelSearch.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// Clear search bar
				searchField.setText("");
				
				// Clear filter
				sorter.setRowFilter(new CaseInsensitiveFilter(""));	
				
				// Set main GUI state
				setGuiState(GuiState.MAIN);
			}
		});
		btnCancelSearch.setBounds(495, 445, 89, 23);
		frmAdjustersList.getContentPane().add(btnCancelSearch);
		
		btnAdd = new JButton("Add adjuster");
		btnAdd.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// Set add entry GUI state
				setGuiState(GuiState.ADD);
			}
		});
		btnAdd.setBounds(160, 445, 135, 23);
		frmAdjustersList.getContentPane().add(btnAdd);
		
		btnRemove = new JButton("Remove adjuster");
		btnRemove.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// Create an arraylist to sort the selected rows
				ArrayList<Integer> rowList = new ArrayList<Integer>();
				
				// Get row numbers
				int[] rows = dataTable.getSelectedRows();
				
				// Convert array to ArrayList
				for(int row: rows){
					rowList.add(dataTable.convertRowIndexToModel(row));
				}
				
				// We want to remove the highest order rows first so we don't go out of bounds due to changing indicies
				Collections.sort(rowList,Collections.reverseOrder());

				for(int row: rowList)
				{
					// Delete from DB
					connection.deleteRow(new QueryData(tableModel.getRowAt(row)));
					tableModel.getTableModelListeners();
					
					// Delete from table
					tableModel.removeRow(row);
				}

			}
		});
		btnRemove.setBounds(305, 445, 135, 23);
		frmAdjustersList.getContentPane().add(btnRemove);
		
		btnOk = new JButton("Ok");
		btnOk.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// Get data from text fields
				String company = companyField.getText();
				String name = nameField.getText();
				String phone = phoneField.getText();
				String fax = faxField.getText();
				
				// Check if company or name are filled with spaces
				String compCheck = company.replaceAll(" ", "");
				String nameCheck = name.replaceAll(" ", "");
				
				// Check for empty company name
				if (compCheck.equals(""))
				{
					// Display empty fields dialog
					JDialog empty = new EmptyField();
					empty.setLocationRelativeTo(frmAdjustersList);
					empty.setVisible(true);		
					
					// Check which string to clear
					if (compCheck.equals(""))
					{
						companyField.setText("");
					}					
				}
				else
				{
					// Check if name field empty
					if(nameCheck.equals(""))
					{
						name = "N/A";
					}
					// Check if phone field empty
					if(phone.equals(""))
					{
						phone = "N/A";
					}
					
					// Check if fax field is empty
					if(fax.equals(""))
					{
						fax = "N/A";
					}
					
					// Add entry to table
					tableModel.addRow(company, name, phone, fax);
					
					// Add entry to DB
					connection.insertData(company, name, phone, fax);
					
					// Clear text fields
					companyField.setText("");
					nameField.setText("");
					phoneField.setText("");
					faxField.setText("");

					// Set main GUI state
					setGuiState(GuiState.MAIN);
				}				
			}
		});
		btnOk.setBounds(495, 445, 89, 23);
		frmAdjustersList.getContentPane().add(btnOk);
		
		btnCancel = new JButton("Cancel");
		btnCancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// Clear text fields
				companyField.setText("");
				nameField.setText("");
				phoneField.setText("");
				faxField.setText("");
				
				// Set main GUI state
				setGuiState(GuiState.MAIN);
			}
		});
		btnCancel.setBounds(495, 472, 89, 23);
		frmAdjustersList.getContentPane().add(btnCancel);
		
		btnSearch = new JButton("Search");
		btnSearch.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// Set search GUI state
				setGuiState(GuiState.SEARCH);
			}
		});
		btnSearch.setBounds(231, 479, 135, 23);
		frmAdjustersList.getContentPane().add(btnSearch);
		
		// Menu bar
		JMenuBar menuBar = new JMenuBar();
		menuBar.setBounds(0, 0, 600, 20);
		frmAdjustersList.getContentPane().add(menuBar);
		
		// Menu elements
		JMenuItem mntmPrint = new JMenuItem("Print");
		mntmPrint.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				// Open print dialog
				try {
					dataTable.print();
				} catch (PrinterException e) {
					// I'm not sure why this would happen
				}
			}
		});
		menuBar.add(mntmPrint);
		
		mntmHelp = new JMenuItem("Help");
		mntmHelp.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// Open help dialog
				JDialog help = new Help();
				help.setLocationRelativeTo(frmAdjustersList);
				help.setVisible(true);
			}
		});
		menuBar.add(mntmHelp);
		
		mntmAbout = new JMenuItem("About");
		mntmAbout.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// Open about dialog
				JDialog about = new About();
				about.setLocationRelativeTo(frmAdjustersList);
				about.setVisible(true);
			}
		});
		menuBar.add(mntmAbout);
		
		mntmQuit = new JMenuItem("Quit");
		mntmQuit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				// Close program
				System.exit(0);
			}
		});
		menuBar.add(mntmQuit);
		
		// JLables
		lblCompany = new JLabel("Company");
		lblCompany.setBounds(62, 423, 60, 20);
		frmAdjustersList.getContentPane().add(lblCompany);
		
		lblName = new JLabel("Name");
		lblName.setBounds(62, 448, 60, 20);
		frmAdjustersList.getContentPane().add(lblName);
		
		lblPhone = new JLabel("Phone");
		lblPhone.setBounds(62, 473, 60, 20);
		frmAdjustersList.getContentPane().add(lblPhone);
		
		lblFax = new JLabel("Fax");
		lblFax.setBounds(62, 498, 60, 20);
		frmAdjustersList.getContentPane().add(lblFax);
		
		// JTextFields
		companyField = new JTextField();
		companyField.setBounds(122, 423, 350, 20);
		frmAdjustersList.getContentPane().add(companyField);
		companyField.setColumns(10);
		
		nameField = new JTextField();
		nameField.setColumns(10);
		nameField.setBounds(122, 448, 350, 20);
		frmAdjustersList.getContentPane().add(nameField);
		
		phoneField = new JTextField();
		phoneField.setColumns(10);
		phoneField.setBounds(122, 473, 350, 20);
		frmAdjustersList.getContentPane().add(phoneField);
		
		faxField = new JTextField();
		faxField.setColumns(10);
		faxField.setBounds(122, 498, 350, 20);
		frmAdjustersList.getContentPane().add(faxField);
		
		searchField = new JTextField();
		searchField.setToolTipText("Type text to search");
		searchField.setColumns(10);
		searchField.setBounds(30, 446, 350, 20);
		searchField.getDocument().addDocumentListener(new DocumentListener() {
			// Implementing all three methods so that when any key is added or removed the filter is applied
			@Override
			public void changedUpdate(DocumentEvent arg0) {
				// Get text from search field
				String search = searchField.getText();
				// Apply filter				
				sorter.setRowFilter(new CaseInsensitiveFilter(search));				
			}

			@Override
			public void insertUpdate(DocumentEvent arg0) {
				// Get text from search field
				String search = searchField.getText();
				// Apply filter
				sorter.setRowFilter(new CaseInsensitiveFilter(search));
				
			}

			@Override
			public void removeUpdate(DocumentEvent arg0) {
				// Get text from search field
				String search = searchField.getText();
				// Apply filter
				sorter.setRowFilter(new CaseInsensitiveFilter(search));
				
			}

		});
		frmAdjustersList.getContentPane().add(searchField);
		
		// Set main GUI state
		setGuiState(GuiState.MAIN);
		
		// Dummy buttons
		// TODO: Find a better way to make the other menu elements smaller		
		menuItem_1 = new JMenuItem("");
		menuBar.add(menuItem_1);
		
		menuItem_2 = new JMenuItem("");
		menuBar.add(menuItem_2);
		
		menuItem_3 = new JMenuItem("");
		menuBar.add(menuItem_3);
		
		menuItem_4 = new JMenuItem("");
		menuBar.add(menuItem_4);
		
		menuItem_5 = new JMenuItem("");
		menuBar.add(menuItem_5);
		
		menuItem_6 = new JMenuItem("");
		menuBar.add(menuItem_6);
	}