package hu.alkfejl.bookshop.view;

import hu.alkfejl.bookshop.controller.BookShopController;

import java.awt.Container;

import javax.swing.JFrame;

/**
 * @author Fulop Lajos
 * @leiras Ez az osztály indítja el a GUI-t, és ezen keresztül érhető el a control osztály a többi gui elem számára.
 */
public class BookShopGUI {
    private JFrame window;
    private BookShopController control;

	public static void main(String[] args) throws ClassNotFoundException{
		BookShopGUI vc = new BookShopGUI(new BookShopController());
		vc.startGUI(); //GUI felület elindítása
	}
    
    public BookShopGUI(BookShopController control){
    	this.control = control;
    }
    
    public void startGUI() {
    	//A GUI kirajzolására és az azon történő események kezelésére a Java egy külön szálat használ.
    	//Ezen a szálon indítjuk el a createAndShowGUI() metódust. 
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
    
    private void createAndShowGUI() {
    	//A JFrame egy magas szintű konténer, egy ablak címmel és kerettel.
    	//A mi ablakunk címe Book Shop lesz.
        window = new JFrame("Book Shop");
        //Ha bezárjuk az ablakot, akkor alapértelmezésben azt csak elrejtjuk.
        //Ezt a viselkedést módosítjuk arra, hogy az ablak ténylegesen záródjon be.
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Gyártunk egy bookMenuBar objektumot
        BookShopMenuBar bookMenuBar = new BookShopMenuBar(this);
        //Amit rárakunk a Book Shop ablakunkra
        window.setJMenuBar(bookMenuBar);

        //Az ablaknak beállítjuk a méretét
        window.setSize(800,600);
        window.setResizable(false);
        //Készen vagyunk, megjeleníthetjük az ablakot
        window.setVisible(true);
    }

    public void setActualContent(Container c){
    	window.setContentPane(c);
    	window.setVisible(true);
    }

	public JFrame getWindow() {
		return window;
	}

	public BookShopController getControl() {
		return control;
	}
   
}
