package com.brframework.commoncms.annatotion.column;


import com.brframework.commoncms.annatotion.Column;
import com.brframework.commoncms.annatotion.LayoutColumn;
import com.brframework.commoncms.core.layout.column.LayoutCheckBoxColumn;
import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 多选框
 * 强制要求标识的是String类型，不同选项使用,(逗号)隔开
 *
 * @author xu
 * @date 2018/9/27 21:05
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@LayoutColumn(type = LayoutCheckBoxColumn.class)
@Column
public @interface CheckBoxColumn {

    /**
     * select 对应的选项键与值通过逗号隔开
     * 1,学生   2,老师
     *
     * @return
     */
    String[] options() default {};

    /**
     * select 对应的选项键与值
     * 通过映射的方式加载键值对
     * 映射的方法必须是没有参数并且返回值是Map<String, String>
     * 例如 userService.findSelect
     * 如果出现顺序的问题，使用TreeMap或者LinkedHashMap
     */
    String optionsMappingContext() default "";

    /**
     * 列表展示时，该列是否处于显示状态，可控制列表中，默认隐藏和显示的列
     */
    @AliasFor(annotation = Column.class)
    boolean selectShow() default true;
}
