Package org.jboss.seam.ui.util.cdk

Source Code of org.jboss.seam.ui.util.cdk.UIComponentELTagBase

package org.jboss.seam.ui.util.cdk;

import javax.el.MethodExpression;
import javax.el.ValueExpression;
import javax.faces.component.ActionSource2;
import javax.faces.component.EditableValueHolder;
import javax.faces.component.UIComponent;
import javax.faces.component.ValueHolder;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.event.MethodExpressionActionListener;
import javax.faces.event.MethodExpressionValueChangeListener;
import javax.faces.validator.MethodExpressionValidator;
import javax.faces.webapp.UIComponentELTag;

import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;

/**
* @author Maksim Kaszynski
*
*/
public abstract class UIComponentELTagBase extends UIComponentELTag {
 
  private static final LogProvider log = Logging.getLogProvider(UIComponentELTagBase.class);
 
  protected void setActionListenerProperty(UIComponent component, MethodExpression actionListener) {
    if (actionListener != null) {
      if (component instanceof ActionSource2) {
        ActionSource2 actionSource2 = (ActionSource2) component;
        actionSource2.addActionListener(new MethodExpressionActionListener(actionListener));
      } else {
        throw new IllegalArgumentException(Messages.getMessage(Messages.NO_ACTION_SOURCE2_ERROR, component.getClientId(getFacesContext())));
      }
    }
  }
 
  protected void setActionProperty(UIComponent component, MethodExpression action) {
    if (action != null) {
      if (component instanceof ActionSource2) {
        ActionSource2 actionSource2 = (ActionSource2) component;
        actionSource2.setActionExpression(action);
      } else {
        throw new IllegalArgumentException(Messages.getMessage(Messages.NO_ACTION_SOURCE2_ERROR, component.getClientId(getFacesContext())));
      }
    }
  }

  protected void setConverterProperty(UIComponent component, ValueExpression converter) {
        if (converter != null) {
      if (component instanceof ValueHolder) {
        ValueHolder output = (ValueHolder) component;
                if (!converter.isLiteralText()) {
                    component.setValueExpression("converter", converter);
                } else {
                    Converter conv = FacesContext.getCurrentInstance().getApplication().createConverter(converter.getExpressionString());
                    output.setConverter(conv);
                }
      } else {
         throw new IllegalArgumentException(Messages.getMessage(Messages.NO_VALUE_HOLDER_ERROR, component.getClass().getName()));
      }
        }
  }
 
  protected void setValidatorProperty(UIComponent component, MethodExpression validator) {
   
    if (validator != null) {
      if (component instanceof EditableValueHolder) {
        EditableValueHolder input = (EditableValueHolder) component;
        input.addValidator(new MethodExpressionValidator(validator));
      } else {
              throw new IllegalArgumentException(Messages.getMessage(Messages.NO_EDITABLE_VALUE_HOLDER_ERROR, component.getId()));
      }
    }
  }
 
  protected void setValueChangeListenerProperty(UIComponent component, MethodExpression valueChangeListener) {
    if (valueChangeListener != null) {
      if (component instanceof EditableValueHolder) {
        EditableValueHolder input = (EditableValueHolder) component;
        input.addValueChangeListener(new MethodExpressionValueChangeListener(valueChangeListener));
      } else {
              throw new IllegalArgumentException(Messages.getMessage(Messages.NO_EDITABLE_VALUE_HOLDER_ERROR, component.getId()));
      }
    }
  }
}
TOP

Related Classes of org.jboss.seam.ui.util.cdk.UIComponentELTagBase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.