package xapi.jre.ui.impl; import com.github.javaparser.ASTHelper; import com.github.javaparser.ast.expr.UiContainerExpr; import javafx.scene.layout.VBox; import xapi.dev.source.MethodBuffer; import xapi.dev.ui.ContainerMetadata; import xapi.dev.ui.UiComponentGenerator; import xapi.dev.ui.UiGeneratorTools; import xapi.dev.ui.UiVisitScope; /** * Created by james on 6/17/16. */ public class JavaFxBoxComponentGenerator extends UiComponentGenerator { @Override public UiVisitScope startVisit( UiGeneratorTools service, ContainerMetadata me, UiContainerExpr n ) { String parentName = me.peekPanelName(); final MethodBuffer mb = me.getMethod(parentName); String container = n.getAttribute("type") .map(ASTHelper::extractAttrValue) .orElse(VBox.class.getCanonicalName()); container = mb.addImport(container); String ref = me.getRefName("box"); mb.println(container + " " + ref + " = new " + container + "();"); mb.println(parentName + ".getChildren().add(" + ref + ");"); me.pushPanelName(ref); me.saveMethod(ref, mb); return super.startVisit(service, me, n); } @Override public void endVisit( UiGeneratorTools service, ContainerMetadata me, UiContainerExpr n, UiVisitScope scope ) { String panel = me.popPanelName(); me.removeMethod(panel); super.endVisit(service, me, n, scope); } }