Example usage for org.apache.wicket.markup MarkupStream hasMore

List of usage examples for org.apache.wicket.markup MarkupStream hasMore

Introduction

In this page you can find the example usage for org.apache.wicket.markup MarkupStream hasMore.

Prototype

public boolean hasMore() 

Source Link

Usage

From source file:com.lyndir.lhunath.snaplog.webapp.view.MediaView.java

License:Apache License

/**
 * @param id        The wicket ID of this component.
 * @param model     The model that will provide the {@link Media} to show in this view.
 * @param quality   The quality at which to show the {@link Media}.
 * @param clickable <code>true</code>: The media will be clickable. When clicked, the {@link #onClick(AjaxRequestTarget)} will be
 *                  fired.<br> <code>false</code>: The media will not be clickable. There is no need to implement {@link
 *                  #onClick(AjaxRequestTarget)}.
 *//*from  w w  w .j  a v  a  2s.  c o  m*/
public MediaView(final String id, final IModel<Media> model, final Quality quality, final boolean clickable) {

    super(id, model);

    // The media container.
    WebMarkupContainer media = new WebMarkupContainer("media");
    add(media.add(new AttributeAppender("class", new Model<String>(quality.getName()), " ")));

    // The media image link/container.
    WebMarkupContainer image;
    if (clickable) {
        image = new AjaxFallbackLink<Media>("image", getModel()) {

            @Override
            public void onClick(final AjaxRequestTarget target) {

                MediaView.this.onClick(target);
            }

            @Override
            public boolean isVisible() {

                return getModelObject() != null;
            }
        };
        media.add(new CSSClassAttributeAppender("link"));
    } else
        image = new WebMarkupContainer("image") {

            @Override
            public boolean isVisible() {

                return getModelObject() != null;
            }
        };
    media.add(image);
    media.add(new WebMarkupContainer("tools") {

        {
            add(new ExternalLink("original", new LoadableDetachableModel<String>() {

                @Override
                protected String load() {

                    try {
                        URL resourceURL = sourceDelegate.findResourceURL(SnaplogSession.get().newToken(),
                                getModelObject(), Quality.ORIGINAL);
                        if (resourceURL == null)
                            // TODO: May want to display something useful to the user like a specific "not-found" thumbnail.
                            return null;

                        return resourceURL.toExternalForm();
                    } catch (PermissionDeniedException ignored) {
                        // TODO: May want to display something useful to the user like a specific "denied" thumbnail.
                        return null;
                    }
                }
            }) {
                @Override
                protected void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) {

                    if (!renderAsMini(markupStream, openTag))
                        super.onComponentTagBody(markupStream, openTag);
                }
            });
            add(new AjaxLink<Media>("share", getModel()) {
                @Override
                public void onClick(final AjaxRequestTarget target) {

                    try {
                        Tab.SHARED.activateWithState(new SharedTabPanel.SharedTabState(getModelObject()));
                    } catch (PermissionDeniedException e) {
                        error(e.getLocalizedMessage());
                    }
                }

                @Override
                protected void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) {

                    if (!renderAsMini(markupStream, openTag))
                        super.onComponentTagBody(markupStream, openTag);
                }

                @Override
                public boolean isVisible() {

                    return securityService.hasAccess(Permission.ADMINISTER, SnaplogSession.get().newToken(),
                            getModelObject());
                }
            });
            add(new WebMarkupContainer("permissions") {
                @Override
                protected void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) {

                    if (!renderAsMini(markupStream, openTag))
                        super.onComponentTagBody(markupStream, openTag);
                }

                @Override
                public boolean isVisible() {

                    return securityService.hasAccess(Permission.ADMINISTER, SnaplogSession.get().newToken(),
                            getModelObject());
                }
            });
            add(new Link<Media>("delete", getModel()) {
                @Override
                public void onClick() {

                    try {
                        sourceDelegate.delete(SnaplogSession.get().newToken(), getModelObject());
                    } catch (PermissionDeniedException e) {
                        error(e.getLocalizedMessage());
                    }
                }

                @Override
                protected void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) {

                    if (!renderAsMini(markupStream, openTag))
                        super.onComponentTagBody(markupStream, openTag);
                }

                @Override
                public boolean isVisible() {

                    return securityService.hasAccess(Permission.ADMINISTER, SnaplogSession.get().newToken(),
                            getModelObject());
                }
            });

            add(CSSClassAttributeAppender.of(new LoadableDetachableModel<String>() {
                @Override
                protected String load() {

                    return isMini(quality) ? "mini" : null;
                }
            }));
        }

        @Override
        public boolean isVisible() {

            return getModelObject() != null;
        }

        private boolean renderAsMini(final MarkupStream markupStream, final ComponentTag openTag) {

            if (isMini(quality)) {
                // Discard all elements from the markup stream until our close tag.
                while (markupStream.hasMore())
                    if (markupStream.next().closes(openTag))
                        break;

                replaceComponentTagBody(markupStream, openTag, "");
                return true;
            }

            return false;
        }
    });

    image.add(new AttributeModifier("style", true, new LoadableDetachableModel<String>() {

        @Override
        protected String load() {

            try {
                URL resourceURL = sourceDelegate.findResourceURL(SnaplogSession.get().newToken(),
                        getModelObject(), quality);
                if (resourceURL == null)
                    // TODO: May want to display something useful to the user like a specific "not-found" thumbnail.
                    return null;

                return String.format("background-image: url('%s')", resourceURL.toExternalForm());
            } catch (PermissionDeniedException ignored) {
                // TODO: May want to display something useful to the user like a specific "denied" thumbnail.
                return null;
            }
        }
    }));
    image.add(new ContextImage("thumb", new LoadableDetachableModel<String>() {

        @Override
        protected String load() {

            logger.dbg("Loading Media: %s, Quality: %s", getModelObject(), quality);

            try {
                URL resourceURL = sourceDelegate.findResourceURL(SnaplogSession.get().newToken(),
                        getModelObject(), Quality.THUMBNAIL);
                if (resourceURL == null)
                    // TODO: May want to display something useful to the user like a specific "not-found" thumbnail.
                    return null;

                return resourceURL.toExternalForm();
            } catch (PermissionDeniedException ignored) {
                // TODO: May want to display something useful to the user like a specific "denied" thumbnail.
                return null;
            }
        }
    }));
    image.add(new ContextImage("full", new LoadableDetachableModel<String>() {

        @Override
        protected String load() {

            try {
                URL resourceURL = sourceDelegate.findResourceURL(SnaplogSession.get().newToken(),
                        getModelObject(), quality);
                if (resourceURL == null)
                    // TODO: May want to display something useful to the user like a specific "not-found" thumbnail.
                    return null;

                return resourceURL.toExternalForm();
            } catch (PermissionDeniedException ignored) {
                // TODO: May want to display something useful to the user like a specific "denied" thumbnail.
                return null;
            }
        }
    }) {
        @Override
        public boolean isVisible() {

            return quality == Quality.FULLSCREEN;
        }
    });
    image.add(new Label("caption", new LoadableDetachableModel<String>() {

        @Override
        protected String load() {

            return getCaptionString();
        }
    }) {

        @Override
        public boolean isVisible() {

            return getModelObject() != null;
        }
    });
}

From source file:com.servoy.j2db.server.headlessclient.dataui.SortableCellViewHeaders.java

License:Open Source License

private void renderSortableCellViewHeaderTagBody(final MarkupStream markupStream, final ComponentTag openTag) {
    renderColumnIdx = 0;//from  www.j  av a2  s.  co m
    headerMarkupStartIdx = markupStream.getCurrentIndex();
    orderedHeaders = view.getOrderedHeaders();
    orderedHeaderIds = view.getOrderedHeaderIds();

    if ((markupStream != null) && (markupStream.getCurrentIndex() > 0)) {
        // If the original tag has been changed from open-close to open-body-close,
        // than historically renderComponentTagBody gets called, but actually
        // it shouldn't do anything since there is no body for that tag.
        ComponentTag origOpenTag = (ComponentTag) markupStream.get(markupStream.getCurrentIndex() - 1);
        if (origOpenTag.isOpenClose()) {
            return;
        }
    }

    // If the open tag requires a close tag
    boolean render = openTag.requiresCloseTag();
    if (render == false) {
        // Tags like <p> do not require a close tag, but they may have.
        render = !openTag.hasNoCloseTag();
    }

    if (render == true) {
        // Loop through the markup in this container
        while (markupStream.hasMore() && !markupStream.get().closes(openTag)) {
            // Render markup element. Doing so must advance the markup
            // stream
            final int index = markupStream.getCurrentIndex();
            _renderNext(markupStream);
            if (index == markupStream.getCurrentIndex()) {
                markupStream.throwMarkupException(
                        "Markup element at index " + index + " failed to advance the markup stream"); //$NON-NLS-1$ //$NON-NLS-2$
            }
        }
    }
}

From source file:org.artifactory.common.wicket.component.template.HtmlTemplate.java

License:Open Source License

public static String readBodyMarkup(MarkupStream markupStream, ComponentTag openTag) {
    StringBuilder innerMarkup = new StringBuilder();
    while (markupStream.hasMore()) {
        if (markupStream.get().closes(openTag)) {
            return innerMarkup.toString();
        }//from  w  ww. j  a v  a  2s  .  c o  m
        innerMarkup.append(markupStream.get().toCharSequence().toString());
        markupStream.next();
    }
    throw new MarkupException(markupStream, "Expected close tag for " + openTag);
}