/* * FoodItemEditor.java * * Created on August 2, 2006, 10:34 PM */ package com.floreantpos.ui.model; import java.awt.Dialog; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import javax.swing.table.AbstractTableModel; import org.hibernate.Hibernate; import org.hibernate.Session; import com.floreantpos.main.Application; import com.floreantpos.model.MenuGroup; import com.floreantpos.model.MenuItem; import com.floreantpos.model.MenuItemModifierGroup; import com.floreantpos.model.MenuItemShift; import com.floreantpos.model.Tax; import com.floreantpos.model.dao.MenuGroupDAO; import com.floreantpos.model.dao.MenuItemDAO; import com.floreantpos.model.dao.TaxDAO; import com.floreantpos.swing.ComboBoxModel; import com.floreantpos.swing.DoubleDocument; import com.floreantpos.swing.FixedLengthDocument; import com.floreantpos.swing.MessageDialog; import com.floreantpos.ui.BeanEditor; import com.floreantpos.ui.dialog.BeanEditorDialog; import com.floreantpos.ui.dialog.ConfirmDeleteDialog; import com.floreantpos.util.POSUtil; import com.floreantpos.util.ShiftUtil; /** * * @author MShahriar */ public class MenuItemForm extends BeanEditor implements ActionListener { ShiftTableModel shiftTableModel; /** Creates new form FoodItemEditor */ public MenuItemForm() throws Exception { this(new MenuItem()); tfDiscountRate.setDocument(new DoubleDocument()); } public MenuItemForm(MenuItem menuItem) throws Exception { initComponents(); tfName.setDocument(new FixedLengthDocument(30)); MenuGroupDAO foodGroupDAO = new MenuGroupDAO(); List<MenuGroup> foodGroups = foodGroupDAO.findAll(); cbGroup.setModel(new ComboBoxModel(foodGroups)); TaxDAO taxDAO = new TaxDAO(); List<Tax> taxes = taxDAO.findAll(); cbTax.setModel(new ComboBoxModel(taxes)); menuItemModifierGroups = menuItem.getMenuItemModiferGroups(); menuItemMGListModel = new MenuItemMGListModel(); tableTicketItemModifierGroups.setModel(menuItemMGListModel); shiftTable.setModel(shiftTableModel = new ShiftTableModel(menuItem.getShifts())); btnNewModifierGroup.addActionListener(this); btnEditModifierGroup.addActionListener(this); btnDeleteModifierGroup.addActionListener(this); btnAddShift.addActionListener(this); btnDeleteShift.addActionListener(this); setBean(menuItem); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents private void initComponents() { jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); tfName = new com.floreantpos.swing.FixedLengthTextField(); jLabel4 = new javax.swing.JLabel(); cbGroup = new javax.swing.JComboBox(); btnNewGroup = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); tfPrice = new javax.swing.JFormattedTextField(); jLabel6 = new javax.swing.JLabel(); cbTax = new javax.swing.JComboBox(); btnNewTax = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); tfDiscountRate = new javax.swing.JTextField(); chkVisible = new javax.swing.JCheckBox(); jPanel2 = new javax.swing.JPanel(); btnNewModifierGroup = new javax.swing.JButton(); btnDeleteModifierGroup = new javax.swing.JButton(); btnEditModifierGroup = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); tableTicketItemModifierGroups = new javax.swing.JTable(); jPanel3 = new javax.swing.JPanel(); btnDeleteShift = new javax.swing.JButton(); btnAddShift = new javax.swing.JButton(); jScrollPane2 = new javax.swing.JScrollPane(); shiftTable = new javax.swing.JTable(); jLabel1.setText("Name:"); jLabel4.setText("Group:"); btnNewGroup.setText("..."); btnNewGroup.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { doCreateNewGroup(evt); } }); jLabel3.setText("Price:"); tfPrice.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jLabel6.setText("Tax:"); btnNewTax.setText("..."); btnNewTax.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnNewTaxdoCreateNewTax(evt); } }); jLabel2.setText("Discount Rate:"); jLabel5.setText("%"); chkVisible.setText("Visible"); chkVisible.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); chkVisible.setMargin(new java.awt.Insets(0, 0, 0, 0)); org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel1Layout.createSequentialGroup() .addContainerGap() .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel3) .add(jPanel1Layout.createSequentialGroup() .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel4) .add(jLabel6) .add(jLabel2) .add(jLabel1)) .add(17, 17, 17) .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(tfName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 365, Short.MAX_VALUE) .add(jPanel1Layout.createSequentialGroup() .add(cbGroup, 0, 312, Short.MAX_VALUE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(btnNewGroup)) .add(jPanel1Layout.createSequentialGroup() .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) .add(tfDiscountRate) .add(org.jdesktop.layout.GroupLayout.TRAILING, cbTax, 0, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.TRAILING, tfPrice, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 162, Short.MAX_VALUE) .add(chkVisible)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(btnNewTax) .add(jLabel5)))))) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel1Layout.createSequentialGroup() .addContainerGap() .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel1) .add(tfName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel4) .add(btnNewGroup) .add(cbGroup, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel3) .add(tfPrice, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(jLabel2) .add(jLabel5) .add(tfDiscountRate, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(cbTax, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(btnNewTax) .add(jLabel6)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(chkVisible) .addContainerGap(157, Short.MAX_VALUE)) ); jTabbedPane1.addTab("General", jPanel1); btnNewModifierGroup.setText("Add"); btnNewModifierGroup.setActionCommand("AddModifierGroup"); btnNewModifierGroup.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnNewModifierGroupActionPerformed(evt); } }); btnDeleteModifierGroup.setText("Delete"); btnDeleteModifierGroup.setActionCommand("DeleteModifierGroup"); btnEditModifierGroup.setText("Edit"); btnEditModifierGroup.setActionCommand("EditModifierGroup"); tableTicketItemModifierGroups.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {}, {}, {}, {} }, new String [] { } )); jScrollPane1.setViewportView(tableTicketItemModifierGroups); org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2Layout.createSequentialGroup() .addContainerGap(280, Short.MAX_VALUE) .add(btnNewModifierGroup) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(btnEditModifierGroup) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(btnDeleteModifierGroup) .addContainerGap()) .add(jPanel2Layout.createSequentialGroup() .addContainerGap() .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 377, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addContainerGap(86, Short.MAX_VALUE)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2Layout.createSequentialGroup() .addContainerGap() .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 270, Short.MAX_VALUE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(btnDeleteModifierGroup) .add(btnEditModifierGroup) .add(btnNewModifierGroup)) .addContainerGap()) ); jTabbedPane1.addTab("Modifier Groups", jPanel2); btnDeleteShift.setText("Delete Shift"); btnAddShift.setText("Add Shift"); shiftTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane2.setViewportView(shiftTable); org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel3Layout.createSequentialGroup() .addContainerGap(76, Short.MAX_VALUE) .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, jScrollPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 387, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel3Layout.createSequentialGroup() .add(btnAddShift) .add(5, 5, 5) .add(btnDeleteShift))) .addContainerGap()) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jPanel3Layout.createSequentialGroup() .add(jScrollPane2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 281, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(btnAddShift) .add(btnDeleteShift)) .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Shifts", jPanel3); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .add(jTabbedPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(jTabbedPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 346, Short.MAX_VALUE) .addContainerGap()) ); }// </editor-fold>//GEN-END:initComponents private void btnNewTaxdoCreateNewTax(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNewTaxdoCreateNewTax BeanEditorDialog dialog = new BeanEditorDialog(new TaxForm(), Application.getInstance().getBackOfficeWindow(), true); dialog.open(); }//GEN-LAST:event_btnNewTaxdoCreateNewTax private void btnNewModifierGroupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNewModifierGroupActionPerformed }//GEN-LAST:event_btnNewModifierGroupActionPerformed private void doCreateNewGroup(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_doCreateNewGroup MenuGroupForm editor = new MenuGroupForm(); BeanEditorDialog dialog = new BeanEditorDialog(editor, getParentFrame(), true); dialog.open(); if (!dialog.isCanceled()) { MenuGroup foodGroup = (MenuGroup) editor.getBean(); ComboBoxModel model = (ComboBoxModel) cbGroup.getModel(); model.addElement(foodGroup); model.setSelectedItem(foodGroup); } }//GEN-LAST:event_doCreateNewGroup // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnAddShift; private javax.swing.JButton btnDeleteModifierGroup; private javax.swing.JButton btnDeleteShift; private javax.swing.JButton btnEditModifierGroup; private javax.swing.JButton btnNewGroup; private javax.swing.JButton btnNewModifierGroup; private javax.swing.JButton btnNewTax; private javax.swing.JComboBox cbGroup; private javax.swing.JComboBox cbTax; private javax.swing.JCheckBox chkVisible; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTable shiftTable; private javax.swing.JTable tableTicketItemModifierGroups; private javax.swing.JTextField tfDiscountRate; private com.floreantpos.swing.FixedLengthTextField tfName; private javax.swing.JFormattedTextField tfPrice; // End of variables declaration//GEN-END:variables private List<MenuItemModifierGroup> menuItemModifierGroups; private MenuItemMGListModel menuItemMGListModel; private void addMenuItemModifierGroup() { try { MenuItemModifierGroupForm form = new MenuItemModifierGroupForm(); BeanEditorDialog dialog = new BeanEditorDialog(form, getParentFrame(), true); dialog.open(); if (!dialog.isCanceled()) { MenuItemModifierGroup modifier = (MenuItemModifierGroup) form.getBean(); menuItemMGListModel.add(modifier); } } catch (Exception x) { MessageDialog.showError("An error has occured, please restart the application", x); } } private void editMenuItemModifierGroup() { try { int index = tableTicketItemModifierGroups.getSelectedRow(); if(index < 0) return; MenuItemModifierGroup menuItemModifierGroup = menuItemMGListModel.get(index); MenuItemModifierGroupForm form = new MenuItemModifierGroupForm(menuItemModifierGroup); BeanEditorDialog dialog = new BeanEditorDialog(form, getParentFrame(), true); dialog.open(); if (!dialog.isCanceled()) { menuItemMGListModel.fireTableDataChanged(); } } catch (Exception x) { MessageDialog.showError("An error has occured, please restart the application", x); } } private void deleteMenuItemModifierGroup() { try { int index = tableTicketItemModifierGroups.getSelectedRow(); if(index < 0) return; if(ConfirmDeleteDialog.showMessage(this, "Delete sure?", "Confirm") == ConfirmDeleteDialog.YES){ menuItemMGListModel.remove(index); } } catch (Exception x) { MessageDialog.showError("An error has occured, please restart the application", x); } } @Override public boolean save() { try { if(!updateModel()) return false; MenuItem menuItem = (MenuItem) getBean(); MenuItemDAO menuItemDAO = new MenuItemDAO(); menuItemDAO.saveOrUpdate(menuItem); } catch (Exception e) { MessageDialog.showError("An error occured while saving food item...", e); return false; } return true; } @Override public void dispose() { } @Override protected void updateView() { MenuItem menuItem = (MenuItem) getBean(); if(menuItem.getId() != null && !Hibernate.isInitialized(menuItem.getMenuItemModiferGroups())) { //initialize food item modifer groups. MenuItemDAO dao = new MenuItemDAO(); Session session = dao.getSession(); menuItem = (MenuItem) session.merge(menuItem); Hibernate.initialize(menuItem.getMenuItemModiferGroups()); session.close(); } tfName.setText(menuItem.getName()); tfPrice.setValue(Double.valueOf(menuItem.getPrice())); tfDiscountRate.setText(String.valueOf(menuItem.getDiscountRate())); chkVisible.setSelected(menuItem.isVisible()); if(menuItem.getId() == null) { // cbGroup.setSelectedIndex(0); // cbTax.setSelectedIndex(0); } else { cbGroup.setSelectedItem(menuItem.getParent()); cbTax.setSelectedItem(menuItem.getTax()); } } @Override protected boolean updateModel() { String itemName = tfName.getText(); if(POSUtil.isBlankOrNull(itemName)) { MessageDialog.showError("Name is required"); return false; } MenuItem menuItem = (MenuItem) getBean(); menuItem.setName(itemName); menuItem.setParent((MenuGroup) cbGroup.getSelectedItem()); menuItem.setPrice(Double.valueOf(tfPrice.getValue().toString()).doubleValue()); menuItem.setTax((Tax) cbTax.getSelectedItem()); menuItem.setVisible(chkVisible.isSelected()); try { menuItem.setDiscountRate(Double.parseDouble(tfDiscountRate.getText())); } catch (Exception x){} menuItem.setMenuItemModiferGroups(menuItemModifierGroups); menuItem.setShifts(shiftTableModel.getShifts()); return true; } public String getDisplayText() { MenuItem foodItem = (MenuItem) getBean(); if(foodItem.getId() == null) { return "New menu item"; } return "Edit menu item"; } class MenuItemMGListModel extends AbstractTableModel { String[] cn = {"Group Name", "Min Quantity", "Max Quantity"}; MenuItemMGListModel(){ } public MenuItemModifierGroup get(int index) { return menuItemModifierGroups.get(index); } public void add(MenuItemModifierGroup group) { if(menuItemModifierGroups == null) { menuItemModifierGroups = new ArrayList<MenuItemModifierGroup>(); } menuItemModifierGroups.add(group); fireTableDataChanged(); } public void remove(int index) { if(menuItemModifierGroups == null) { return; } menuItemModifierGroups.remove(index); fireTableDataChanged(); } public void remove(MenuItemModifierGroup group) { if(menuItemModifierGroups == null) { return; } menuItemModifierGroups.remove(group); fireTableDataChanged(); } public int getRowCount() { if(menuItemModifierGroups == null) return 0; return menuItemModifierGroups.size(); } public int getColumnCount() { return cn.length; } @Override public String getColumnName(int column) { return cn[column]; } public Object getValueAt(int rowIndex, int columnIndex) { MenuItemModifierGroup menuItemModifierGroup = menuItemModifierGroups.get(rowIndex); switch(columnIndex) { case 0: return menuItemModifierGroup.getModifierGroup().getName(); case 1: return Integer.valueOf(menuItemModifierGroup.getMinQuantity()); case 2: return Integer.valueOf(menuItemModifierGroup.getMaxQuantity()); } return null; } } class ShiftTableModel extends AbstractTableModel { List<MenuItemShift> shifts; String[] cn = {"Start Time", "End Time", "Price"}; Calendar calendar = Calendar.getInstance(); ShiftTableModel(List<MenuItemShift> shifts){ if(shifts == null) { this.shifts = new ArrayList<MenuItemShift>(); } else { this.shifts = new ArrayList<MenuItemShift>(shifts); } } public MenuItemShift get(int index) { return shifts.get(index); } public void add(MenuItemShift group) { if(shifts == null) { shifts = new ArrayList<MenuItemShift>(); } shifts.add(group); fireTableDataChanged(); } public void remove(int index) { if(shifts == null) { return; } shifts.remove(index); fireTableDataChanged(); } public void remove(MenuItemShift group) { if(shifts == null) { return; } shifts.remove(group); fireTableDataChanged(); } public int getRowCount() { if(shifts == null) return 0; return shifts.size(); } public int getColumnCount() { return cn.length; } @Override public String getColumnName(int column) { return cn[column]; } public List<MenuItemShift> getShifts() { return shifts; } public Object getValueAt(int rowIndex, int columnIndex) { MenuItemShift shift = shifts.get(rowIndex); switch(columnIndex) { case 0: return ShiftUtil.buildShiftTimeRepresentation(shift.getShift().getStartTime()); case 1: return ShiftUtil.buildShiftTimeRepresentation(shift.getShift().getEndTime()); case 2: return String.valueOf(shift.getShiftPrice()); } return null; } } private void addShift() { //TODO: ??? MenuItemShiftDialog dialog = new MenuItemShiftDialog((Dialog) this.getTopLevelAncestor()); dialog.setSize(350, 220); dialog.open(); if(!dialog.isCanceled()) { MenuItemShift menuItemShift = dialog.getMenuItemShift(); shiftTableModel.add(menuItemShift); } } private void deleteShift() { int selectedRow = shiftTable.getSelectedRow(); if(selectedRow >= 0) { shiftTableModel.remove(selectedRow); } } public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if(actionCommand.equals("AddModifierGroup")) { addMenuItemModifierGroup(); } else if(actionCommand.equals("EditModifierGroup")) { editMenuItemModifierGroup(); } else if(actionCommand.equals("DeleteModifierGroup")) { deleteMenuItemModifierGroup(); } else if(actionCommand.equals("Add Shift")) { addShift(); } else if(actionCommand.equals("Delete Shift")) { deleteShift(); } } }