package frames;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;

import panels.MainPanel;
import panels.ShowHistoryPanel;
import resources.CustomersModel;

//-------------------------------------------------------------------------
// 
public class MainFrame extends JFrame implements IMainFrame {
	
	// model
	private CustomersModel model;

	// cache
	private MainPanel mainPanel;
	private ShowHistoryPanel historyPanel;

	// -------------------------------------------------------------------------
	// -------------------------------------------------------------------------
	// constructor
	// -------------------------------------------------------------------------
	//
	public MainFrame() {
		super("POS");

		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// initialize model
		model = new CustomersModel();
		
		// initialize Panels
		mainPanel = new MainPanel(this, model);
		historyPanel = new ShowHistoryPanel(this, model);

		// set visible
		historyPanel.setVisible(false);
		this.add(historyPanel, BorderLayout.CENTER);

		mainPanel.setVisible(true);
		this.add(mainPanel, BorderLayout.CENTER);
		
		// adjust window size
		this.pack();
	}

	// -------------------------------------------------------------------------
	// 
	public void showMainPanel() {
		getContentPane().removeAll();
		
		mainPanel.updateTableByTransition();
		
		add(mainPanel);
		validate();
		repaint();
	}

	// -------------------------------------------------------------------------
	//
	public void showHistoryPanel(int index) {
		getContentPane().removeAll();
		
		historyPanel.setVisible(true);
		historyPanel.updateListModelByIndex(index);		
		
		add(historyPanel);
		validate();
		repaint();
	}

	public CustomersModel getModel() {
		return model;
	}

	public MainPanel getMainPanel() {
		return mainPanel;
	}

	public ShowHistoryPanel getHistoryPanel() {
		return historyPanel;
	}
}
