package com.brframework.commoncms.core.layout;

import java.lang.reflect.Field;
import java.util.List;

/**
 * 列
 * @author xu
 * @date 2018/9/26 13:53
 */
public interface PanelLayoutColumn {

    /**
     * 列标识
     * @return
     */
    String getKey();
    void setKey(String key);

    /**
     * 列标题
     * @return
     */
    String getTitle();
    void setTitle(String title);

    /**
     * 是否是默认的列表展示项
     * @return
     */
    boolean isSelectShow();
    void setSelectShow(boolean selectShow);

    /**
     * 列类型
     * @return
     */
    String getType();

    /**
     * 通过注解标记的字段生成列属性
     * @param columnField
     */
    void create(Field columnField) throws Throwable;

    /**
     * 是否支持类型
     * @param type
     * @return
     */
    boolean isSupportType(Class<?> type);

    /**
     * 支持的类型
     * @return
     */
    List<Class<?>> supportType();

}
