Newer
Older
POS_for_GUI / src / panels / MainPanel.java
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());
		}
	}
}