Package org.apache.wicket.markup

Examples of org.apache.wicket.markup.MarkupElement


    final MarkupStream stream = getMarkupStream(component);
    final Response response = component.getResponse();

    while (stream.hasMore())
    {
      MarkupElement e = stream.get();
      stream.next();
      if (e instanceof WicketTag)
      {
        WicketTag wt = (WicketTag)e;
        if (wt.isBorderTag() && wt.isClose())
        {
          break;
        }
        else
        {
          throw new WicketRuntimeException(
            "Unexpected tag encountered in markup of component border " +
              getClass().getName() + ". Tag: " + wt.toString() +
              ", expected tag: </wicket:border>");
        }
      }
      response.write(e.toCharSequence());
    }
  }
View Full Code Here


        // if the tag is of form <wicket:message>{foo}</wicket:message> use {foo} as
        // default value for the message, otherwise do nothing
        if (!tag.isOpenClose())
        {
          MarkupElement body = markupStream.get();
          if (body instanceof RawMarkup)
          {
            replaceComponentTagBody(markupStream, openTag, body.toCharSequence());
          }
        }
      }
    }
View Full Code Here

   *            The markup stream
   */
  private final void renderNext(final MarkupStream markupStream)
  {
    // Get the current markup element
    final MarkupElement element = markupStream.get();

    // If it a tag like <wicket..> or <span wicket:id="..." >
    if ((element instanceof ComponentTag) && !markupStream.atCloseTag())
    {
      // Get element as tag
      final ComponentTag tag = (ComponentTag)element;

      // Get component id
      final String id = tag.getId();

      // Get the component for the id from the given container
      final Component component = get(id);

      // Failed to find it?
      if (component != null)
      {
        component.render(markupStream);
      }
      else
      {
        // 2rd try: Components like Border and Panel might implement
        // the ComponentResolver interface as well.
        MarkupContainer container = this;
        while (container != null)
        {
          if (container instanceof IComponentResolver)
          {
            if (((IComponentResolver)container).resolve(this, markupStream, tag))
            {
              return;
            }
          }

          container = container.findParent(MarkupContainer.class);
        }

        // 3rd try: Try application's component resolvers
        final List componentResolvers = getApplication().getPageSettings()
          .getComponentResolvers();
        final Iterator iterator = componentResolvers.iterator();
        while (iterator.hasNext())
        {
          final IComponentResolver resolver = (IComponentResolver)iterator.next();
          if (resolver.resolve(this, markupStream, tag))
          {
            return;
          }
        }

        if (tag instanceof WicketTag)
        {
          if (((WicketTag)tag).isChildTag())
          {
            markupStream.throwMarkupException("Found " + tag.toString() +
              " but no <wicket:extend>");
          }
          else
          {
            markupStream.throwMarkupException("Failed to handle: " + tag.toString());
          }
        }

        // No one was able to handle the component id
        markupStream.throwMarkupException("Unable to find component with id '" + id +
          "' in " + this + ". This means that you declared wicket:id=" + id +
          " in your markup, but that you either did not add the " +
          "component to your page at all, or that the hierarchy does not match.");
      }
    }
    else
    {
      // Render as raw markup
      if (log.isDebugEnabled())
      {
        log.debug("Rendering raw markup");
      }
      getResponse().write(element.toCharSequence());
      markupStream.next();
    }
  }
View Full Code Here

    stream.setCurrentIndex(0);

    boolean insideBorderMarkup = false;
    while (stream.hasMore())
    {
      MarkupElement elem = stream.get();
      stream.next();
      if (elem instanceof WicketTag)
      {
        WicketTag wTag = (WicketTag)elem;
        if (!insideBorderMarkup)
        {
          if (wTag.isBorderTag() && wTag.isOpen())
          {
            insideBorderMarkup = true;
            continue;
          }
          else
          {
            throw new WicketRuntimeException(
              "Unexpected tag encountered in markup of component border " +
                getClass().getName() + ". Tag: " + wTag.toString() +
                ", expected tag: <wicket:border>");
          }
        }
        else
        {
          if (wTag.isBodyTag())
          {
            break;
          }
          else
          {
            throw new WicketRuntimeException(
              "Unexpected tag encountered in markup of component border " +
                getClass().getName() + ". Tag: " + wTag.toString() +
                ", expected tag: <wicket:body> or </wicket:body>");
          }
        }
      }
      if (insideBorderMarkup)
      {
        response.write(elem.toCharSequence());
      }
    }

    if (!stream.hasMore())
    {
View Full Code Here

    final MarkupStream stream = getMarkupStream(component);
    final Response response = component.getResponse();

    while (stream.hasMore())
    {
      MarkupElement elem = stream.get();
      stream.next();
      if (elem instanceof WicketTag)
      {
        WicketTag wTag = (WicketTag)elem;
        if (wTag.isBorderTag() && wTag.isClose())
        {
          break;
        }
        else
        {
          throw new WicketRuntimeException(
            "Unexpected tag encountered in markup of component border " +
              getClass().getName() + ". Tag: " + wTag.toString() +
              ", expected tag: </wicket:border>");
        }
      }
      response.write(elem.toCharSequence());
    }
  }
View Full Code Here

    IMarkupFragment markup = getMarkup();
    if (markup != null)
    {
      for (int i = 0; i < markup.size(); i++)
      {
        MarkupElement elem = markup.get(i);
        if (elem instanceof ComponentTag)
        {
          return (ComponentTag)elem;
        }
      }
View Full Code Here

    MarkupStream markupStream = new MarkupStream(markup);

    // Flag: we stated the render process
    markRendering(true);

    MarkupElement elem = markup.get(0);
    if (elem instanceof ComponentTag)
    {
      // Guarantee that the markupStream is set and determineVisibility not yet tested
      // See WICKET-2049
      ((ComponentTag)elem).onBeforeRender(this, markupStream);
View Full Code Here

  {
    // Get associated markup file for the Border or Panel component
    final MarkupStream associatedMarkupStream = new MarkupStream(getMarkup(null));

    // Get open tag in associated markup of border component
    MarkupElement elem = associatedMarkupStream.get();
    if ((elem instanceof ComponentTag) == false)
    {
      associatedMarkupStream.throwMarkupException("Expected the open tag. " +
        exceptionMessage);
    }
View Full Code Here

   * @return true, if element was rendered as RawMarkup
   */
  protected final boolean renderNext(final MarkupStream markupStream)
  {
    // Get the current markup element
    final MarkupElement element = markupStream.get();

    // If it's a tag like <wicket..> or <span wicket:id="..." >
    if ((element instanceof ComponentTag) && !markupStream.atCloseTag())
    {
      // Get element as tag
      final ComponentTag tag = (ComponentTag)element;

      // Get component id
      final String id = tag.getId();

      // Get the component for the id from the given container
      Component component = get(id);
      if (component == null)
      {
        component = ComponentResolvers.resolve(this, markupStream, tag, null);
        if ((component != null) && (component.getParent() == null))
        {
          autoAdd(component, markupStream);
        }
        else if (component != null)
        {
          component.setMarkup(markupStream.getMarkupFragment());
        }
      }

      // Failed to find it?
      if (component != null)
      {
        component.render();
      }
      else if (tag.getFlag(ComponentTag.RENDER_RAW))
      {
        // No component found, but "render as raw markup" flag found
        getResponse().write(element.toCharSequence());
        return true;
      }
      else
      {
        if (tag instanceof WicketTag)
        {
          if (((WicketTag)tag).isChildTag())
          {
            markupStream.throwMarkupException("Found " + tag.toString() +
              " but no <wicket:extend>");
          }
          else
          {
            markupStream.throwMarkupException("Failed to handle: " +
              tag.toString() +
              ". It might be that no resolver has been registered to handle this special tag. " +
              " But it also be that you declared wicket:id=" + id +
              " in your markup, but that you either did not add the " +
              "component to your page at all, or that the hierarchy does not match.");
          }
        }

        List<String> names = findSimilarComponents(id);

        // No one was able to handle the component id
        StringBuffer msg = new StringBuffer(500);
        msg.append("Unable to find component with id '");
        msg.append(id);
        msg.append("' in ");
        msg.append(this.toString());
        msg.append("\n\tExpected: '");
        msg.append(getPageRelativePath());
        msg.append(".");
        msg.append(id);
        msg.append("'.\n\tFound with similar names: '");
        msg.append(Strings.join("', ", names));
        msg.append("'");

        log.error(msg.toString());
        markupStream.throwMarkupException(msg.toString());
      }
    }
    else
    {
      // Render as raw markup
      getResponse().write(element.toCharSequence());
      return true;
    }

    return false;
  }
View Full Code Here

      boolean rawMarkup = renderNext(markupStream);

      // Go back to where we were and move the markup stream forward to whatever the next
      // element is.
      markupStream.setCurrentIndex(index);
      MarkupElement elem = markupStream.get();
      if (rawMarkup)
      {
        markupStream.next();
      }
      else if (!markupStream.getTag().isClose())
View Full Code Here

TOP

Related Classes of org.apache.wicket.markup.MarkupElement

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.