All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.larmic.butterfaces.component.html.HtmlComboBox Maven / Gradle / Ivy

package de.larmic.butterfaces.component.html;

import java.util.Collections;
import java.util.List;

import javax.el.ValueExpression;
import javax.faces.application.ResourceDependencies;
import javax.faces.application.ResourceDependency;
import javax.faces.component.FacesComponent;
import javax.faces.component.html.HtmlSelectOneMenu;

import de.larmic.butterfaces.component.html.feature.AutoFocus;

@ResourceDependencies({
      @ResourceDependency(library = "butterfaces-css", name = "butterfaces-default.css", target = "head"),
      @ResourceDependency(library = "butterfaces-css", name = "butterfaces-filterable.css", target = "head"),
      @ResourceDependency(library = "butterfaces-js", name = "butterfaces-fixed.js", target = "head"),
      @ResourceDependency(library = "butterfaces-configurable", name = "jquery.min.js", target = "head"),
      @ResourceDependency(library = "butterfaces-configurable", name = "bootstrap.min.css", target = "head"),
      @ResourceDependency(library = "butterfaces-configurable", name = "bootstrap.min.js", target = "head"),
      @ResourceDependency(library = "butterfaces-js", name = "butterfaces-tooltip.jquery.js", target = "head"),
      @ResourceDependency(library = "butterfaces-js", name = "butterfaces-filterableSelect.jquery.js", target = "head")
})
@FacesComponent(HtmlComboBox.COMPONENT_TYPE)
public class HtmlComboBox extends HtmlSelectOneMenu implements HtmlInputComponent, AutoFocus {

   public static final String COMPONENT_TYPE = "de.larmic.butterfaces.component.comboBox";
   public static final String COMPONENT_FAMILY = "de.larmic.butterfaces.component.family";
   public static final String RENDERER_TYPE = "de.larmic.butterfaces.component.renderkit.html_basic.ComboBoxRenderer";

   protected static final String PROPERTY_TOOLTIP = "tooltip";
   protected static final String PROPERTY_HIDE_LABEL = "hideLabel";
   protected static final String PROPERTY_FILTERABLE = "filterable";
    protected static final String PROPERTY_HTML5_AUTO_FOCUS = "autoFocus";

   public HtmlComboBox() {
      super();
      this.setRendererType(RENDERER_TYPE);
   }

    @Override
    public List getSupportedFacets() {
        return Collections.emptyList();
    }

   @Override
   public String getFamily() {
      return COMPONENT_FAMILY;
   }

   @Override
   public String getTooltip() {
      return (String) this.getStateHelper().eval(PROPERTY_TOOLTIP);
   }

   public void setTooltip(final String tooltip) {
      this.updateStateHelper(PROPERTY_TOOLTIP, tooltip);
   }

    @Override
    public boolean isAutoFocus() {
        final Object eval = this.getStateHelper().eval(PROPERTY_HTML5_AUTO_FOCUS);
        return eval == null ? false : (Boolean) eval;
    }

    @Override
    public void setAutoFocus(final boolean autoFocus) {
        this.updateStateHelper(PROPERTY_HTML5_AUTO_FOCUS, autoFocus);
    }

   @Override
   public boolean isHideLabel() {
      final Object eval = this.getStateHelper().eval(PROPERTY_HIDE_LABEL);
      return eval == null ? false : (Boolean) eval;
   }

   public void setHideLabel(final boolean hideLabel) {
      this.updateStateHelper(PROPERTY_HIDE_LABEL, hideLabel);
   }

   public boolean isFilterable() {
      final Object eval = this.getStateHelper().eval(PROPERTY_FILTERABLE);
      return eval == null ? false : (Boolean) eval;
   }

   public void setFilterable(final boolean filterable) {
      this.updateStateHelper(PROPERTY_FILTERABLE, filterable);
   }

   private void updateStateHelper(final String propertyName, final Object value) {
      this.getStateHelper().put(propertyName, value);

      final ValueExpression ve = this.getValueExpression(propertyName);

      if (ve != null) {
         ve.setValue(this.getFacesContext().getELContext(), value);
      }
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy