package com.github.czyzby.lml.vis.parser.impl.attribute.tabbed; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.github.czyzby.lml.parser.LmlParser; import com.github.czyzby.lml.parser.tag.LmlAttribute; import com.github.czyzby.lml.parser.tag.LmlTag; import com.kotcrab.vis.ui.widget.tabbedpane.Tab; import com.kotcrab.vis.ui.widget.tabbedpane.TabbedPane; import com.kotcrab.vis.ui.widget.tabbedpane.TabbedPane.TabbedPaneTable; /** Abstract base for {@link TabbedPane} attributes. * * @author MJ */ public abstract class AbstractTabbedPaneLmlAttribute implements LmlAttribute<TabbedPaneTable> { /** Mock-up {@link Tab} instance. Can be used to retrieve actions that consume a tab. Do not use in actual * scenes. */ public static final Tab MOCK_UP_TAB = new Tab() { @Override public String getTabTitle() { return null; } @Override public Table getContentTable() { return null; } }; @Override public Class<TabbedPaneTable> getHandledType() { return TabbedPaneTable.class; } @Override public final void process(final LmlParser parser, final LmlTag tag, final TabbedPaneTable actor, final String rawAttributeData) { process(parser, tag, actor.getTabbedPane(), rawAttributeData); } /** @param parser handles LML template parsing. * @param tag contains raw tag data. Allows to access actor's parent. * @param tabbedPane handled tabbed pane instance. * @param rawAttributeData unparsed LML attribute data that should be handled by this attribute processor. Common * data types (string, int, float, boolean, action) are already handled by LML parser implementation, so * make sure to invoke its methods. */ protected abstract void process(LmlParser parser, LmlTag tag, TabbedPane tabbedPane, String rawAttributeData); }