ContentBlockApp.java

package sk.iway.iwcm.components.contentblock;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.Constants;
import sk.iway.iwcm.components.WebjetComponentAbstract;
import sk.iway.iwcm.editor.rest.ComponentRequest;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.system.annotations.WebjetAppStore;
import sk.iway.iwcm.system.annotations.WebjetComponent;
import sk.iway.iwcm.system.datatable.DataTableColumnType;
import sk.iway.iwcm.system.datatable.OptionDto;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumn;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditor;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditorAttr;

@WebjetComponent("sk.iway.iwcm.components.contentblock.ContentBlockApp")
@WebjetAppStore(
    nameKey = "components.content-block.title",
    descKey = "components.content-block.desc",
    itemKey = "cmp_content-block",
    imagePath = "/components/content-block/editoricon.png",
    galleryImages = "/components/content-block/",
    componentPath = "/components/content-block/content-block.jsp")
@Getter
@Setter
public class ContentBlockApp extends WebjetComponentAbstract {

    @DataTableColumn(
        inputType = DataTableColumnType.SELECT,
        tab = "basic",
        title="components.inquiry.design"
    )
    private String type;

    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        tab = "basic",
        title="components.htmlbox.titles", editor = {
        @DataTableColumnEditor(
            attr = {
                @DataTableColumnEditorAttr(key = "placeholder", value = "components.htmlbox.titles")
            }
        )
    })
    private String title;

    @DataTableColumn(
        inputType = DataTableColumnType.ELFINDER,
        tab = "basic",
        title = "editor.perex.image",
        className = "image1"
    )
    private String image1;

    @DataTableColumn(
        inputType = DataTableColumnType.ELFINDER,
        tab = "basic",
        title="editor.perex.image",
        className = "image2"
    )
    private String image2;

    @DataTableColumn(
        inputType = DataTableColumnType.COLOR,
        tab = "basic",
        title="editor.div_properties.background_color")
    private String color;

    @DataTableColumn(inputType = DataTableColumnType.TEXT,
     tab = "basic", title="editor.div_properties.css_class", editor = {
        @DataTableColumnEditor(
            attr = {
                @DataTableColumnEditorAttr(key = "placeholder", value = "editor.div_properties.css_class")
            }
        )
    })
    private String classes;

    @Override
    public Map<String, List<OptionDto>> getAppOptions(ComponentRequest componentRequest, HttpServletRequest request) {
        Map<String, List<OptionDto>> options = new HashMap<>();

        List<OptionDto> typeOptions = new ArrayList<>();
        Prop prop = Prop.getInstance(request);
        for(int i = 1; i <= Constants.getInt("contentBlockTypeCount"); i++) {
            typeOptions.add(
                new OptionDto(
                    prop.getText("components.inquiry.design") + " " + i,
                    i + "",
                    null
                )
            );
        }

        options.put("type", addCurrentValueToOptions(typeOptions, getType()));

        return options;
    }
}