package com.github.czyzby.lml.parser.impl.tag.actor; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.ui.Window; import com.github.czyzby.lml.parser.LmlParser; import com.github.czyzby.lml.parser.impl.tag.builder.TextLmlActorBuilder; import com.github.czyzby.lml.parser.tag.LmlActorBuilder; import com.github.czyzby.lml.parser.tag.LmlTag; import com.github.czyzby.lml.util.LmlUtilities; /** Handles {@link Window} actor. By default, if the window is a root (has no parent), it is attached to the center of * its stage. Handles its children like a table. Mapped to "window". * * @author MJ */ public class WindowLmlTag extends TableLmlTag { public WindowLmlTag(final LmlParser parser, final LmlTag parentTag, final StringBuilder rawTagData) { super(parser, parentTag, rawTagData); } @Override protected TextLmlActorBuilder getNewInstanceOfBuilder() { return new TextLmlActorBuilder(); } @Override protected final Actor getNewInstanceOfActor(final LmlActorBuilder builder) { final Window window = getNewInstanceOfWindow((TextLmlActorBuilder) builder); LmlUtilities.getLmlUserObject(window).initiateStageAttacher(); // Centers the window by default. return window; } /** @param builder contains data necessary to constuct a window. * @return a new instance of Window actor. */ protected Window getNewInstanceOfWindow(final TextLmlActorBuilder builder) { return new Window(builder.getText(), getSkin(builder), builder.getStyleName()); } @Override protected boolean hasComponentActors() { return true; } @Override protected Actor[] getComponentActors(final Actor actor) { return new Actor[] { ((Window) actor).getTitleLabel() }; } }