package com.github.czyzby.lml.vis.parser.impl.tag;
import com.github.czyzby.lml.parser.LmlParser;
import com.github.czyzby.lml.parser.tag.LmlTag;
import com.github.czyzby.lml.util.LmlUtilities;
import com.github.czyzby.lml.vis.parser.impl.action.VisStageAttacher;
import com.github.czyzby.lml.vis.parser.impl.tag.builder.VisWindowLmlActorBuilder;
import com.github.czyzby.lml.vis.ui.reflected.ReflectedVisDialog;
import com.kotcrab.vis.ui.widget.VisDialog;
import com.kotcrab.vis.ui.widget.VisWindow;
/** Handles {@link VisDialog} actor. Works like a window, except it supports on result action and is attached to the
* stage with {@link VisDialog#show(com.badlogic.gdx.scenes.scene2d.Stage)}. Mapped to "dialog", "visDialog".
*
* @author MJ */
public class VisDialogLmlTag extends VisWindowLmlTag {
public VisDialogLmlTag(final LmlParser parser, final LmlTag parentTag, final StringBuilder rawTagData) {
super(parser, parentTag, rawTagData);
}
@Override
protected VisWindow getNewInstanceOfVisWindow(final VisWindowLmlActorBuilder builder) {
final VisDialog dialog = new ReflectedVisDialog(builder.getText(), builder.getStyleName());
LmlUtilities.getLmlUserObject(dialog).setStageAttacher(new VisStageAttacher());
return dialog;
}
@Override
protected void handlePlainTextLine(final String plainTextLine) {
final VisDialog dialog = getDialog();
dialog.text(getParser().parseString(plainTextLine, dialog));
if (LmlUtilities.isOneColumn(dialog.getContentTable())) {
dialog.getContentTable().row();
}
}
/** @return casted actor. */
protected VisDialog getDialog() {
return (VisDialog) getActor();
}
}