import org.primefaces.component.column.Column;
import org.primefaces.config.ConfigContainer;
import org.primefaces.context.RequestContext;
import java.util.Collection;
import java.util.List;
import java.util.ArrayList;
import javax.faces.component.UIComponent;
import javax.faces.application.FacesMessage;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
import org.primefaces.util.ComponentUtils;
import org.primefaces.util.MessageFactory;
public final static String STYLE_CLASS = "ui-selectonemenu ui-widget ui-state-default ui-corner-all";
public final static String LABEL_CLASS = "ui-selectonemenu-label ui-inputfield ui-corner-all";
public final static String TRIGGER_CLASS = "ui-selectonemenu-trigger ui-state-default ui-corner-right";
public final static String PANEL_CLASS = "ui-selectonemenu-panel ui-widget-content ui-corner-all ui-helper-hidden ui-shadow";
public final static String ITEMS_WRAPPER_CLASS = "ui-selectonemenu-items-wrapper";
public final static String LIST_CLASS = "ui-selectonemenu-items ui-selectonemenu-list ui-widget-content ui-widget ui-corner-all ui-helper-reset";
public final static String TABLE_CLASS = "ui-selectonemenu-items ui-selectonemenu-table ui-widget-content ui-widget ui-corner-all ui-helper-reset";
public final static String ITEM_GROUP_CLASS = "ui-selectonemenu-item-group ui-corner-all";
public final static String ITEM_CLASS = "ui-selectonemenu-item ui-selectonemenu-list-item ui-corner-all";
public final static String ROW_CLASS = "ui-selectonemenu-item ui-selectonemenu-row ui-widget-content";
public final static String FILTER_CONTAINER_CLASS = "ui-selectonemenu-filter-container";
public final static String FILTER_CLASS = "ui-selectonemenu-filter ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all";
public final static String FILTER_ICON_CLASS = "ui-icon ui-icon-search";
public List<Column> getColums() {
List<Column> columns = new ArrayList<Column>();
for(UIComponent kid : this.getChildren()) {
if(kid instanceof Column)
columns.add((Column) kid);
}
return columns;
}
@Override
protected void validateValue(FacesContext context, Object value) {
if(this.isEditable()) {
//required field validation
if(isValid() && isRequired() && isEmpty(value)) {
String requiredMessageStr = getRequiredMessage();
FacesMessage message;
if(null != requiredMessageStr) {
message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
requiredMessageStr,
requiredMessageStr);
} else {
message = MessageFactory.getMessage(REQUIRED_MESSAGE_ID, FacesMessage.SEVERITY_ERROR, new Object[]{MessageFactory.getLabel(context, this)});
}
context.addMessage(getClientId(context), message);
setValid(false);
}
ConfigContainer config = RequestContext.getCurrentInstance().getApplicationContext().getConfig();
//other validators
if(isValid() && (!isEmpty(value) || config.isValidateEmptyFields())) {
Validator[] validators = getValidators();
for(Validator validator : validators) {
try {
validator.validate(context, this, value);
}
catch(ValidatorException ve) {
setValid(false);
FacesMessage message;
String validatorMessageString = getValidatorMessage();
if(null != validatorMessageString) {
message =new FacesMessage(FacesMessage.SEVERITY_ERROR, validatorMessageString, validatorMessageString);
}
else {
Collection<FacesMessage> messages = ve.getFacesMessages();
if(null != messages) {
message = null;
String cid = getClientId(context);
for(FacesMessage m : messages) {
context.addMessage(cid, m);
}
}
else {
message = ve.getFacesMessage();
}
}
if(message != null) {
context.addMessage(getClientId(context), message);
}
}
}
}
}
else {
super.validateValue(context, value);
}
}
public String getInputClientId() {
return this.getClientId(getFacesContext()) + "_focus";
}