package cz.cvut.fel.restauracefel.manager.manager_gui; import cz.cvut.fel.restauracefel.manager.ManagerController.MenuItemTypeResult; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.FileNotFoundException; import java.rmi.NotBoundException; import java.rmi.RemoteException; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import cz.cvut.fel.restauracefel.manager_service.ResultTableModel; /** * Trida reprezentujici dialog pro praci s kategoriemi polozek menu (MenuItemType). * * @author Jarda */ public class MenuItemTypeDialog extends AbstractDialog { private JScrollPane paneMenuItemType = null; private JScrollPane paneTable = null; private JTable table = null; private MenuItemTypeForm menuItemTypeForm = null; private int row = -1; private ManagerViewController view; /** * Konstruktor tridy MenuItemTypeDialog. * * @param parent instance tridy JFrame jenz vytvorila tento formular * @param modal urcuje, zda bude okno modalni * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ public MenuItemTypeDialog(JFrame parent, boolean modal) { super(parent, modal); super.setTitle("Kategorie položek menu"); view = ManagerViewController.getInstance(); setDefaultCloseOperation(DISPOSE_ON_CLOSE); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); int y = (int) ((dim.getHeight() - 550) / 2); int x = (int) ((dim.getWidth() - 450) / 2); setBounds(x, y, 450, 550); initComponents(); initTable(); refresh(); } /** * Metoda inicializuje komponenty na JDialogu. * * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ @Override protected void initComponents() { paneMenuItemType = new JScrollPane(); paneTable = new JScrollPane(); table = new JTable(); menuItemTypeForm = new MenuItemTypeForm(); paneMenuItemType.getViewport().add(menuItemTypeForm); paneTable.getViewport().add(table); Container con = getContentPane(); con.setLayout(new BorderLayout()); con.add(paneMenuItemType, BorderLayout.NORTH); con.add(paneTable, BorderLayout.CENTER); menuItemTypeForm.getInsertButton().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { insertAction(); } }); menuItemTypeForm.getDeleteButton().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { deleteAction(); } }); } /** * Metoda pro vkladani novych kategorii polozek menu do systemu. * * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ public void insertAction() { String name = menuItemTypeForm.getTextFieldName().getText(); int menuItemTypeId = -1; if(row != -1){ menuItemTypeId = (Integer) table.getModel().getValueAt(row, 0); } if(view.insertMenuItemType(name, menuItemTypeId) == MenuItemTypeResult.Succesful){ menuItemTypeForm.clearFields(); refresh(); } } /** * Metoda pro mazani kategorii polozek menu ze systemu. * * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ public void deleteAction() { row = table.getSelectedRow(); int menuItemTypeId = (Integer) table.getModel().getValueAt(row, 0); view.deleteMenuItemType(menuItemTypeId); refresh(); } /** * Metoda inicializujici tabulku na danem JDialogu. * * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ @Override protected void initTable() { table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS); table.setRowSelectionAllowed(true); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { row = table.getSelectedRow(); if (row == -1) { menuItemTypeForm.clearFields(); menuItemTypeForm.getInsertButton().setEnabled(true); menuItemTypeForm.getDeleteButton().setEnabled(false); menuItemTypeForm.getInsertButton().setText("Vytvořit kategorii"); menuItemTypeForm.getInsertButton().setToolTipText("Vytvořit novou kategorii položek menu"); } else { menuItemTypeForm.getTextFieldName().setText((String)table.getModel().getValueAt(row, 1)); menuItemTypeForm.getDeleteButton().setEnabled(true); menuItemTypeForm.getInsertButton().setText("Aktualizovat"); } } }); //refresh(); } /** * Metoda aktualizujici zaznamy v dane tabulce na tomto JDialogu. * * @throws java.io.FileNotFoundException * @throws java.rmi.NotBoundException * @throws java.rmi.RemoteException */ @Override protected void refresh() { ResultTableModel rtm = new ResultTableModel(); Object[][] menuMenus = view.getMenuItemTypes(); rtm.setColumnData(ResultTableModel.namesMenuItemType); rtm.setTableData(menuMenus); table.setModel(rtm); } }