package com.nokia.common.excel.entity;

import java.awt.Color;
import java.awt.Font;
import java.awt.GraphicsEnvironment;

import lombok.Data;

/**
 * excel一个单元格要截图的关键信息
 * 
 * 一个单元格可能是一个合并单元格
 * 
 * 包含字体(字体类型，字体大小)、背景色、字体颜色、是否包含边框等信息、单元格的大小和位置信息
 */
@Data
public class CellInfo {
    // x,y是单元格的左上角坐标
    private int x;
    private int y;
    // width，height表示单元格的大小
    private int width;
    private int height;
    // 背景色 默认为空
    private Color backgroundColor = null;
    // 是否存在边框 默认存在宽度1像素的黑色边框
    private boolean isBordered = true;
    private int borderWidth = 1;
    private Color borderColor = Color.BLACK;
    // 单元格值的字符串表示--时间按统一格式，其他数字按照excel格式
    private String text;
    // 字体 默认字体 微软雅黑 普通 11号字
    private Font font = Font.decode("微软雅黑-PLAIN-11");
    // 是否加粗
    private boolean isBold = false;
    // 文字颜色
    private Color textColor = Color.BLACK;
    // 文字对齐方向
    private AlignmentEnum alignment = AlignmentEnum.CENTER;

    /**
     * 通过字符串配置字体
     * 
     * @param fontName 空格或-间隔的字符串 fontname-style-pointsize fontname pointsize
     *                 fontname style
     */
    public void setFont(String fontName) {
        String familyName = fontName.trim().split("-")[0].split(" ")[0];
        // 所有允许的familyName
        String[] availableFontFamilyNames = GraphicsEnvironment.getLocalGraphicsEnvironment()
                .getAvailableFontFamilyNames();
        for (int i = 0; i < availableFontFamilyNames.length; i++) {
            if (availableFontFamilyNames[i].equalsIgnoreCase(familyName)) {
                font = Font.decode(fontName);
            }
        }
    }
}
