DemoComponent.java
package sk.iway.demo8;
import org.springframework.ui.Model;
import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.Logger;
import sk.iway.iwcm.components.WebjetComponentAbstract;
import sk.iway.iwcm.doc.DocDetails;
import sk.iway.iwcm.doc.GroupDetails;
import sk.iway.iwcm.system.annotations.DefaultHandler;
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.annotations.DataTableColumn;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@WebjetComponent("sk.iway.demo8.DemoComponent")
@WebjetAppStore(nameKey = "Demo komponenta", descKey = "Demo komponenta nejaky dlhy opis", imagePath = "ti ti-snowflake text-danger", galleryImages = "/components/map/screenshot-1.jpg,/components/gdpr/screenshot-2.png,/components/gallery/screenshot-3.jpg", commonSettings = true)
@Getter
@Setter
public class DemoComponent extends WebjetComponentAbstract {
@DataTableColumn(inputType = DataTableColumnType.TEXT, tab = "basic")
private String stringField;
@DataTableColumn(inputType = DataTableColumnType.CHECKBOX, tab = "basic")
private boolean primitiveBooleanField;
@DataTableColumn(inputType = DataTableColumnType.TEXT_NUMBER, tab = "basic")
private int primitiveIntegerField;
@DataTableColumn(inputType = DataTableColumnType.TEXT_NUMBER, tab = "basic")
private double primitiveDoubleField;
@DataTableColumn(inputType = DataTableColumnType.TEXT_NUMBER, tab = "basic")
private float primitiveFloatField;
@DataTableColumn(inputType = DataTableColumnType.TEXT_NUMBER, tab = "advanced")
private BigDecimal bigDecimalField;
@DataTableColumn(inputType = DataTableColumnType.CHECKBOX, tab = "advanced")
private Boolean booleanField;
@DataTableColumn(inputType = DataTableColumnType.TEXT_NUMBER, tab = "advanced")
private Integer integerField;
@DataTableColumn(inputType = DataTableColumnType.TEXT_NUMBER, tab = "advanced")
private Double doubleField;
@DataTableColumn(inputType = DataTableColumnType.TEXT_NUMBER, tab = "advanced")
private Float floatField;
@DataTableColumn(inputType = DataTableColumnType.DATETIME, title = "date", tab = "advanced")
private Date date;
@DataTableColumn(inputType = DataTableColumnType.BASE64, title = "Base64 textarea", tab = "advanced")
private String base64textarea;
@DataTableColumn(inputType = DataTableColumnType.TEXT, title = "Base64 text", tab = "advanced", className = "dt-style-base64")
private String base64text;
@DataTableColumn(inputType = DataTableColumnType.JSON, title = "groupDetails", tab = "json", className = "dt-tree-group")
private GroupDetails groupDetails;
@DataTableColumn(inputType = DataTableColumnType.JSON, title = "docDetails", tab = "json", className = "dt-tree-page")
private DocDetails docDetails;
@DataTableColumn(inputType = DataTableColumnType.JSON, title = "groupDetailsList", tab = "json", className = "dt-tree-group-array")
private List<GroupDetails> groupDetailsList;
@DataTableColumn(inputType = DataTableColumnType.JSON, title = "docDetailsList", tab = "json", className = "dt-tree-page-array")
private List<GroupDetails> docDetailsList;
@DataTableColumn(inputType = DataTableColumnType.JSON, title = "dirSimple", tab = "json", className = "dt-tree-dir-simple")
private String dirSimple;
@DataTableColumn(inputType = DataTableColumnType.COLOR, tab = "Types", title = "HEX Color empty")
private String colorEmpty = "";
@DataTableColumn(inputType = DataTableColumnType.COLOR, tab = "Types", title = "HEX Color with alpha")
private String colorAlpha = "#FF0000";
@DefaultHandler
public String render(Model model)
{
Logger.debug(this.getClass(), "groupDetails="+groupDetails+" docDetails="+docDetails+" groupDetailsList="+groupDetailsList+" docDetailsList="+docDetailsList+" dirSimple="+dirSimple+" date="+date);
model.addAttribute("test", "Toto je test");
model.addAttribute("demoComponent", this);
return "/components/aceintegration/demo-component/view";
}
/**
* To call this method there should be URL parameter ?save (value is not important) OR page parameter !INCLUDE(... ,defaultHandler=save)!
* @param model
* @return
*/
public String save(Model model)
{
Logger.debug(this.getClass(), "groupDetails="+groupDetails+" docDetails="+docDetails+" groupDetailsList="+groupDetailsList+" docDetailsList="+docDetailsList+" dirSimple="+dirSimple+" date="+date);
model.addAttribute("test", "This is save method");
model.addAttribute("demoComponent", this);
return "/components/aceintegration/demo-component/view";
}
@Override
public void init()
{
//There should be initialization of component
Logger.debug(this.getClass(), "DemoComponent init");
}
@Override
public String getViewFolder()
{
return null;
}
}