package com.codingotaku.apps.custom;

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

import javafx.geometry.Pos;
import javafx.scene.Cursor;
import javafx.scene.control.ButtonBar.ButtonData;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;

public class DonateDialog extends Dialog<Boolean> {
	private static Logger logger = Logger.getLogger(DonateDialog.class.getName());

	public DonateDialog() {
		var buttonType = new ButtonType("Yes", ButtonData.YES);
		var dialogPane = getDialogPane();

		setTitle("Donate :3");
		dialogPane.getStylesheets().add(getClass().getResource("/css/combo.css").toExternalForm());

		var gridPane = new GridPane();

		gridPane.setVgap(10);
		String question = "Thank you for clicking the donate button!! <3\n\n"
				+ "You can donate via liberapay, paypal, or help me by subscribing to my patreon!\n\n";

		Label librapay = new Label("Liberapay");
		Label paypal = new Label("Paypal");
		Label patrion = new Label("Patreon");
		HBox donateButtons = new HBox(15);
		donateButtons.setAlignment(Pos.CENTER);
		librapay.setCursor(Cursor.HAND);
		paypal.setCursor(Cursor.HAND);
		patrion.setCursor(Cursor.HAND);
		librapay.setId("link");
		paypal.setId("link");
		patrion.setId("link");

		librapay.setOnMouseClicked(e -> handleClick("https://liberapay.com/codingotaku/donate"));
		paypal.setOnMouseClicked(e -> handleClick("https://paypal.me/codingotaku"));
		patrion.setOnMouseClicked(e -> handleClick("https://www.patreon.com/bePatron?u=13678963"));
		donateButtons.getChildren().addAll(librapay, paypal, patrion);

		dialogPane.getButtonTypes().addAll(ButtonType.CLOSE);

		var label = new Label(question);
		GridPane.setConstraints(label, 1, 2);
		GridPane.setConstraints(donateButtons, 1, 3, 2, 1);
		gridPane.getChildren().addAll(label, donateButtons);
		dialogPane.setContent(gridPane);
		setResultConverter(dialogButton -> dialogButton == buttonType);
	}

	private void handleClick(String url) {
		try {
			new ProcessBuilder("x-www-browser", url).start();
		} catch (IOException e) {
			logger.log(Level.SEVERE, e.getMessage());
		}
	}

}