public GUIWindow() {
		super();
		this.setTitle("Saper RC1.1");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		initialize();

		// ustawiamy zamaksymalizowane okienko
		jContentPane.setPreferredSize(Toolkit.getDefaultToolkit().getScreenSize());

		
		// ustawiamy menuski
		JMenuBar menuBar = new JMenuBar();
		JMenu saper = new JMenu("Saper");
		
		JMenuItem zakoncz = new JMenuItem("Skończone"); // zakoczone gre, czas
														// dopisac do hiscore
		zakoncz.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				if (!game.isValid()) {
					JOptionPane.showMessageDialog(null,
							"Nie można kończyć po śmierci :P", "Błąd!",
							JOptionPane.ERROR_MESSAGE);
					return;
				}
				int score = game.computeScore(); // obliczamy wynik
				game.setValid(false); // koniec gry
				game.showAll(); // odslon plansze
				update();

				String name = (String) JOptionPane.showInputDialog(
						// jak masz na imie?
						"Zdobyto " + score + " punktów!\n Jak masz na imię?",
						"Ziemowit");

				if (name == null) // jezeli zawodnik nie podal imienia
					name = "Gracz";
				Console.hiScore.insertScore(score, name); // dopisujemy go do
															// hajskora
			}
		});
		
		JMenu help = new JMenu("Pomoc");
		JMenuItem helpItem = new JMenuItem("Instrukcje");
		helpItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JOptionPane
						.showMessageDialog(
								null,
								"Celem gry jest zdobycie największej ilości punktów stawiając flagi (PPM) tam, gdzie są miny. \n"
										+ "Za każdą dobrze postawioną flagę (po skończeniu gry podświetloną na zielono) \n"
										+ "dostaniejsz 1 pkt. Za każdą źle postawioną (po skończeniu gry podświetloną na czerwono) \n"
										+ "-2 pkt. Kliknięcie LPM dotyka pola. Dotknięcie miny kończy grę, nie dostajesz punktów. \n"
										+ "Dotknięcie pola bez miny odkrywa liczby mówiące o ilości min sąsiadujących z danym polem \n"
										+ "(również po przekątnej). Kliknij \"zakończ\", gdy uważasz, że dobrze rozstawiłeś flagi.",
								"Pomoc", JOptionPane.CLOSED_OPTION);

			}
		});

		JMenu newgame = new JMenu("Nowa gra");

		JMenuItem easy = new JMenuItem("Mało bomb");
		easy.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				game = new FieldController(model.Level.EASY);
				initialize(); // reinitialzuj gre
			}
		});
		JMenuItem medium = new JMenuItem("Średnia ilość bomb");
		medium.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				game = new FieldController(model.Level.NORMAL);
				initialize(); // reinitialzuj gre
			}
		});
		JMenuItem hard = new JMenuItem("Dużo bomb");
		hard.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				game = new FieldController(model.Level.HARD);
				initialize(); // reinitialzuj gre
			}
		});
		JMenuItem exit = new JMenuItem("Zakończ	");
		exit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		
		
		JMenuItem hiscore = new JMenuItem("HiScore");
		hiscore.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				// narzut wykonania na tyle maly, ze mozna za kadzym razem otwrcia okienka to robic
				String[] columnNames = { "Lp.", "Imię", "Punkty" };
				String[][] data = new String[10][3];
				List<HiScoreRowModel> rows = Console.hiScore.getHiScore();

				for (int i = 0; i < 10; i++) { // towrzymy tabele wynikow
					data[i][0] = ((Integer) rows.get(i).getPosition())
							.toString();
					data[i][1] = rows.get(i).getName();
					data[i][2] = ((Integer) rows.get(i).getScore()).toString();
				}
				JTable table = new JTable(data, columnNames);
				JOptionPane.showMessageDialog(null, table, "HiScore", // wyswietlamy ja
						JOptionPane.CLOSED_OPTION);
			}
		});
		
		
		newgame.add(easy);
		newgame.add(medium);
		newgame.add(hard);
		saper.add(newgame);
		saper.add(hiscore);
		saper.add(exit);
		menuBar.add(saper);
		menuBar.add(zakoncz);
		help.add(helpItem);
		menuBar.add(help);
		setJMenuBar(menuBar);
		
	}