package com.floreantpos.bo.ui.explorer; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JTable; import com.floreantpos.PosException; import com.floreantpos.main.Application; import com.floreantpos.model.ActionHistory; import com.floreantpos.model.Gratuity; import com.floreantpos.model.User; import com.floreantpos.model.dao.ActionHistoryDAO; import com.floreantpos.model.dao.GratuityDAO; import com.floreantpos.model.dao.UserDAO; import com.floreantpos.swing.ListComboBoxModel; import com.floreantpos.swing.TransparentPanel; import com.floreantpos.ui.dialog.POSMessageDialog; import com.intellij.uiDesigner.core.GridConstraints; import com.intellij.uiDesigner.core.GridLayoutManager; /** * Created by IntelliJ IDEA. * User: mshahriar * Date: Feb 19, 2007 * Time: 12:06:24 AM * To change this template use File | Settings | File Templates. */ public class GratuityViewer2 extends TransparentPanel implements ActionListener { private JComboBox cbUsers; private JButton btnGo; private JLabel lblUserId; private JLabel lblUserName; private JLabel lblTotalGratuity; private JTable tableGratuityViewer; private JButton btnPay; private JPanel contentPane; private GratuityTableModel gratuityTableModel; /** * Creates new form GratuityViewer */ public GratuityViewer2() { UserDAO userDAO = new UserDAO(); List<User> users = userDAO.findAll(); cbUsers.setModel(new ListComboBoxModel(users)); tableGratuityViewer.setModel(gratuityTableModel = new GratuityTableModel(null)); btnGo.addActionListener(this); btnPay.setEnabled(false); btnPay.addActionListener(this); setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); setLayout(new BorderLayout()); add(contentPane); } { // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! <<< // DO NOT EDIT OR ADD ANY CODE HERE! $$$setupUI$$$(); } /** * Method generated by IntelliJ IDEA GUI Designer * >>> IMPORTANT!! <<< * DO NOT edit this method OR call it in your code! * * @noinspection ALL */ private void $$$setupUI$$$() { contentPane = new JPanel(); contentPane.setLayout(new GridLayoutManager(9, 3, new Insets(0, 0, 0, 0), -1, -1)); final JLabel label1 = new JLabel(); label1.setText("Select User:"); contentPane.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); cbUsers = new JComboBox(); contentPane.add(cbUsers, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(406, 22), null, 0, false)); btnGo = new JButton(); btnGo.setText("GO"); contentPane.add(btnGo, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JSeparator separator1 = new JSeparator(); contentPane.add(separator1, new GridConstraints(1, 0, 1, 3, GridConstraints.ANCHOR_NORTH, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label2 = new JLabel(); label2.setText("User ID:"); contentPane.add(label2, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); lblUserId = new JLabel(); lblUserId.setText("Label"); contentPane.add(lblUserId, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(406, 14), null, 0, false)); final JLabel label3 = new JLabel(); label3.setText("User Name:"); contentPane.add(label3, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); lblUserName = new JLabel(); lblUserName.setText("Label"); contentPane.add(lblUserName, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(406, 14), null, 0, false)); final JLabel label4 = new JLabel(); label4.setText("Total Gratuity:"); contentPane.add(label4, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); lblTotalGratuity = new JLabel(); lblTotalGratuity.setText("Label"); contentPane.add(lblTotalGratuity, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(406, 14), null, 0, false)); final JLabel label5 = new JLabel(); label5.setText("Details"); contentPane.add(label5, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JSeparator separator2 = new JSeparator(); contentPane.add(separator2, new GridConstraints(5, 1, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JScrollPane scrollPane1 = new JScrollPane(); contentPane.add(scrollPane1, new GridConstraints(6, 0, 1, 3, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); tableGratuityViewer = new JTable(); scrollPane1.setViewportView(tableGratuityViewer); final JSeparator separator3 = new JSeparator(); contentPane.add(separator3, new GridConstraints(7, 0, 1, 3, GridConstraints.ANCHOR_SOUTH, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); btnPay = new JButton(); btnPay.setText("PAY"); contentPane.add(btnPay, new GridConstraints(8, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); } /** * @noinspection ALL */ public JComponent $$$getRootComponent$$$() { return contentPane; } private class GratuityTableModel extends ListTableModel { public GratuityTableModel(List<Gratuity> gratuities) { super(new String[]{"First Name", "Last Name", "Ticket ID", "Amount"}, gratuities); } public Object getValueAt(int rowIndex, int columnIndex) { Gratuity gratuity = (Gratuity) rows.get(rowIndex); switch (columnIndex) { case 0: return gratuity.getOwner().getFirstName(); case 1: return gratuity.getOwner().getLastName(); case 2: return gratuity.getTicket().getId(); case 3: return Application.formatNumber(gratuity.getAmount()); } return null; } } public void showGratuity(User user) { GratuityDAO dao = new GratuityDAO(); List<Gratuity> gratuities = dao.findByUser(user); double totalGratuity = 0; for (Gratuity gratuity : gratuities) { totalGratuity += gratuity.getAmount(); } lblUserId.setText(String.valueOf(user.getUserId())); lblUserName.setText(user.getFirstName() + " " + user.getLastName()); lblTotalGratuity.setText(Application.formatNumber(totalGratuity)); gratuityTableModel.setRows(gratuities); if (gratuities.size() > 0) { btnPay.setEnabled(true); } else { btnPay.setEnabled(false); } } public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if ("GO".equalsIgnoreCase(actionCommand)) { User user = (User) cbUsers.getSelectedItem(); if (user != null) { showGratuity(user); } } if ("PAY".equalsIgnoreCase(actionCommand)) { try { List rows = gratuityTableModel.getRows(); if (rows != null) { new GratuityDAO().payGratuities(rows); } btnPay.setEnabled(false); // PAY TIPS ACTION String actionMessage = "PAY TIPS"; ActionHistoryDAO.getInstance().saveHistory(Application.getCurrentUser(), ActionHistory.PAY_TIPS, actionMessage); } catch (PosException ex) { POSMessageDialog.showError(contentPane, ex.getMessage(), ex); } } } }