@Override
	public void start(final Stage stage) {

		this.stage = stage;
		gridMenu = new GridPane();
		gridMenu.setVgap(5);
		tabelaSettings(gridMenu);

		fitFunctionLabel = new Label("Funkcja przystosowania");
		fitFunctionLabel.setFont(Font.font("Tahoma", FontWeight.NORMAL, 15));
		fitFunctionLabel.setStyle("-fx-textfill: white");
		fitFunctionLabel.setMinWidth(200);
		gridMenu.add(fitFunctionLabel, 0, 3, 1, 1);
		fitFunction = new TextField();
		fitFunction.setText("a-b+c-d");
		fitFunction.setMinHeight(minH);
		gridMenu.add(fitFunction, 1, 3, 1, 1);

		popSizeLabel = new Label("Wielkość populacji");
		gridMenu.add(popSizeLabel, 0, 5);
		popSize = new TextField();
		popSize.setText("100");
		popSize.setMinHeight(minH);
		gridMenu.add(popSize, 1, 5);

		genSizeLabel = new Label("Liczba generacji");
		gridMenu.add(genSizeLabel, 0, 7);
		genSize = new TextField();
		genSize.setText("50");
		genSize.setMinHeight(minH);
		gridMenu.add(genSize, 1, 7);

		pcrossLabel = new Label("Ppb. krzyżowania");
		pcross = new TextField();
		pcross.setText("0.6");
		pcross.setMinHeight(minH);

		pmutationLabel = new Label("Ppb mutacji");
		pmutation = new TextField();
		pmutation.setText("0.01");
		pmutation.setMinHeight(minH);

		gridMenu.add(pcrossLabel, 0, 9);
		gridMenu.add(pcross, 1, 9);
		gridMenu.add(pmutationLabel, 0, 10);
		gridMenu.add(pmutation, 1, 10);

		scaleLabel = new Label("Współczynnik skalowania");
		scaleLabel.setMinWidth(200);
		gridMenu.add(scaleLabel, 0, 11);
		scale = new TextField();
		scale.setText("1.2");
		scale.setMinHeight(minH);

		gridMenu.add(scale, 1, 11);

		final Button wyczyśćBtn = new Button("Schowaj wykres");
		wyczyśćBtn.setVisible(false);
		wyczyśćBtn.setOnAction(new EventHandler<ActionEvent>() {
			@Override
			public void handle(ActionEvent e) {
				wyczyśćBtn.setVisible(true);
				if (isWykres) {
					sp.getItems().remove(1);
					stage.setWidth(0.5 * gridMenu.widthProperty().doubleValue());
					wyczyśćBtn.setText("Pokaż wykres");
					isWykres = false;
				} else {
					sp.getItems().add(sp2);
					isWykres = true;
					stage.setWidth(2.0 * gridMenu.widthProperty().doubleValue());
					wyczyśćBtn.setText("Schowaj wykres");
				}

			}
		});

		Button rysujBtn = new Button("Start");
		rysujBtn.setOnAction(new EventHandler<ActionEvent>() {
			@Override
			public void handle(ActionEvent e) {

				if (checkNoErrors()) {
					oblicz(Integer.parseInt(popSize.getText()),
							Integer.parseInt(genSize.getText()),
							Double.parseDouble(pcross.getText()),
							Double.parseDouble(pmutation.getText()),
							Double.parseDouble(scale.getText()),
							fitFunction.getText());

					if (!isWykres) {
						stage.setWidth(2.0 * gridMenu.widthProperty()
								.doubleValue());
					}
					tab3.setDisable(false);
					wyczyśćBtn.setText("Schowaj wykres");
					taPrzegląd.setText(Funkcje.sbOpis.toString());
					Funkcje.sbOpis.delete(0, Funkcje.sbOpis.length());
					Funkcje.licznikGen = 0;
					wyczyśćBtn.setVisible(true);

					if (!sp2.getChildren().isEmpty())
						sp2.getChildren().remove(wykres);

					sp2.getChildren().add(addChart());

					if (sp.getItems().size() == 1)
						sp.getItems().add(sp2);
					tabPane.getSelectionModel().select(2);
					isWykres = true;
				} else {
					if (isWykres) {
						stage.setWidth(0.5 * stage.widthProperty()
								.doubleValue());
						sp.getItems().remove(1);
						wyczyśćBtn.setText("Pokaż wykres");
						isWykres = false;
					}
				}
			}
		});

		final DropShadow shadow = new DropShadow();
		wyczyśćBtn.addEventHandler(MouseEvent.MOUSE_ENTERED,
				new EventHandler<MouseEvent>() {
					@Override
					public void handle(MouseEvent e) {
						wyczyśćBtn.setEffect(shadow);
					}
				});
		wyczyśćBtn.addEventHandler(MouseEvent.MOUSE_EXITED,
				new EventHandler<MouseEvent>() {
					@Override
					public void handle(MouseEvent e) {
						wyczyśćBtn.setEffect(null);
					}
				});

		HBox hbBtn = new HBox();
		hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
		hbBtn.getChildren().addAll(wyczyśćBtn, rysujBtn);
		hbBtn.setSpacing(20);
		gridMenu.add(hbBtn, 0, 13, 2, 1);

		tabPane = new TabPane();
		Tab tab1 = new Tab();
		tab1.setContent(gridMenu);
		tab1.setText("Główna");

		Tab tab2 = new Tab();
		tab2.setText("Objaśnienia");
		tab2.setContent(objaśnienia());
		tab3 = new Tab();
		tab3.setText("Wyniki");
		setPrzegląd();
		HBox h = new HBox();
		h.getChildren().addAll(taPrzegląd);
		tab3.setContent(h);

		tab1.setClosable(false);
		tab2.setClosable(false);
		tab3.setClosable(false);
		tab3.setDisable(true);

		tabPane.getTabs().addAll(tab1, tab2, tab3);

		sp = new SplitPane();
		sp1 = new StackPane();
		sp2 = new StackPane();
		sp2.setMinWidth(15);

		sp1.getChildren().add(tabPane);

		sp.getItems().addAll(sp1);

		Scene scene = new Scene(sp, 500, 600);
		stage.centerOnScreen();
		stage.setMinHeight(500);
		stage.setMinWidth(500);

		stage.setTitle("Prosty algorytm genetyczny");
		scene.getStylesheets().add(
				Main.class.getResource("Styl.css").toExternalForm());
		stage.setScene(scene);
		this.stage.getIcons().add(new Image("file:resources/images/icon.png"));
		stage.show();
	}