package edu.whs.spin2018.baoapp.views.spiel;

import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import edu.whs.spin2018.baoapp.R;
import edu.whs.spin2018.baoapp.utilities.ViewUtils;

public class SpielBeendetDialog extends DialogFragment {

    private final CharSequence GEWONNEN = " hat das Spiel gewonnen.";
    private SpielBeendetListener beendetListener;

    /**
     * Repräsentiert ein SpielBeendetDialog
     */
    public SpielBeendetDialog() {
        // Benötigter leerer default Konstruktor
    }

    /**
     * Erstellt einen Dialog, der aufgerufen wird wenn das Spiel beendet ist.
     * @param siegername der Name des Gewinners des Spiels
     * @return das fertige Dialogobjekt.
     */
    public static SpielBeendetDialog newInstance(String siegername) {
        SpielBeendetDialog spielBeendet = new SpielBeendetDialog();
        Bundle args = new Bundle();
        args.putString("siegername", siegername);
        spielBeendet.setArguments(args);
        return spielBeendet;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NO_TITLE, R.style.DialogAbgerundeteEckenBrown);
        setCancelable(false);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstaceState) {
        return inflater.inflate(R.layout.dialog_spielende, container);
    }

    @Override
    public void onCancel(DialogInterface dialog) {
        super.onCancel(dialog);
        beendetListener.onSpielBeendet();
        dismiss();
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle saveInstanceState) {
        super.onViewCreated(view, saveInstanceState);
//        setStyle(DialogFragment.STYLE_NO_TITLE, R.style.DialogAbgerundeteEckenBrown);
        TextView gewinnertextAnzeige = view.findViewById(R.id.tv_sieger);
        String gewinnertext = getArguments().getString("siegername") + GEWONNEN;
        gewinnertextAnzeige.setText(gewinnertext);
        Button btn = view.findViewById(R.id.btn_sieger);
        ViewUtils.setzeSchatten(btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                beendetListener.onSpielBeendet();
                dismiss();
            }
        });
    }

    /**
     * Setzt einen SpielBeendetListener
     * @param sbl der zu setzende SpielBeendetListener
     */
    public void setzeSpielBeendetListener(SpielBeendetListener sbl) {
        this.beendetListener = sbl;
    }

    /**
     * Gibt den gesetzten SpielBeendetListener.
     * @return der gesetzte SpielBeendetListener
     */
    public SpielBeendetListener gibSpielBeendetListener() {
        return this.beendetListener;
    }

    @FunctionalInterface
    public interface SpielBeendetListener {
        void onSpielBeendet();
    }


}


