package panels; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import frames.IMainFrame; import resources.Customer; import resources.CustomersModel; public class MainPanel extends JPanel { private IMainFrame mainFrame; private CustomersModel model; private JTable panelTable; private DefaultTableModel panelTableModel; private String[] columnNames = { "name", "points", "total" }; private JButton addButton; private JButton removeButton; private JButton showHistoryButton; public MainPanel(IMainFrame mainFrame, CustomersModel model) { super(new BorderLayout()); this.mainFrame = mainFrame; this.model = model; panelTableModel = new DefaultTableModel(columnNames, 0); panelTable = new JTable(panelTableModel); panelTable.setDefaultEditor(Object.class, null); addButton = new JButton("Add"); removeButton = new JButton("Remove"); showHistoryButton = new JButton("Show History"); addButton.addActionListener(new AddActionHandler()); removeButton.addActionListener(new RemoveActionHandler()); showHistoryButton.addActionListener(new ShowHistoryActionHandler()); JPanel buttonPanel = new JPanel(); buttonPanel.add(addButton, BorderLayout.WEST); buttonPanel.add(removeButton, BorderLayout.EAST); add(buttonPanel, BorderLayout.CENTER); JPanel showButtonPanel = new JPanel(); FlowLayout flowLayout = new FlowLayout(); showButtonPanel.add(showHistoryButton, BorderLayout.SOUTH); showButtonPanel.setLayout(flowLayout); add(showButtonPanel, BorderLayout.SOUTH); JScrollPane listScrollPane = new JScrollPane(panelTable); add(listScrollPane, BorderLayout.NORTH); } public void updateTableByTransition() { for (int i = 0; i < panelTableModel.getRowCount(); i++) { panelTableModel.setValueAt(model.getCustomerById(i).getName(), i, 0); panelTableModel.setValueAt(model.getCustomerById(i).getPoints(), i, 1); panelTableModel.setValueAt(model.getCustomerById(i).getTotal(), i, 2); } } private void transitionToHistory(int index) { mainFrame.showHistoryPanel(index); } private Customer createNewCustomerByName(String name) { Customer customer = new Customer(name + model.getCustomersCount()); return customer; } private Object[] generateCustomerRow(Customer customer) { Object[] data = { customer.getName(), customer.getPoints(), customer.getTotal() }; return data; } private class AddActionHandler implements ActionListener { public void actionPerformed(ActionEvent e) { Customer customer = createNewCustomerByName("name"); model.addCustomer(customer); panelTableModel.addRow(generateCustomerRow(customer)); } } private class RemoveActionHandler implements ActionListener { public void actionPerformed(ActionEvent e) { if (panelTable.getSelectedRow() < 0) return; if (1 < panelTable.getRowCount()) { model.removeCustomer(panelTable.getSelectedRow()); panelTableModel.removeRow(panelTable.getSelectedRow()); } } } private class ShowHistoryActionHandler implements ActionListener { public void actionPerformed(ActionEvent e) { if (-1 < panelTable.getSelectedRow()) transitionToHistory(panelTable.getSelectedRow()); } } }