package com.github.czyzby.lml.vis.parser.impl.attribute.input;
import com.github.czyzby.lml.parser.LmlParser;
import com.github.czyzby.lml.parser.action.ActorConsumer;
import com.github.czyzby.lml.parser.tag.LmlAttribute;
import com.github.czyzby.lml.parser.tag.LmlTag;
import com.github.czyzby.lml.util.LmlUtilities;
import com.kotcrab.vis.ui.widget.VisTextField;
/** See {@link VisTextField#setCursorPosition(int)}. Cursor position will be set after the actor is fully constructed
* and its tag is closed, so if you keep text field data between its tags, cursor position setting will still work.
* Mapped to "cursor", "cursorPos", "cursorPosition".
*
* @author MJ */
public class CursorLmlAttribute implements LmlAttribute<VisTextField> {
@Override
public Class<VisTextField> getHandledType() {
return VisTextField.class;
}
@Override
public void process(final LmlParser parser, final LmlTag tag, final VisTextField actor,
final String rawAttributeData) {
LmlUtilities.getLmlUserObject(actor).addOnCloseAction(new ActorConsumer<Object, Object>() {
@Override
public Void consume(final Object widget) {
actor.setCursorPosition(parser.parseInt(rawAttributeData, actor));
return null;
}
});
}
}