package com.github.czyzby.lml.parser.impl.tag.actor; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; import com.github.czyzby.lml.parser.LmlParser; import com.github.czyzby.lml.parser.impl.tag.AbstractActorLmlTag; import com.github.czyzby.lml.parser.tag.LmlActorBuilder; import com.github.czyzby.lml.parser.tag.LmlTag; /** Handles {@link ScrollPane} actor. Can have a single child tag which will be set as scroll pane's managed widget. * Parses plain text between tags to a label and sets it as its managed widget. Mapped to "scrollPane". * * @author MJ */ public class ScrollPaneLmlTag extends AbstractActorLmlTag { public ScrollPaneLmlTag(final LmlParser parser, final LmlTag parentTag, final StringBuilder rawTagData) { super(parser, parentTag, rawTagData); } @Override protected Actor getNewInstanceOfActor(final LmlActorBuilder builder) { return new ScrollPane(null, getSkin(builder), builder.getStyleName()); } @Override protected void handlePlainTextLine(final String plainTextLine) { setChild(toLabel(plainTextLine)); } /** @param child will be set as the managed child. */ protected void setChild(final Actor child) { final ScrollPane scrollPane = getScrollPane(); if (scrollPane.getWidget() != null) { getParser().throwErrorIfStrict("Scroll pane can have only one child. Received another child: " + child); } scrollPane.setWidget(child); } /** @return casted actor. */ protected ScrollPane getScrollPane() { return (ScrollPane) getActor(); } @Override protected void handleValidChild(final LmlTag childTag) { setChild(childTag.getActor()); } }