private void createProductTable() {
		
		MouseAdapter mouseListener = new MouseAdapter() {
			
			@Override
			public void mousePressed(MouseEvent e) {
				handleMouseEvent(e);
			}
			
			@Override
			public void mouseReleased(MouseEvent e) {
				handleMouseEvent(e);
			}
			
			private void handleMouseEvent(MouseEvent e) {
		 		if (eventsAreDisabled()) {
					return;
				}
				if (e.getSource() == _productTable) {
					if (e.isPopupTrigger()) {
						enableProductMenuItems();
						_productMenu.show(e.getComponent(), e.getX(), e.getY());
					}
				}
				else if (e.getSource() == _productTableHeader) {
					if (e.isPopupTrigger()) {
						enableProductMenuItems();
						_productMenu.show(e.getComponent(), e.getX(), e.getY());
					}
//					else if (e.getButton() == MouseEvent.BUTTON1 &&
//							e.getID() == MouseEvent.MOUSE_PRESSED) {
//						int clickedColumnIndex = 
//							commentsColumnModel.getColumnIndexAtX(e.getX());
//						if (clickedColumnIndex >= 0) {
//							updateCommentSortOrder(clickedColumnIndex);
//						}
//					}
				}
			}
		};

		_productTableColumnModel = new DefaultTableColumnModel();
		TableColumn column = createTableColumn(0, "Description", ContentFontSize);
		_productTableColumnModel.addColumn(column);
		column = createTableColumn(1, "Size", ContentFontSize);
		_productTableColumnModel.addColumn(column);
		column = createTableColumn(2, "Count", ContentFontSize);
		_productTableColumnModel.addColumn(column);
		column = createTableColumn(3, "Shelf Life", ContentFontSize);
		_productTableColumnModel.addColumn(column);
		column = createTableColumn(4, "3-Month Supply", ContentFontSize);
		_productTableColumnModel.addColumn(column);
		column = createTableColumn(5, "Product Barcode", ContentFontSize);
		_productTableColumnModel.addColumn(column);
		
		_productTableModel = new DefaultTableModel(0, 6) {
			@SuppressWarnings("serial")
			public boolean isCellEditable(int row, int column) {
				return false;
			}
		};
		
		_productTable = new JTable(_productTableModel, _productTableColumnModel);
		_productTable.setDragEnabled(true);
		_productTable.setTransferHandler(new ProductTransferHandler());
		_productTable.setFont(createFont(_productTable.getFont(), ContentFontSize));
		_productTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		_productTable.getSelectionModel().addListSelectionListener(
				new ListSelectionListener() {
					public void valueChanged(ListSelectionEvent evt) {
						if (eventsAreDisabled()) {
							return;
						}
						if (evt.getValueIsAdjusting()) {
							return;
						}
						getController().productSelectionChanged();
					}
				});
		_productTable.addMouseListener(mouseListener);
		
		_productTableHeader = _productTable.getTableHeader();
		_productTableHeader.setReorderingAllowed(false);
		_productTableHeader.addMouseListener(mouseListener);
		_productTableHeader.setBackground(Color.blue);
		
		_productTableScrollPane = new JScrollPane(_productTable, 
									JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
									JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		//_productTableScrollPane.setPreferredSize(new Dimension(600, 300));
		_productTableScrollPane.setBorder(createTitledBorder("Products", BorderFontSize));

		ActionListener actionListener = new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				if (evt.getSource() == _editProductMenuItem) {
					editProduct();
				}
				else if (evt.getSource() == _deleteProductMenuItem) {
					deleteProduct();
				}
			}
		};

		_productMenu = new JPopupMenu();
		_editProductMenuItem = new JMenuItem("Edit Product...");
		_editProductMenuItem.addActionListener(actionListener);
		_productMenu.add(_editProductMenuItem);
		_deleteProductMenuItem = new JMenuItem("Delete Product");
		_deleteProductMenuItem.addActionListener(actionListener);
		_productMenu.add(_deleteProductMenuItem);
	}