Package org.apache.myfaces.tobago.component

Examples of org.apache.myfaces.tobago.component.UITime


  }

  @Override
  protected void setProperties(final UIComponent uiComponent) {
    super.setProperties(uiComponent);
    final UITime component = (UITime) uiComponent;
    final FacesContext context = FacesContext.getCurrentInstance();
    final Application application = context.getApplication();
    if (validatorMessage != null) {
      component.setValueExpression("validatorMessage", validatorMessage);
    }

    if (markup != null) {
      if (!markup.isLiteralText()) {
        component.setValueExpression("markup", markup);
      } else {
        component.setMarkup(org.apache.myfaces.tobago.context.Markup.valueOf(markup.getExpressionString()));
      }
    }
    if (tabIndex != null) {
      if (!tabIndex.isLiteralText()) {
        component.setValueExpression("tabIndex", tabIndex);
      } else {
        component.setTabIndex(Integer.parseInt(tabIndex.getExpressionString()));
      }
    }
    if (validator != null) {
      component.addValidator(new javax.faces.validator.MethodExpressionValidator(validator));
    }
    if (tip != null) {
      component.setValueExpression("tip", tip);
    }

    if (valueChangeListener != null) {
      component.addValueChangeListener(new javax.faces.event.MethodExpressionValueChangeListener(valueChangeListener));
    }
    if (value != null) {
      component.setValueExpression("value", value);
    }

    if (focus != null) {
      if (!focus.isLiteralText()) {
        component.setValueExpression("focus", focus);
      } else {
        component.setFocus(Boolean.parseBoolean(focus.getExpressionString()));
      }
    }
    if (required != null) {
      if (!required.isLiteralText()) {
        component.setValueExpression("required", required);
      } else {
        component.setRequired(Boolean.parseBoolean(required.getExpressionString()));
      }
    }
    if (converterMessage != null) {
      component.setValueExpression("converterMessage", converterMessage);
    }

    if (label != null) {
      component.setValueExpression("label", label);
    }

    if (requiredMessage != null) {
      component.setValueExpression("requiredMessage", requiredMessage);
    }

    if (onchange != null) {
      component.setValueExpression("onchange", onchange);
    }

    if (readonly != null) {
      if (!readonly.isLiteralText()) {
        component.setValueExpression("readonly", readonly);
      } else {
        component.setReadonly(Boolean.parseBoolean(readonly.getExpressionString()));
      }
    }
    if (disabled != null) {
      if (!disabled.isLiteralText()) {
        component.setValueExpression("disabled", disabled);
      } else {
        component.setDisabled(Boolean.parseBoolean(disabled.getExpressionString()));
      }
    }
  }
View Full Code Here


  @Override
  public void prepareRender(FacesContext facesContext, UIComponent component) throws IOException {
    super.prepareRender(facesContext, component);

    if (!TobagoConfig.getInstance(facesContext).isClassicDateTimePicker()) {
      final UITime time = (UITime) component;
      Markup markup = time.getCurrentMarkup();
      markup = markup.add(Markup.valueOf("timepicker"));
      time.setCurrentMarkup(markup);
    }
  }
View Full Code Here

    }
  }

  public void encodeEnd(final FacesContext facesContext, final UIComponent component) throws IOException {

    final UITime time = (UITime) component;
    final String id = time.getClientId(facesContext);
    final String title = HtmlRendererUtils.getTitleFromTipAndMessages(facesContext, time);
    final String currentValue = getCurrentValue(facesContext, time);
    if (LOG.isDebugEnabled()) {
      LOG.debug("currentValue = '" + currentValue + "'");
    }
    final boolean readonly = time.isReadonly();
    final boolean disabled = time.isDisabled();
    final boolean required = time.isRequired();

    final Object value = time.getValue();
    final Date date;
    if (value instanceof Date) {
      date = (Date) value;
    } else if (value instanceof Calendar) {
      date = ((Calendar) value).getTime();
    } else {
      date = new Date();
    }

    TobagoConfig tobagoConfig = TobagoConfig.getInstance(facesContext);

    if (tobagoConfig.isClassicDateTimePicker()) {

      String pattern = "HH:mm";
      if (time.getConverter() != null) {
        final Converter converter = time.getConverter();
        if (converter instanceof DateTimeConverter) {
          final String string = DateFormatUtils.findPattern((DateTimeConverter) converter);
          if (string != null && string.indexOf('s') > -1) {
            pattern += ":ss";
          }
        }
      }
      final boolean hasSeconds = pattern.indexOf('s') > -1;

      final String hour = new SimpleDateFormat("HH").format(date);
      final String minute = new SimpleDateFormat("mm").format(date);
      final String second = new SimpleDateFormat("ss").format(date);

      final String idPrefix = id + ComponentUtils.SUB_SEPARATOR;

      final TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);

      writer.startElement(HtmlElements.DIV, time);
      writer.writeIdAttribute(id);
      writer.writeClassAttribute(Classes.create(time));
      HtmlRendererUtils.writeDataAttributes(facesContext, writer, time);
      writer.writeAttribute(DataAttributes.CLASSIC_DATE_TIME_PICKER, "", false);
      final Style style = new Style(facesContext, time);
      writer.writeStyleAttribute(style);
      final String dateInputId = (String) time.getAttributes().get(Attributes.DATE_INPUT_ID);
      if (dateInputId != null) {
        writer.writeAttribute(DataAttributes.DATE_INPUT_ID, dateInputId, false);
      }
      writer.writeAttribute(DataAttributes.PATTERN, pattern, true);

      writer.startElement(HtmlElements.DIV, time);
      writer.writeIdAttribute(idPrefix + "borderDiv");
      Markup markup = time.getCurrentMarkup();
      if (hasSeconds) {
        markup = markup.add(Markup.SECONDS);
      }
      writer.writeClassAttribute(Classes.create(time, "borderDiv", markup));

      writeInput(writer, time, idPrefix, "hour", hour, title, 24);
      writeInputSeparator(writer, time, ":");
      writeInput(writer, time, idPrefix, "minute", minute, title, 60);
      if (hasSeconds) {
        writeInputSeparator(writer, time, ":");
        writeInput(writer, time, idPrefix, "second", second, title, 60);
      }

      writer.endElement(HtmlElements.DIV);

      writer.startElement(HtmlElements.IMG, null);
      writer.writeIdAttribute(idPrefix + "inc");
      writer.writeClassAttribute(Classes.create(time, "incImage", markup));
      writer.writeAttribute(HtmlAttributes.SRC,
          ResourceManagerUtils.getImageWithPath(facesContext, "image/timeIncrement.gif"), true);
      writer.writeAttribute(HtmlAttributes.ALT, "", false); // TODO: tip
      writer.writeAttribute(HtmlAttributes.READONLY, time.isReadonly());
      writer.writeAttribute(HtmlAttributes.DISABLED, time.isDisabled());
      writer.endElement(HtmlElements.IMG);

      writer.startElement(HtmlElements.IMG, null);
      writer.writeIdAttribute(idPrefix + "dec");
      writer.writeClassAttribute(Classes.create(time, "decImage", markup));
      writer.writeAttribute(HtmlAttributes.SRC,
          ResourceManagerUtils.getImageWithPath(facesContext, "image/timeDecrement.gif"), true);
      writer.writeAttribute(HtmlAttributes.ALT, "", false); // TODO: tip
      writer.writeAttribute(HtmlAttributes.READONLY, time.isReadonly());
      writer.writeAttribute(HtmlAttributes.DISABLED, time.isDisabled());
      writer.endElement(HtmlElements.IMG);

      writer.startElement(HtmlElements.INPUT, time);
      writer.writeAttribute(HtmlAttributes.TYPE, HtmlInputTypes.HIDDEN, false);
      writer.writeIdAttribute(idPrefix + "field");
      writer.writeNameAttribute(id);
      writer.writeAttribute(HtmlAttributes.VALUE, hour + ":" + minute + ":" + second, false);
      writer.endElement(HtmlElements.INPUT);

      writer.endElement(HtmlElements.DIV);

    } else {

      // Todo: in Tobago 3.0 TimeRenderer should extend InRenderer, and this can cleaned up!
      String pattern = null;
      final Converter help = getConverter(facesContext, time);
      if (help instanceof DateTimeConverter) {
        final DateTimeConverter converter = (DateTimeConverter) help;
        pattern = DateFormatUtils.findPattern(converter);
      }
      if (pattern == null) {
        pattern = "HH-mm";
        LOG.warn("Can't find the pattern for the converter! DatePicker may not work correctly. "
            + "Trying to use: '" + pattern + "'");
      }

      final TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);

      writer.startElement(HtmlElements.INPUT, time);
      writer.writeAttribute(HtmlAttributes.TYPE, HtmlInputTypes.TEXT, false); // tbd: no "time"
      writer.writeNameAttribute(id);
      writer.writeIdAttribute(id);
      HtmlRendererUtils.writeDataAttributes(facesContext, writer, time);
      if (currentValue != null) {
        writer.writeAttribute(HtmlAttributes.VALUE, currentValue, true);
      }
      if (title != null) {
        writer.writeAttribute(HtmlAttributes.TITLE, title, true);
      }
      int maxLength = 0;
      for (final Validator validator : time.getValidators()) {
        if (validator instanceof LengthValidator) {
          final LengthValidator lengthValidator = (LengthValidator) validator;
          maxLength = lengthValidator.getMaximum();
        }
        /*if (validator instanceof RegexValidator) {
          RegexValidator regexValidator = (RegexValidator) validator;
          pattern = regexValidator.getPattern();
        }*/
      }
      if (maxLength > 0) {
        writer.writeAttribute(HtmlAttributes.MAXLENGTH, maxLength);
      }
      writer.writeAttribute(DataAttributes.PATTERN, pattern, true);
      writer.writeAttribute(HtmlAttributes.READONLY, readonly);
      writer.writeAttribute(HtmlAttributes.DISABLED, disabled);
      final Integer tabIndex = time.getTabIndex();
      if (tabIndex != null) {
        writer.writeAttribute(HtmlAttributes.TABINDEX, tabIndex);
      }
      final Style style = new Style(facesContext, time);
      writer.writeStyleAttribute(style);

      final String placeholder = time.getPlaceholder();
      if (!disabled && !readonly && StringUtils.isNotBlank(placeholder)) {
        writer.writeAttribute(HtmlAttributes.PLACEHOLDER, placeholder, true);
      }

      writer.writeAttribute(HtmlAttributes.AUTOCOMPLETE, "off", false);

      writer.writeClassAttribute(Classes.create(time));
      /*if (component instanceof AbstractUIInput) {
       String onchange = HtmlUtils.generateOnchange((AbstractUIInput) component, facesContext);
       if (onchange != null) {
         // TODO: create and use utility method to write attributes without quoting
     //      writer.writeAttribute(HtmlAttributes.ONCHANGE, onchange, null);
       }
     } */
      writer.writeAttribute(HtmlAttributes.REQUIRED, required);
      HtmlRendererUtils.renderFocus(id, time.isFocus(), ComponentUtils.isError(time), facesContext, writer);
      HtmlRendererUtils.renderCommandFacet(time, facesContext, writer);

      final String icon = ResourceManagerUtils.getImageWithPath(facesContext, "image/time.png");
      if (icon != null) {
        writer.writeAttribute(DataAttributes.DATE_TIME_ICON, icon, true);
View Full Code Here

    final UIPanel cell1 = (UIPanel) CreateComponentUtils.createComponent(
        facesContext, UIPanel.COMPONENT_TYPE, RendererTypes.PANEL, "cell1");
    cell1.onComponentPopulated(facesContext, parent);
    timePanel.getChildren().add(cell1);

    final UITime time = (UITime) CreateComponentUtils.createComponent(
        facesContext, UITime.COMPONENT_TYPE, RendererTypes.TIME, "time");
    timePanel.getChildren().add(time);

    final UIPanel cell2 = (UIPanel) CreateComponentUtils.createComponent(
        facesContext, UIPanel.COMPONENT_TYPE, RendererTypes.PANEL, "cell2");
View Full Code Here

  private void applyConverterPattern(
      final FacesContext facesContext, final UIPopup popup, final String converterPattern) {
    final UIComponent box = popup.getChildren().get(0);
    final UIComponent timePanel = box.findComponent("timePanel");
    if (converterPattern != null && (converterPattern.indexOf('h') > -1 || converterPattern.indexOf('H') > -1)) {
      final UITime time = (UITime) timePanel.findComponent("time");
      final DateTimeConverter dateTimeConverter
          = (DateTimeConverter) facesContext.getApplication().createConverter(DateTimeConverter.CONVERTER_ID);
      if (converterPattern.indexOf('s') > -1) {
        dateTimeConverter.setPattern("HH:mm:ss");
      } else {
        dateTimeConverter.setPattern("HH:mm");
      }
      dateTimeConverter.setTimeZone(TimeZone.getDefault());
      time.setConverter(dateTimeConverter);
    } else {
      timePanel.setRendered(false);
    }
  }
View Full Code Here

    final UIPanel cell1 = (UIPanel) CreateComponentUtils.createComponent(
        facesContext, UIPanel.COMPONENT_TYPE, RendererTypes.PANEL, "cell1");
    cell1.onComponentPopulated(facesContext, parent);
    timePanel.getChildren().add(cell1);

    final UITime time = (UITime) CreateComponentUtils.createComponent(
        facesContext, UITime.COMPONENT_TYPE, RendererTypes.TIME, "time");
    timePanel.getChildren().add(time);

    final UIPanel cell2 = (UIPanel) CreateComponentUtils.createComponent(
        facesContext, UIPanel.COMPONENT_TYPE, RendererTypes.PANEL, "cell2");
View Full Code Here

  private void applyConverterPattern(FacesContext facesContext, UIPopup popup, String converterPattern) {
    UIComponent box = (UIComponent) popup.getChildren().get(0);
    UIComponent timePanel = box.findComponent("timePanel");
    if (converterPattern != null && (converterPattern.indexOf('h') > -1 || converterPattern.indexOf('H') > -1)) {
      UITime time = (UITime) timePanel.findComponent("time");
      DateTimeConverter dateTimeConverter
          = (DateTimeConverter) facesContext.getApplication().createConverter(DateTimeConverter.CONVERTER_ID);
      if (converterPattern.indexOf('s') > -1) {
        dateTimeConverter.setPattern("HH:mm:ss");
      } else {
        dateTimeConverter.setPattern("HH:mm");
      }
      dateTimeConverter.setTimeZone(TimeZone.getDefault());
      time.setConverter(dateTimeConverter);
    } else {
      timePanel.setRendered(false);
    }
  }
View Full Code Here

    if (!(component instanceof UITime)) {
      LOG.error("Wrong type: Need " + UITime.class.getName() + ", but was " + component.getClass().getName());
      return;
    }

    UITime time = (UITime) component;

    String title = HtmlRendererUtils.getTitleFromTipAndMessages(facesContext, time);
    String currentValue = getCurrentValue(facesContext, time);
    if (LOG.isDebugEnabled()) {
      LOG.debug("currentValue = '" + currentValue + "'");
    }

    String converterPattern = "HH:mm";
    if (time.getConverter() != null) {
      Converter converter = time.getConverter();
      if (converter instanceof DateTimeConverter) {
        String pattern = DateFormatUtils.findPattern((DateTimeConverter) converter);
        if (pattern != null && pattern.indexOf('s') > -1) {
          converterPattern += ":ss";
        }
      }
    }

    boolean hasSeconds = converterPattern.indexOf('s') > -1;

    Object value = time.getValue();
    Date date;
    if (value instanceof Date) {
      date = (Date) value;
    } else if (value instanceof Calendar) {
      date = ((Calendar) value).getTime();
    } else {
      date = new Date();
    }

    String hour = new SimpleDateFormat("HH").format(date);
    String minute = new SimpleDateFormat("mm").format(date);
    String second = new SimpleDateFormat("ss").format(date);

    String id = time.getClientId(facesContext);
    final String idPrefix = id + ComponentUtils.SUB_SEPARATOR;
    TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
    writer.startElement(HtmlElements.DIV, time);
    writer.writeClassAttribute(Classes.create(time));
    HtmlRendererUtils.writeDataAttributes(facesContext, writer, time);
    Style style = new Style(facesContext, time);
    writer.writeStyleAttribute(style);

    writer.startElement(HtmlElements.DIV, time);
    writer.writeAttribute(HtmlAttributes.ID, idPrefix + "borderDiv", false);
    Markup markup = time.getCurrentMarkup();
    if (hasSeconds) {
      markup = markup.add(Markup.SECONDS);
    }
    writer.writeClassAttribute(Classes.create(time, "borderDiv", markup));

    writeInput(writer, time, idPrefix + "hour", hour, true, title);
    writeInputSeparator(writer, time, ":");
    writeInput(writer, time, idPrefix + "minute", minute, false, title);
    if (hasSeconds) {
      writeInputSeparator(writer, time, ":");
      writeInput(writer, time, idPrefix + "second", second, false, title);
    }

    writer.endElement(HtmlElements.DIV);

    String imageId = idPrefix + "inc";
    String imageSrc = "image/timeIncrement.gif";
    writer.startElement(HtmlElements.IMG, null);
    writer.writeIdAttribute(imageId);
    writer.writeClassAttribute(Classes.create(time, "incImage", markup));
    writer.writeAttribute(HtmlAttributes.SRC, ResourceManagerUtils.getImageWithPath(facesContext, imageSrc), true);
    writer.writeAttribute(HtmlAttributes.ALT, "", false); // TODO: tip

    if (!(ComponentUtils.getBooleanAttribute(time, Attributes.DISABLED)
        || ComponentUtils.getBooleanAttribute(time, Attributes.READONLY))) {
      writer.writeAttribute(HtmlAttributes.ONCLICK, "tbgIncTime(this)", false);
    }
    writer.endElement(HtmlElements.IMG);

    imageId = idPrefix + "dec";
    imageSrc = "image/timeDecrement.gif";
    writer.startElement(HtmlElements.IMG, null);
    writer.writeIdAttribute(imageId);
    writer.writeClassAttribute(Classes.create(time, "decImage", markup));
    writer.writeAttribute(HtmlAttributes.SRC, ResourceManagerUtils.getImageWithPath(facesContext, imageSrc), true);
    writer.writeAttribute(HtmlAttributes.ALT, "", false); // TODO: tip
    if (!(ComponentUtils.getBooleanAttribute(time, Attributes.DISABLED)
        || ComponentUtils.getBooleanAttribute(time, Attributes.READONLY))) {
      writer.writeAttribute(HtmlAttributes.ONCLICK, "tbgDecTime(this)", false);
    }
    writer.endElement(HtmlElements.IMG);

    writer.startElement(HtmlElements.INPUT, time);
    writer.writeAttribute(HtmlAttributes.TYPE, HtmlInputTypes.HIDDEN, false);
    writer.writeIdAttribute(id + ":converterPattern");
    writer.writeAttribute(HtmlAttributes.VALUE, converterPattern, true);
    writer.endElement(HtmlElements.INPUT);

    writer.startElement(HtmlElements.INPUT, time);
    writer.writeAttribute(HtmlAttributes.TYPE, HtmlInputTypes.HIDDEN, false);
    writer.writeIdAttribute(id);
    writer.writeNameAttribute(id);
    writer.writeAttribute(HtmlAttributes.VALUE, hour + ":" + minute + ":" + second, false);
    writer.endElement(HtmlElements.INPUT);

    String dateTextBoxId = (String) time.getAttributes().get(Attributes.DATE_INPUT_ID);

    if (dateTextBoxId != null) {
      String[] cmds = {"tbgInitTimeParse('" + id + "', '" + dateTextBoxId + "');"};
      HtmlRendererUtils.writeScriptLoader(facesContext, null, cmds);
    }
View Full Code Here

    final UIPanel cell1 = (UIPanel) CreateComponentUtils.createComponent(
        facesContext, UIPanel.COMPONENT_TYPE, RendererTypes.PANEL, "cell1");
    cell1.onComponentPopulated(facesContext, parent);
    timePanel.getChildren().add(cell1);

    final UITime time = (UITime) CreateComponentUtils.createComponent(
        facesContext, UITime.COMPONENT_TYPE, RendererTypes.TIME, "time");
    timePanel.getChildren().add(time);

    final UIPanel cell2 = (UIPanel) CreateComponentUtils.createComponent(
        facesContext, UIPanel.COMPONENT_TYPE, RendererTypes.PANEL, "cell2");
View Full Code Here

  private void applyConverterPattern(FacesContext facesContext, UIPopup popup, String converterPattern) {
    UIComponent box = (UIComponent) popup.getChildren().get(0);
    UIComponent timePanel = box.findComponent("timePanel");
    if (converterPattern != null && (converterPattern.indexOf('h') > -1 || converterPattern.indexOf('H') > -1)) {
      UITime time = (UITime) timePanel.findComponent("time");
      DateTimeConverter dateTimeConverter
          = (DateTimeConverter) facesContext.getApplication().createConverter(DateTimeConverter.CONVERTER_ID);
      if (converterPattern.indexOf('s') > -1) {
        dateTimeConverter.setPattern("HH:mm:ss");
      } else {
        dateTimeConverter.setPattern("HH:mm");
      }
      dateTimeConverter.setTimeZone(TimeZone.getDefault());
      time.setConverter(dateTimeConverter);
    } else {
      timePanel.setRendered(false);
    }
  }
View Full Code Here

TOP

Related Classes of org.apache.myfaces.tobago.component.UITime

Copyright © 2018 www.massapicom. 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.