package org.ntlab.rdlcanvas.generaterdl;
import org.ntlab.rdlcanvas.models.*;
import java.util.ArrayList;
import java.util.List;
public class MetaScreenGenerateRDL extends BaseMetaGenerateRDL {
ArrayList<String> metaIdList = new ArrayList<>(List.of("wText", "wType", "wState", "wX", "wY", "wWidth", "wHeight", "wEnabled", "wVisible", "wColor"));
public MetaScreenGenerateRDL(RDLSpec spec){
addScreenTemplateResourceDeclaration(spec);
addScreenTemplateFormula(spec);
//System.out.println(spec.toString()); //デバッグ用
}
private void addScreenTemplateResourceDeclaration(RDLSpec spec){
//ex screen(1) :: struct
addResourceDeclaration(spec, "screen", 1, StructuralType.structure, null);
addResourceDeclaration(spec, "scId", 1, StructuralType.id, RDLSpecLang.typeString);
addResourceDeclaration(spec, "widget", 2, StructuralType.structure, null);
addResourceDeclaration(spec, "wId", 2, StructuralType.id, RDLSpecLang.typeString);
addResourceDeclaration(spec, "wText", 2, RDLSpecLang.typeString);
addResourceDeclaration(spec, "wType", 2, RDLSpecLang.typeString);
addResourceDeclaration(spec, "wState", 2, RDLSpecLang.typeString);
addResourceDeclaration(spec, "wX", 2, RDLSpecLang.typeInt);
addResourceDeclaration(spec, "wY", 2, RDLSpecLang.typeInt);
addResourceDeclaration(spec, "wWidth", 2, RDLSpecLang.typeInt);
addResourceDeclaration(spec, "wHeight", 2, RDLSpecLang.typeInt);
addResourceDeclaration(spec, "wEnabled", 2, RDLSpecLang.typeBoolean);
addResourceDeclaration(spec, "wVisible", 2, RDLSpecLang.typeBoolean);
addResourceDeclaration(spec, "wColor", 2, RDLSpecLang.typeString);
}
private void addScreenTemplateFormula(RDLSpec spec){
//ex screen:scId
addElementPairDependencyFormula(spec, "screen", false, "scId", false);
addElementPairDependencyFormula(spec, "screen", false, "scId", true);
for(String mId : metaIdList){
addElementPairDependencyFormula(spec, mId,false, "widget", false);
}
// [widget:wid]:screen
addNestedDependencyFormula(spec, "widget", false, "wId", false, "screen", false);
}
}