package pl.net.bluesoft.rnd.processtool.ui.basewidgets.xml.jaxb;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import pl.net.bluesoft.rnd.processtool.ui.basewidgets.editor.AvailableOptions;
import pl.net.bluesoft.rnd.processtool.ui.basewidgets.editor.RequiredAttribute;
import pl.net.bluesoft.rnd.processtool.ui.basewidgets.xml.validation.XmlValidationError;
import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.AperteDoc;
import pl.net.bluesoft.util.lang.StringUtil;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import java.util.ArrayList;
import java.util.List;
import static pl.net.bluesoft.rnd.processtool.ui.basewidgets.xml.XmlConstants.*;
@XmlAccessorType(XmlAccessType.FIELD)
//@XmlRootElement(name = "align")
@XStreamAlias("align")
public class AlignElement extends HasWidgetsElement {
@XmlAttribute
@XStreamAsAttribute
@RequiredAttribute
@AvailableOptions({
ALIGN_POS_LEFT_TOP,
ALIGN_POS_LEFT_BOTTOM,
ALIGN_POS_LEFT_MIDDLE,
ALIGN_POS_CENTER_TOP,
ALIGN_POS_CENTER_BOTTOM,
ALIGN_POS_CENTER_MIDDLE,
ALIGN_POS_RIGHT_TOP,
ALIGN_POS_RIGHT_BOTTOM,
ALIGN_POS_RIGHT_MIDDLE
})
@AperteDoc(humanNameKey = "align.pos", descriptionKey = "align.pos.description")
private String pos;
public String getPos() {
return pos;
}
public void setPos(String pos) {
this.pos = pos;
}
@Override
public List<XmlValidationError> validateElement() {
List<XmlValidationError> errors = new ArrayList<XmlValidationError>();
if (!StringUtil.hasLength(pos)) {
errors.add(new XmlValidationError("align", "pos", XML_TAG_EMPTY));
}
else if (!(ALIGN_POS_LEFT_TOP.equalsIgnoreCase(pos) || ALIGN_POS_LEFT_BOTTOM.equalsIgnoreCase(pos) || ALIGN_POS_LEFT_MIDDLE.equalsIgnoreCase(pos)
|| ALIGN_POS_CENTER_TOP.equalsIgnoreCase(pos) || ALIGN_POS_CENTER_BOTTOM.equalsIgnoreCase(pos) || ALIGN_POS_CENTER_MIDDLE.equalsIgnoreCase(pos)
|| ALIGN_POS_RIGHT_TOP.equalsIgnoreCase(pos) || ALIGN_POS_RIGHT_BOTTOM.equalsIgnoreCase(pos) || ALIGN_POS_RIGHT_MIDDLE.equalsIgnoreCase(pos))) {
errors.add(new XmlValidationError("align", "pos", XML_TAG_INVALID));
}
return errors;
}
}