AbstractHtmlElementFactory.java

/*
 * #%L
 * wcm.io
 * %%
 * Copyright (C) 2014 wcm.io
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */
package io.wcm.handler.commons.dom;

import org.osgi.annotation.versioning.ConsumerType;


/**
 * Contains factory methods for creating and adding Html elements and specialized types.
 * This class cannot be instanciated directly, but provides factory methods for HtmlElement-based classes.
 */
@ConsumerType
public abstract class AbstractHtmlElementFactory extends AbstractElement {
  private static final long serialVersionUID = 1L;

  /**
   * Initializes html element factory.
   * @param name Element name
   */
  protected AbstractHtmlElementFactory(String name) {
    super(name);
  }

  /**
   * Creates and adds html element.
   * @param elementName Element name
   * @return Html element.
   */
  public final HtmlElement create(String elementName) {
    return this.add(new HtmlElement(elementName));
  }

  /**
   * Creates and adds html comment.
   * @param text Comment
   * @return Html comment.
   */
  public final HtmlComment createComment(String text) {
    HtmlComment comment = new HtmlComment(text);
    this.addContent(comment);
    return comment;
  }

  /**
   * Creates and adds div element.
   * @return Html element.
   */
  public final Div createDiv() {
    return this.add(new Div());
  }

  /**
   * Creates and adds span element.
   * @return Html element.
   */
  public final Span createSpan() {
    return this.add(new Span());
  }

  /**
   * Creates and adds span element.
   * @param text Text
   * @return Html element.
   */
  public final Span createSpan(String text) {
    return this.add(new Span(text));
  }

  /**
   * Creates and adds anchor (a) element.
   * @return Html element.
   */
  public final Anchor createAnchor() {
    return this.add(new Anchor());
  }

  /**
   * Creates and adds anchor (a) element.
   * @param href Html "href" attribute.
   * @return Html element.
   */
  public final Anchor createAnchor(String href) {
    return this.add(new Anchor(href));
  }

  /**
   * Creates and adds anchor (a) element.
   * @param href Html "href" attribute.
   * @param target Html "target" attribute.
   * @return Html element.
   */
  public final Anchor createAnchor(String href, String target) {
    return this.add(new Anchor(href, target));
  }

  /**
   * Creates and adds imgage (img) element.
   * @return Html element.
   */
  public final Image createImage() {
    return this.add(new Image());
  }

  /**
   * Creates and adds imgage (img) element.
   * @param src Html "src" attribute.
   * @return Html element.
   */
  public final Image createImage(String src) {
    return this.add(new Image(src));
  }

  /**
   * Creates and adds imgage (img) element.
   * @param src Html "src" attribute.
   * @param alt Html "alt" attribute.
   * @return Html element.
   */
  public final Image createImage(String src, String alt) {
    return this.add(new Image(src, alt));
  }

  /**
   * Creates and adds imgage (img) element.
   * @param src Html "src" attribute.
   * @param width Html "width" attribute.
   * @param height Html "height" attribute.
   * @return Html element.
   */
  public final Image createImage(String src, int width, int height) {
    return this.add(new Image(src, width, height));
  }

  /**
   * Creates and adds imgage (img) element.
   * @param src Html "src" attribute.
   * @param alt Html "alt" attribute.
   * @param width Html "width" attribute.
   * @param height Html "height" attribute.
   * @return Html element.
   */
  public final Image createImage(String src, String alt, int width, int height) {
    return this.add(new Image(src, alt, width, height));
  }

  /**
   * Creates and adds script element.
   * @return Html element.
   */
  public final Script createScript() {
    return this.add(new Script());
  }

  /**
   * Creates and adds script element.
   * @param script Script block
   * @return Html element.
   */
  public final Script createScript(String script) {
    return this.add(new Script(script));
  }

  /**
   * Creates and adds noscript element.
   * @return Html element.
   */
  public final NoScript createNoScript() {
    return this.add(new NoScript());
  }

  /**
   * Creates and adds figure element.
   * @return Html element.
   */
  public final Figure createFigure() {
    return this.add(new Figure());
  }

  /**
   * Creates and adds figure caption element.
   * @return Html element.
   */
  public final FigCaption createFigCaption() {
    return this.add(new FigCaption());
  }

  /**
   * Creates and adds video element.
   * @return Html element.
   */
  public final Video createVideo() {
    return this.add(new Video());
  }

  /**
   * Creates and adds audio element.
   * @return Html element.
   */
  public final Audio createAudio() {
    return this.add(new Audio());
  }

  /**
   * Creates and adds source element.
   * @return Html element.
   */
  public final Source createSource() {
    return this.add(new Source());
  }

}