import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;

public class UI_Frame extends JFrame{
	
	//ÇÁ·¹ÀÓ¿¡ ¹ÚÈú ´Ù¼¸°³ÀÇ ÆÐ³Î ¼±¾ð	
	private UI_TableStatus tableStatusPanel;
	private UI_OrderStatus orderStatusPanel;
	private UI_MenuStatus menuStatusPanel;
	private UI_Enrollment_Inquiry enrollment_inquiry;
	private UI_MenuBar menuBar;
	
	// ½Ä´ç ÁÖ¹® °ü¸® ·¹ÀÌºí
	private JLabel title_label;
	
	UI_Frame(){		
		// ·¹ÀÌ¾Æ¿ô ¼±¾ð ¹× »ý¼º
		GridBagLayout gbl = new GridBagLayout();
		GridBagConstraints gbc = new GridBagConstraints();
		setLayout(gbl); //ÇöÀç ÇÁ·¹ÀÓ¿¡ ·¹ÀÌ¾Æ¿ô ¼ÂÆÃ
		
		/* ½Ä´ç ÁÖ¹® °ü¸® label ¼ÂÆÃ*/
		title_label = new JLabel("½Ä´ç ÁÖ¹® °ü¸®");
		title_label.setHorizontalAlignment(title_label.CENTER);
		Font font = new Font("Times", Font.BOLD, 50);
		title_label.setBorder(new LineBorder(Color.BLACK));
		title_label.setFont(font);
		
		// ´Ù¼¸ °³ÀÇ ÆÐ³Î »ý¼º
		tableStatusPanel = new UI_TableStatus();
		orderStatusPanel = new UI_OrderStatus();
		menuStatusPanel = new UI_MenuStatus();
		enrollment_inquiry = new UI_Enrollment_Inquiry();
		
		/* ·¹ÀÌ¾Æ¿ô ¼³Á¤ (±×¸®µå¹é·¹ÀÌ¾Æ¿ô¿¡¼­¸¸ ¾²´Â°Å) */
		gbc.insets = new Insets(10, 10, 10, 10);
		gbc.fill = GridBagConstraints.BOTH;
		
		/* ÃÖ»ó´Ü label ¼ÂÆÃ */
		gbc.weightx = 1;
		gbc.weighty = 0.1;
		gbc.gridx = 0;
		gbc.gridy = 0;
		gbc.gridwidth = 2;
		gbc.gridheight = 1;
		gbl.setConstraints(title_label, gbc);
		add(title_label); // ½Ä´çÁÖ¹®°ü¸® ·¹ÀÌºí ÇÁ·¹ÀÓ¿¡ ¼ÂÆÃ
		
		/* Å×ÀÌºí ÇöÈ² ¼ÂÆÃ */
		gbc.weightx = 0.1;
		gbc.weighty = 0.1;
		gbc.gridx = 0;
		gbc.gridy = 1;
		gbc.gridwidth = 1;
		gbc.gridheight = 1;
		gbl.setConstraints(tableStatusPanel,  gbc);
		add(tableStatusPanel); // Å×ÀÌºí ÇöÈ² ÆÐ³Î ÇÁ·¹ÀÓ¿¡ ¼ÂÆÃ
		
		/* ÁÖ¹®³»¿ª ¼ÂÆÃ */
		gbc.gridx = 1;
		gbc.gridy = 1;
		gbl.setConstraints(orderStatusPanel,  gbc);
		add(orderStatusPanel); // ÁÖ¹®ÇöÈ² ÆÐ³Î ÇÁ·¹ÀÓ¿¡ ¼ÂÆÃ
		
		/* ¸Þ´º ¼ÂÆÃ */
		gbc.weighty = 3;
		gbc.gridx = 0;
		gbc.gridy = 3;
		gbl.setConstraints(menuStatusPanel,  gbc);
		add(menuStatusPanel); //¸Þ´ºÇöÈ² ÆÐ³Î ÇÁ·¹ÀÓ¿¡ ¼ÂÆÃ
		
		/* µî·Ï/Á¶È¸ ¼ÂÆÃ */
		gbc.gridx = 1;
		gbc.gridy = 3;
		gbl.setConstraints(enrollment_inquiry,  gbc);
		add(enrollment_inquiry); //ÇÁ·¹ÀÓ¿¡ ¼ÂÆÃ
		
		/* ÇÁ·¹ÀÓ¿¡ ¸Þ´º¹Ù Ãß°¡ */
		menuBar = new UI_MenuBar();
		setJMenuBar(menuBar); // ¸Þ´º¹Ù ¼ÂÆÃ		
		
		pack(); // ±×¸®µå¹é ·¹ÀÌ¾Æ¿ô¿¡¼­¸¸ ¾²´Â°Å.
		setSize(700, 800); //ÇÁ·¹ÀÓ »çÀÌÁî ¼ÂÆÃ
		setVisible(true); 
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		System.out.println("ÇÁ·¹ÀÓ »ý¼º ¿Ï·á..");
		
		init_DBInterface();
	}
	
	// µðºñ ÀÎÅÍÆäÀÌ½º ÃÊ±âÈ­ ¸Þ¼Òµå. ÇÁ·Î±×·¥ ½ÇÇà½Ã ÇÑ ¹ø È£Ãâ µÊ.
	private void init_DBInterface()
	{
		System.out.println(">>> °¢ ÄÁÆ®·Ñ·¯¿Í µðºñ ÀÎÅÍÆäÀÌ½º ¿¬°á ");
		DB_Interface di = new DB_Interface();
		
		// °¢ ÄÁÆ®·Ñ·¯ÀÇ ÀÎ½ºÅÏ½º °¡Á®¿À±â
		MenuBarControll mbController = this.menuBar.getController();
		OrderStatusControll osController = this.orderStatusPanel.getController();
		MenuControll mController = this.menuStatusPanel.getController();
		Enroll_inquiryControll eiController = this.enrollment_inquiry.getController();
		TableStatusControll tsController = this.tableStatusPanel.getController();
		
		// DB ÀÎÅÍÆäÀÌ½º¿¡ °¢ ÄÁÆ®·Ñ·¯¸¦ ¼Â ÇÏ±â.
		di.setMenuBarController(mbController);
		di.setOrderStatusController(osController);
		di.setMenuController(mController);
		di.setEnrollInquiryController(eiController);
		di.setTableStatusController(tsController);
		
		// °¢ ÄÁÆ®·Ñ·¯¿¡°Ô di ÀÎ½ºÅÏ½º ÁÖ±â
		mbController.setDBInterface(di);
		osController.setDBInterface(di);
		mController.setDBInterface(di);
		eiController.setDBInterface(di);
		tsController.setDBInterface(di);
		
		System.out.println("¿¬°á ¿Ï·á...");
	}
			
}
