package com.github.czyzby.lml.vis.parser.impl.tag; import com.badlogic.gdx.scenes.scene2d.Actor; 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.vis.ui.VisTabTable; import com.kotcrab.vis.ui.widget.tabbedpane.Tab; /** * Manages an instance of {@link com.kotcrab.vis.ui.widget.tabbedpane.Tab} through specialized table extension: * {@link VisTabTable}. Handles children like a regular table tag. Mapped to "tab". * @author MJ */ public class TabLmlTag extends VisTableLmlTag { private Tab tab; public TabLmlTag(final LmlParser parser, final LmlTag parentTag, final StringBuilder rawTagData) { super(parser, parentTag, rawTagData); if (!(parentTag instanceof TabbedPaneLmlTag)) { parser.throwErrorIfStrict("Only tabbed panes can be parents of tabs. Found parent: " + parentTag); } } @Override protected LmlActorBuilder getNewInstanceOfBuilder() { return new TextLmlActorBuilder(); } @Override protected Actor getNewInstanceOfActor(final LmlActorBuilder builder) { VisTabTable tabTable = new VisTabTable(((TextLmlActorBuilder) builder).getText()); tab = tabTable.getTab(); return tabTable; } /** @return {@link com.kotcrab.vis.ui.widget.tabbedpane.Tab} instance managed by the {@link VisTabTable}. */ @Override public Object getManagedObject() { return tab; } }