package com.rubn.xsdvalidator.util;

import com.vaadin.flow.component.icon.SvgIcon;
import lombok.experimental.UtilityClass;

import java.util.Objects;

import static com.rubn.xsdvalidator.util.XsdValidatorConstants.COPY_ALT_SVG;
import static com.rubn.xsdvalidator.util.XsdValidatorConstants.CURSOR_POINTER;
import static com.rubn.xsdvalidator.util.XsdValidatorConstants.SVG_IMAGES;


/**
 * @author rubn
 */
@UtilityClass
public class SvgFactory {

    /**
     * Button with svg copy style /images/copy-alt.svg
     *
     * @return {@link SvgIcon}
     */
    public static SvgIcon createCopyButtonFromSvg() {
        //copy-alt.svg
        final SvgIcon icon = new SvgIcon(SVG_IMAGES + COPY_ALT_SVG);
        icon.getStyle().setCursor(CURSOR_POINTER);
        icon.setSize("25px");
        return icon;
    }

    /**
     * Button with svg copy style /images/filename.svg
     *
     * @param customHeight in pixels, optional parameter
     * @param size         in pixels
     * @return {@link SvgIcon}
     */
    public static SvgIcon createIconFromSvg(String fileName, String size, String customHeight) {
        Objects.requireNonNull(fileName, "fileName is null, we must put it in the svg-icons folder");
        var icon = new SvgIcon(SVG_IMAGES + fileName);
        icon.setSize(size);
        if (Objects.nonNull(customHeight)) {
            icon.getStyle().set("height", customHeight);
        }
        return icon;
    }

}
