List of usage examples for org.apache.wicket.markup MarkupStream hasMore
public boolean hasMore()
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); }