/**
   * Writes the optional attributes configured via this base class to the supplied {@link
   * TagWriter}. The set of optional attributes that will be rendered includes any non-standard
   * dynamic attributes. Called by {@link #writeDefaultAttributes(TagWriter)}.
   */
  protected void writeOptionalAttributes(TagWriter tagWriter) throws JspException {
    tagWriter.writeOptionalAttributeValue(CLASS_ATTRIBUTE, resolveCssClass());
    tagWriter.writeOptionalAttributeValue(
        STYLE_ATTRIBUTE, ObjectUtils.getDisplayString(evaluate("cssStyle", getCssStyle())));
    writeOptionalAttribute(tagWriter, LANG_ATTRIBUTE, getLang());
    writeOptionalAttribute(tagWriter, TITLE_ATTRIBUTE, getTitle());
    writeOptionalAttribute(tagWriter, DIR_ATTRIBUTE, getDir());
    writeOptionalAttribute(tagWriter, TABINDEX_ATTRIBUTE, getTabindex());
    writeOptionalAttribute(tagWriter, ONCLICK_ATTRIBUTE, getOnclick());
    writeOptionalAttribute(tagWriter, ONDBLCLICK_ATTRIBUTE, getOndblclick());
    writeOptionalAttribute(tagWriter, ONMOUSEDOWN_ATTRIBUTE, getOnmousedown());
    writeOptionalAttribute(tagWriter, ONMOUSEUP_ATTRIBUTE, getOnmouseup());
    writeOptionalAttribute(tagWriter, ONMOUSEOVER_ATTRIBUTE, getOnmouseover());
    writeOptionalAttribute(tagWriter, ONMOUSEMOVE_ATTRIBUTE, getOnmousemove());
    writeOptionalAttribute(tagWriter, ONMOUSEOUT_ATTRIBUTE, getOnmouseout());
    writeOptionalAttribute(tagWriter, ONKEYPRESS_ATTRIBUTE, getOnkeypress());
    writeOptionalAttribute(tagWriter, ONKEYUP_ATTRIBUTE, getOnkeyup());
    writeOptionalAttribute(tagWriter, ONKEYDOWN_ATTRIBUTE, getOnkeydown());

    if (!CollectionUtils.isEmpty(this.dynamicAttributes)) {
      for (String attr : this.dynamicAttributes.keySet()) {
        tagWriter.writeOptionalAttributeValue(
            attr, getDisplayString(this.dynamicAttributes.get(attr)));
      }
    }
  }
Exemple #2
0
  /**
   * Writes the way.
   *
   * @param way The way to be processed.
   */
  public void process(Way way) {
    OsmUser user;
    List<WayNode> wayNodes;
    Collection<Tag> tags;

    user = way.getUser();

    startObject(first);
    addAttribute("id", way.getId(), true);
    addAttribute("version", way.getVersion(), false);
    addAttribute("timestamp", way.getFormattedTimestamp(getTimestampFormat()), false);

    if (!user.equals(OsmUser.NONE)) {
      addAttribute("uid", user.getId(), false);
      addAttribute("user", user.getName(), false);
    }

    if (way.getChangesetId() != 0) {
      addAttribute("changeset", way.getChangesetId(), false);
    }

    wayNodes = way.getWayNodes();
    tags = way.getTags();

    if (wayNodes.size() > 0 || tags.size() > 0) {
      objectKey("nodes", false);
      startList();
      for (WayNode wayNode : wayNodes) {
        wayNodeWriter.processWayNode(wayNode);
      }
      wayNodeWriter.reset();
      endList();

      objectKey("tags", false);
      startObject(true);
      for (Tag tag : tags) {
        tagWriter.process(tag);
      }
      tagWriter.reset();
      endObject();
    }

    endObject();

    if (first) {
      first = false;
    }
  }
Exemple #3
0
  /** {@inheritDoc} */
  @Override
  public void setWriter(final Writer writer) {
    super.setWriter(writer);

    wayNodeWriter.setWriter(writer);
    tagWriter.setWriter(writer);
  }
  @Override
  protected int writeTagContent(TagWriter tagWriter) throws JspException {
    super.writeTagContent(tagWriter);

    if (!isDisabled()) {
      // Write out the 'field was present' marker.
      tagWriter.startTag("input");
      tagWriter.writeAttribute("type", "hidden");
      String name = WebDataBinder.DEFAULT_FIELD_MARKER_PREFIX + getName();
      tagWriter.writeAttribute("name", name);
      tagWriter.writeAttribute("value", processFieldValue(name, "on", getInputType()));
      tagWriter.endTag();
    }

    return SKIP_BODY;
  }
  @Override
  protected void writeTagDetails(TagWriter tagWriter) throws JspException {
    tagWriter.writeAttribute("type", getInputType());

    Object boundValue = getBoundValue();
    Class valueType = getBindStatus().getValueType();

    if (Boolean.class.equals(valueType) || boolean.class.equals(valueType)) {
      // the concrete type may not be a Boolean - can be String
      if (boundValue instanceof String) {
        boundValue = Boolean.valueOf((String) boundValue);
      }
      Boolean booleanValue = (boundValue != null ? (Boolean) boundValue : Boolean.FALSE);
      renderFromBoolean(booleanValue, tagWriter);
    } else {
      Object value = getValue();
      if (value == null) {
        throw new IllegalArgumentException(
            "Attribute 'value' is required when binding to non-boolean values");
      }
      Object resolvedValue = (value instanceof String ? evaluate("value", value) : value);
      renderFromValue(resolvedValue, tagWriter);
    }
  }
Exemple #6
0
  @Override
  public void emit(TagWriter writer) throws IOException {
    writer.startTag(tagName, attributeMap);

    if (!elementList.isEmpty()) {
      writer.indent();

      for (Element element : elementList) {
        writer.newLine();
        element.emit(writer);
      }

      writer.unindent();
      writer.newLine();
      writer.appendIndentation();
    }

    endTag(writer);
  }
  /**
   * Renders the '{@code input(radio)}' element with the configured {@link #setValue(Object) value}.
   * Marks the element as checked if the value matches the {@link #getValue bound value}.
   */
  @Override
  protected int writeTagContent(TagWriter tagWriter) throws JspException {
    tagWriter.startTag("input");
    String id = resolveId();
    writeOptionalAttribute(tagWriter, "id", id);
    writeOptionalAttribute(tagWriter, "name", getName());
    writeOptionalAttributes(tagWriter);
    writeTagDetails(tagWriter);
    tagWriter.endTag();

    Object resolvedLabel = evaluate("label", getLabel());
    if (resolvedLabel != null) {
      tagWriter.startTag("label");
      tagWriter.writeAttribute("for", id);
      tagWriter.appendValue(convertToDisplayString(resolvedLabel));
      tagWriter.endTag();
    }

    return SKIP_BODY;
  }