Search in sources :

Example 1 with MarkupRenderer

use of org.apache.tapestry5.services.MarkupRenderer in project tapestry-5 by apache.

the class ConfigureHTMLElementFilter method renderMarkup.

public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
    renderer.renderMarkup(writer);
    // After that's done (i.e., pretty much all rendering), touch it up a little.
    Element html = writer.getDocument().find("html");
    // to describe locale, and if debug is enabled.
    if (html != null) {
        html.attributes("data-locale", threadLocale.getLocale().toString());
        if (debugEnabled) {
            html.attributes("data-debug-enabled", "true");
        }
    }
}
Also used : Element(org.apache.tapestry5.dom.Element)

Example 2 with MarkupRenderer

use of org.apache.tapestry5.services.MarkupRenderer in project tapestry-5 by apache.

the class TapestryModule method contributeMarkupRenderer.

/**
 * Adds page render filters, each of which provides an {@link org.apache.tapestry5.annotations.Environmental}
 * service. Filters
 * often provide {@link org.apache.tapestry5.annotations.Environmental} services needed by
 * components as they render.
 * <dl>
 * <dt>DocumentLinker</dt>
 * <dd>Provides {@link org.apache.tapestry5.internal.services.DocumentLinker}</dd>
 * <dt>ClientBehaviorSupport (deprecated in 5.4)</dt>
 * <dd>Provides {@link ClientBehaviorSupport}</dd>
 * <dt>Heartbeat</dt>
 * <dd>Provides {@link org.apache.tapestry5.services.Heartbeat}</dd>
 * <dt>ValidationDecorator (deprecated in 5.4)</dt>
 * <dd>Provides {@link org.apache.tapestry5.ValidationDecorator} (via {@link ValidationDecoratorFactory#newInstance(org.apache.tapestry5.MarkupWriter)})</dd>
 * <dt>PageNameMeta (since 5.4)</dt>
 * <dd>Renders a {@code <meta/>} tag describing the active page name (development mode only)</dd>
 * <dt>ImportCoreStack (since 5.4) </dt>
 * <dd>Imports the "core" stack (necessary to get the Bootstrap CSS, if nothing else).</dd>
 * </dl>
 *
 * @see org.apache.tapestry5.SymbolConstants#OMIT_GENERATOR_META
 * @see org.apache.tapestry5.http.TapestryHttpSymbolConstants#PRODUCTION_MODE
 * @see org.apache.tapestry5.SymbolConstants#INCLUDE_CORE_STACK
 * @see org.apache.tapestry5.SymbolConstants#ENABLE_PAGELOADING_MASK
 */
public void contributeMarkupRenderer(OrderedConfiguration<MarkupRendererFilter> configuration, final ModuleManager moduleManager, @Symbol(SymbolConstants.OMIT_GENERATOR_META) final boolean omitGeneratorMeta, @Symbol(TapestryHttpConstants.TAPESTRY_VERSION) final String tapestryVersion, @Symbol(TapestryHttpSymbolConstants.PRODUCTION_MODE) boolean productionMode, @Symbol(SymbolConstants.INCLUDE_CORE_STACK) final boolean includeCoreStack, @Symbol(SymbolConstants.ENABLE_PAGELOADING_MASK) final boolean enablePageloadingMask, final ValidationDecoratorFactory validationDecoratorFactory) {
    MarkupRendererFilter documentLinker = new MarkupRendererFilter() {

        public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
            DocumentLinkerImpl linker = new DocumentLinkerImpl(moduleManager, omitGeneratorMeta, enablePageloadingMask, tapestryVersion);
            environment.push(DocumentLinker.class, linker);
            renderer.renderMarkup(writer);
            environment.pop(DocumentLinker.class);
            linker.updateDocument(writer.getDocument());
        }
    };
    MarkupRendererFilter clientBehaviorSupport = new MarkupRendererFilter() {

        public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
            ClientBehaviorSupportImpl clientBehaviorSupport = new ClientBehaviorSupportImpl();
            environment.push(ClientBehaviorSupport.class, clientBehaviorSupport);
            renderer.renderMarkup(writer);
            environment.pop(ClientBehaviorSupport.class);
        }
    };
    MarkupRendererFilter heartbeat = new MarkupRendererFilter() {

        public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
            Heartbeat heartbeat = new HeartbeatImpl();
            heartbeat.begin();
            environment.push(Heartbeat.class, heartbeat);
            renderer.renderMarkup(writer);
            environment.pop(Heartbeat.class);
            heartbeat.end();
        }
    };
    MarkupRendererFilter defaultValidationDecorator = new MarkupRendererFilter() {

        public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
            ValidationDecorator decorator = validationDecoratorFactory.newInstance(writer);
            environment.push(ValidationDecorator.class, decorator);
            renderer.renderMarkup(writer);
            environment.pop(ValidationDecorator.class);
        }
    };
    MarkupRendererFilter importCoreStack = new MarkupRendererFilter() {

        public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
            renderer.renderMarkup(writer);
            environment.peekRequired(JavaScriptSupport.class).importStack(InternalConstants.CORE_STACK_NAME);
        }
    };
    configuration.add("DocumentLinker", documentLinker);
    configuration.add("ClientBehaviorSupport", clientBehaviorSupport, "after:JavaScriptSupport");
    configuration.add("Heartbeat", heartbeat);
    configuration.add("ValidationDecorator", defaultValidationDecorator);
    if (includeCoreStack) {
        configuration.add("ImportCoreStack", importCoreStack);
    }
    if (productionMode) {
        configuration.add("PageNameMeta", null);
    } else {
        configuration.addInstance("PageNameMeta", PageNameMetaInjector.class);
    }
}
Also used : MarkupRenderer(org.apache.tapestry5.services.MarkupRenderer) PartialMarkupRenderer(org.apache.tapestry5.services.PartialMarkupRenderer) PartialMarkupRendererFilter(org.apache.tapestry5.services.PartialMarkupRendererFilter) MarkupRendererFilter(org.apache.tapestry5.services.MarkupRendererFilter) JavaScriptSupport(org.apache.tapestry5.services.javascript.JavaScriptSupport) Heartbeat(org.apache.tapestry5.services.Heartbeat) MarkupWriter(org.apache.tapestry5.MarkupWriter) ValidationDecorator(org.apache.tapestry5.ValidationDecorator)

Example 3 with MarkupRenderer

use of org.apache.tapestry5.services.MarkupRenderer in project tapestry-5 by apache.

the class PageNameMetaInjector method renderMarkup.

public void renderMarkup(MarkupWriter writer, MarkupRenderer delegate) {
    delegate.renderMarkup(writer);
    String pageName = globals.getActivePageName();
    Document document = writer.getDocument();
    Element element = document.find("html/head");
    if (element != null) {
        element.element("meta", "name", "tapestry-page-name", "content", pageName);
    }
}
Also used : Element(org.apache.tapestry5.dom.Element) Document(org.apache.tapestry5.dom.Document)

Example 4 with MarkupRenderer

use of org.apache.tapestry5.services.MarkupRenderer in project tapestry-5 by apache.

the class JavaScriptModule method exposeJavaScriptSupportForFullPageRenders.

/**
 * Adds page render filters, each of which provides an {@link org.apache.tapestry5.annotations.Environmental}
 * service. Filters
 * often provide {@link org.apache.tapestry5.annotations.Environmental} services needed by
 * components as they render.
 * <dl>
 * <dt>JavascriptSupport</dt>
 * <dd>Provides {@link JavaScriptSupport}</dd>
 * </dl>
 */
@Contribute(MarkupRenderer.class)
public void exposeJavaScriptSupportForFullPageRenders(OrderedConfiguration<MarkupRendererFilter> configuration, final JavaScriptStackSource javascriptStackSource, final JavaScriptStackPathConstructor javascriptStackPathConstructor, final Request request) {
    final BooleanHook suppressCoreStylesheetsHook = createSuppressCoreStylesheetHook(request);
    MarkupRendererFilter javaScriptSupport = new MarkupRendererFilter() {

        public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
            DocumentLinker linker = environment.peekRequired(DocumentLinker.class);
            JavaScriptSupportImpl support = new JavaScriptSupportImpl(linker, javascriptStackSource, javascriptStackPathConstructor, suppressCoreStylesheetsHook);
            environment.push(JavaScriptSupport.class, support);
            renderer.renderMarkup(writer);
            environment.pop(JavaScriptSupport.class);
            support.commit();
        }
    };
    configuration.add("JavaScriptSupport", javaScriptSupport, "after:DocumentLinker");
}
Also used : MarkupRenderer(org.apache.tapestry5.services.MarkupRenderer) PartialMarkupRenderer(org.apache.tapestry5.services.PartialMarkupRenderer) PartialMarkupRendererFilter(org.apache.tapestry5.services.PartialMarkupRendererFilter) MarkupRendererFilter(org.apache.tapestry5.services.MarkupRendererFilter) DocumentLinker(org.apache.tapestry5.internal.services.DocumentLinker) MarkupWriter(org.apache.tapestry5.MarkupWriter) JavaScriptSupportImpl(org.apache.tapestry5.internal.services.ajax.JavaScriptSupportImpl) BooleanHook(org.apache.tapestry5.BooleanHook) Contribute(org.apache.tapestry5.ioc.annotations.Contribute)

Example 5 with MarkupRenderer

use of org.apache.tapestry5.services.MarkupRenderer in project tapestry-5 by apache.

the class AddBrowserCompatibilityStyles method renderMarkup.

public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
    renderer.renderMarkup(writer);
    Element head = writer.getDocument().find("html/head");
    // Only add the respective style documents if we've rendered an HTML document
    if (head != null) {
        head.raw(ie9);
        head.raw(ie8);
    }
}
Also used : Element(org.apache.tapestry5.dom.Element)

Aggregations

Element (org.apache.tapestry5.dom.Element)3 MarkupWriter (org.apache.tapestry5.MarkupWriter)2 MarkupRenderer (org.apache.tapestry5.services.MarkupRenderer)2 MarkupRendererFilter (org.apache.tapestry5.services.MarkupRendererFilter)2 PartialMarkupRenderer (org.apache.tapestry5.services.PartialMarkupRenderer)2 PartialMarkupRendererFilter (org.apache.tapestry5.services.PartialMarkupRendererFilter)2 BooleanHook (org.apache.tapestry5.BooleanHook)1 ValidationDecorator (org.apache.tapestry5.ValidationDecorator)1 Document (org.apache.tapestry5.dom.Document)1 DocumentLinker (org.apache.tapestry5.internal.services.DocumentLinker)1 JavaScriptSupportImpl (org.apache.tapestry5.internal.services.ajax.JavaScriptSupportImpl)1 Contribute (org.apache.tapestry5.ioc.annotations.Contribute)1 Heartbeat (org.apache.tapestry5.services.Heartbeat)1 JavaScriptSupport (org.apache.tapestry5.services.javascript.JavaScriptSupport)1