package com.borjabolufer.elevate.utils;

import android.content.res.ColorStateList;
import android.graphics.Color;

import com.google.android.material.button.MaterialButton;

public class ColorUtils {

      
    public static final int COLOR_SELECCIONADO = Color.parseColor("#64B5F6");   
    public static final int COLOR_NORMAL = Color.parseColor("#FAFAFA");   
    public static final int COLOR_STROKE_SELECCIONADO = Color.parseColor("#2196F3");   
    public static final int COLOR_STROKE_NORMAL = Color.parseColor("#E0E0E0");   

    public static final int COLOR_TEXTO_SELECCIONADO = Color.parseColor("#FFFFFF");   
    public static final int COLOR_TEXTO_NORMAL = Color.parseColor("#2E2E2E");   

      
    public static void marcarSeleccion(MaterialButton boton) {
          
        boton.setBackgroundTintList(ColorStateList.valueOf(COLOR_SELECCIONADO));

          
        boton.setStrokeColor(ColorStateList.valueOf(COLOR_STROKE_SELECCIONADO));

          
        boton.setTextColor(COLOR_TEXTO_SELECCIONADO);

          
        if (boton.getStrokeWidth() == 0) {
            boton.setStrokeWidth(2);   
        }
    }

      
    public static void limpiarSeleccion(MaterialButton boton) {
          
        boton.setBackgroundTintList(ColorStateList.valueOf(COLOR_NORMAL));

          
        boton.setStrokeColor(ColorStateList.valueOf(COLOR_STROKE_NORMAL));

          
        boton.setTextColor(COLOR_TEXTO_NORMAL);

          
        boton.setStrokeWidth(2);
    }

      
    public static boolean estaSeleccionado(MaterialButton boton) {
        ColorStateList backgroundTint = boton.getBackgroundTintList();
        if (backgroundTint != null) {
            int color = backgroundTint.getDefaultColor();
            return color == COLOR_SELECCIONADO;
        }
        return false;
    }

      
    public static void alternarSeleccion(MaterialButton boton) {
        if (estaSeleccionado(boton)) {
            limpiarSeleccion(boton);
        } else {
            marcarSeleccion(boton);
        }
    }

      
    public static void limpiarSeleccionMultiple(MaterialButton... botones) {
        for (MaterialButton boton : botones) {
            if (boton != null) {
                limpiarSeleccion(boton);
            }
        }
    }

      
    public static void seleccionarUnico(MaterialButton botonSeleccionado, MaterialButton... todosBotones) {
          
        limpiarSeleccionMultiple(todosBotones);

          
        if (botonSeleccionado != null) {
            marcarSeleccion(botonSeleccionado);
        }
    }
}