package com.github.czyzby.lml.vis.parser.impl.attribute.input; import com.github.czyzby.kiwi.util.common.Strings; 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.VisTextField; /** See {@link VisTextField#setPasswordCharacter(char)}. Expects a string with length of 1. Mapped to "passwordChar", * "passwordCharacter", "passChar", "passCharacter". * * @author MJ */ public class PasswordCharacterLmlAttribute 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) { final String passwordCharacter = parser.parseString(rawAttributeData, actor); if (Strings.isEmpty(passwordCharacter)) { parser.throwError("Password character setting cannot be empty. String with length of 1 is required."); } else if (passwordCharacter.length() != 1) { parser.throwErrorIfStrict("String with length of 1 is required for password character setting."); } // At this point, string must have at least 1 character. actor.setPasswordCharacter(passwordCharacter.charAt(0)); } }