package com.github.czyzby.lml.parser.impl.attribute.table.cell;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.ui.Cell;
import com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup;
import com.github.czyzby.lml.parser.LmlParser;
import com.github.czyzby.lml.parser.tag.LmlTag;
import com.github.czyzby.lml.util.LmlUtilities;
/** See {@link Cell#align(int)}. Expends string matching name of
* {@link com.github.czyzby.kiwi.util.gdx.scene2d.Alignment} enum constant. Mapped to "align".
*
* @author MJ */
public class CellAlignLmlAttribute extends AbstractCellLmlAttribute {
@Override
public void process(final LmlParser parser, final LmlTag tag, final Actor actor, final Cell<?> cell,
final String rawAttributeData) {
cell.align(LmlUtilities.parseAlignment(parser, actor, rawAttributeData));
}
@Override
protected void processForActor(final LmlParser parser, final LmlTag tag, final Actor actor,
final String rawAttributeData) {
// Applied if not in a cell.
if (actor instanceof Label) {
((Label) actor).setAlignment(LmlUtilities.parseAlignment(parser, actor, rawAttributeData));
} else if (actor instanceof Table) {
((Table) actor).align(LmlUtilities.parseAlignment(parser, actor, rawAttributeData));
} else if (actor instanceof Image) {
((Image) actor).setAlign(LmlUtilities.parseAlignment(parser, actor, rawAttributeData));
} else if (actor instanceof HorizontalGroup) {
((HorizontalGroup) actor).align(LmlUtilities.parseAlignment(parser, actor, rawAttributeData));
} else if (actor instanceof VerticalGroup) {
((VerticalGroup) actor).align(LmlUtilities.parseAlignment(parser, actor, rawAttributeData));
} else if (actor instanceof TextField) {
((TextField) actor).setAlignment(LmlUtilities.parseAlignment(parser, actor, rawAttributeData));
} else {
// Exception:
super.processForActor(parser, tag, actor, rawAttributeData);
}
}
}