package com.floreantpos.bo.ui.explorer; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; import javax.swing.JButton; import javax.swing.JScrollPane; import javax.swing.JTable; import com.floreantpos.main.Application; import com.floreantpos.model.MenuItem; import com.floreantpos.model.dao.MenuItemDAO; import com.floreantpos.swing.MessageDialog; import com.floreantpos.swing.TransparentPanel; import com.floreantpos.ui.PosTableRenderer; import com.floreantpos.ui.dialog.BeanEditorDialog; import com.floreantpos.ui.dialog.ConfirmDeleteDialog; import com.floreantpos.ui.model.MenuItemForm; public class MenuItemExplorer extends TransparentPanel { private List<MenuItem> itemList; private JTable table; private MenuItemExplorerTableModel tableModel; private String currencySymbol; public MenuItemExplorer() { currencySymbol = Application.getCurrencySymbol(); MenuItemDAO dao = new MenuItemDAO(); itemList = dao.findAll(); tableModel = new MenuItemExplorerTableModel(); tableModel.setRows(itemList); table = new JTable(tableModel); table.setDefaultRenderer(Object.class, new PosTableRenderer()); setLayout(new BorderLayout(5, 5)); add(new JScrollPane(table)); ExplorerButtonPanel explorerButton = new ExplorerButtonPanel(); JButton editButton = explorerButton.getEditButton(); JButton addButton = explorerButton.getAddButton(); JButton deleteButton = explorerButton.getDeleteButton(); editButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { int index = table.getSelectedRow(); if (index < 0) return; MenuItem menuItem = itemList.get(index); menuItem = MenuItemDAO.getInstance().initialize(menuItem); itemList.set(index, menuItem); MenuItemForm editor = new MenuItemForm(menuItem); BeanEditorDialog dialog = new BeanEditorDialog(editor, Application.getInstance().getBackOfficeWindow(), true); dialog.open(); if (dialog.isCanceled()) return; table.repaint(); } catch (Throwable x) { MessageDialog.showError("An error has occured, please restart the application", x); } } }); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { MenuItemForm editor = new MenuItemForm(); BeanEditorDialog dialog = new BeanEditorDialog(editor, Application.getInstance().getBackOfficeWindow(), true); dialog.open(); if (dialog.isCanceled()) return; MenuItem foodItem = (MenuItem) editor.getBean(); tableModel.addMenuItem(foodItem); } catch (Throwable x) { MessageDialog.showError("An error has occured, please restart the application", x); } } }); deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { int index = table.getSelectedRow(); if (index < 0) return; if (ConfirmDeleteDialog.showMessage(MenuItemExplorer.this, "Sure Want to Delete?", "Delete") != ConfirmDeleteDialog.NO) { MenuItem category = itemList.get(index); MenuItemDAO foodItemDAO = new MenuItemDAO(); foodItemDAO.delete(category); tableModel.deleteMenuItem(category, index); } } catch (Throwable x) { MessageDialog.showError("An error has occured, please restart the application", x); } } }); TransparentPanel panel = new TransparentPanel(); panel.add(addButton); panel.add(editButton); panel.add(deleteButton); add(panel, BorderLayout.SOUTH); } class MenuItemExplorerTableModel extends ListTableModel { String[] columnNames = { "Id", "Name", "Price (" + currencySymbol + ")", "Visible", "Discount (%)", "Food Group", "Tax (%)" }; MenuItemExplorerTableModel(){ setColumnNames(columnNames); } public Object getValueAt(int rowIndex, int columnIndex) { MenuItem item = (MenuItem) rows.get(rowIndex); switch (columnIndex) { case 0: return String.valueOf(item.getId()); case 1: return item.getName(); case 2: return Double.valueOf(item.getPrice()); case 3: return item.isVisible(); case 4: return Double.valueOf(item.getDiscountRate()); case 5: if (item.getParent() != null) { return item.getParent().getName(); } return "<unassigned>"; case 6: if (item.getTax() != null) { return Double.valueOf(item.getTax().getRate()); } return "<unassigned>"; } return null; } public void addMenuItem(MenuItem menuItem) { super.addItem(menuItem); } public void deleteMenuItem(MenuItem category, int index) { super.deleteItem(index); } } }