All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.unkrig.notemplate.javadocish.templates.AbstractIndexHtml Maven / Gradle / Ivy

Go to download

A super-small Java library for templating, i.e. generating text files (HTML, XML, whatever) from a "template" text file and dynamic data. It is based on the concept that the templates are bare Java classes.

The newest version!

/*
 * No-Template - an extremely light-weight templating framework
 *
 * Copyright (c) 2015, Arno Unkrig
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
 * following conditions are met:
 *
 *    1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
 *       following disclaimer.
 *    2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
 *       following disclaimer in the documentation and/or other materials provided with the distribution.
 *    3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote
 *       products derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

// SUPPRESS CHECKSTYLE Wrap|LineLength:9999

package de.unkrig.notemplate.javadocish.templates;

import de.unkrig.commons.lang.AssertionUtil;
import de.unkrig.commons.lang.ObjectUtil;
import de.unkrig.commons.nullanalysis.Nullable;
import de.unkrig.notemplate.HtmlTemplate;
import de.unkrig.notemplate.javadocish.Options;

/**
 * The top frameset for JAVADOCish documentation sites. Supports both the two-frame design and the thre-frame design.
 */
public
class AbstractIndexHtml extends HtmlTemplate {

    static { AssertionUtil.enableAssertionsForThisClass(); }

    /**
     * @param topLeftFrameName     E.g. {@code "packageListFrame"}
     * @param topLeftFrameLink     E.g. {@code "overview-frame.html"}
     * @param topLeftFrameTitle    E.g. {@code "All Packages"}
     * @param bottomLeftFrameName  E.g. {@code "packageFrame"}
     * @param bottomLeftFrameLink  E.g. {@code "allclasses-frame.html"}
     * @param bottomLeftFrameTitle E.g. {@code "All classes and interfaces (except non-static nested types)"}
     * @param rightFrameName       E.g. {@code "classFrame"}
     * @param rightFrameLink       E.g. {@code "overview-summary.html"}
     * @param rightFrameTitle      E.g. {@code "Package, class and interface descriptions"}
     */
    protected void
    rIndex(
        @Nullable String topLeftFrameName,
        @Nullable String topLeftFrameLink,
        @Nullable String topLeftFrameTitle,
        String           bottomLeftFrameName,
        String           bottomLeftFrameLink,
        String           bottomLeftFrameTitle,
        String           rightFrameName,
        String           rightFrameLink,
        String           rightFrameTitle,
        Options          options
    ) {
        this.l(
"",
"",
"  ",
"    ",
"    " + ObjectUtil.or(options.windowTitle, "Generated Documentation") + "",
"    ",
"  ",
"  "
        );
        if (topLeftFrameName == null) {

            // Two-frame design.
            assert topLeftFrameLink == null;
            assert topLeftFrameTitle == null;
            this.l(
"    "
            );
        } else {

            // Three-frame design.
            assert topLeftFrameLink != null;
            assert topLeftFrameTitle != null;
            this.l(
"    ",
"      ",
"      ",
"    "
            );
        }
        this.l(
"    ",
"    ",
"      <noscript>",
"        <div>JavaScript is disabled on your browser.</div>",
"      </noscript>",
"      <h2>Frame Alert</h2>",
"      <p>",
"        This document is designed to be viewed using the frames feature. If you see this message, you are using a",
"        non-frame-capable web client. Link to <a href=\"" + rightFrameLink + "\">Non-frame version</a>.",
"      </p>",
"    ",
"  ",
""
        );
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy