package org.rendersnake; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.util.ArrayList; import org.rendersnake.error.RenderException; import org.rendersnake.internal.CharactersWriteable; import org.rendersnake.internal.ContextMap; import org.rendersnake.internal.SinkCanvas; import org.rendersnake.internal.HtmlEscapeHandler; import org.rendersnake.internal.StringEscapeUtils; /** * HtmlCanvas provide the api to write HTML elements on a io.Writer. * It holds a PageContext for passing Objects to other Renderable instances. * * @author e.micklei */ public class HtmlCanvas { /** * The handler that can escape characters of a String for proper HTML writing. */ public static HtmlEscapeHandler HTML_ESCAPE_HANDLER; static { StringEscapeUtils.init(); } /** * Intention revealing constant to emphasize that escaping for a text item is not needed */ public final static boolean NO_ESCAPE = false; /** * The writer that will collect all HTML code. */ protected Writer out; /** * Collection of written open elements to be closed. */ protected ArrayList<String> openTagStack = new ArrayList<String>(INITIAL_STACK_CAPACITY); /** * Configurable parameter to nested element. */ public static int INITIAL_STACK_CAPACITY = 32; /** * Id generator for generated elements and Javascript. */ private int lastId = 0; /** * Map of key-value pairs to store domain data used in rendering. */ private PageContext pageContext; /** * The helper class that provides methods for common HTML constructions. */ private CanvasMacros<? extends HtmlCanvas> canvasMacros; /** * Create a new HtmlCanvas that writes its output on Writer. * @param output */ public HtmlCanvas(Writer output) { super(); this.out = output; } /** * Create a HtmlCanvas that writes its output on a StringWriter. * This is for testing purposes. */ public HtmlCanvas() { super(); this.out = new StringWriter(1024); } /** * Return a helper object to write elements in a macro-like style. * @return */ public CanvasMacros<?> macros() { if (canvasMacros == null) this.canvasMacros = createMacros(); return canvasMacros; } /** * Convenience method that calls write(aString) and closes the last opened tag. * The content (aString) will be HTML escaped. * @param aString * @return * @throws IOException */ public HtmlCanvas content(String aString) throws IOException { this.write(aString); return this.close(); } /** * Convenience method that calls write(aString) and closes the last opened tag. * The content (aString) will be HTML escaped if needed. * @param aString * @param escapeNeeded * @return * @throws IOException */ public HtmlCanvas content(String aString, boolean escapeNeeded) throws IOException { this.write(aString,escapeNeeded); return this.close(); } /** * Create a new empty canvas based on the receiver. * NOTE: Id generation will no longer work for the local canvas. * @return */ public HtmlCanvas createLocalCanvas(){ return new HtmlCanvas(); } /** * Create a new CanvasMacros that provides convenience methods. * @return */ public CanvasMacros<? extends HtmlCanvas> createMacros() { return new CanvasMacros<HtmlCanvas>(this); } /** * Answer the writer that is used to produce output. * @return */ public Writer getOutputWriter(){ return out; } /** * Answer a String for use as a unique identifier for elements written using this html. * * @return */ public String nextId() { lastId++; return new StringBuilder() .append('i') .append('d') .append(lastId) .toString(); } /** * Answer a String with tracing information about the receiver. * * @return String */ public String toString() { final StringBuilder buffer = new StringBuilder(); buffer.append(super.toString()); buffer.append("[depth="); buffer.append(openTagStack.size()); buffer.append(']'); buffer.append(openTagStack); return buffer.toString(); } /** * Return the current contents of the output writer. * * @return String */ public String toHtml() { return out.toString(); } /** * Raises an illegal state exception if initialization by StringEscapeUtils has failed. * @return an actual implementation of the HtmlEscapeHandler */ private static HtmlEscapeHandler getHtmlEscapeHandler() { if (HTML_ESCAPE_HANDLER == null) throw new IllegalStateException("HTML Escape Handler not set." + "Either the Apache commons lang3 library is missing or" + "you need to provide an implementation of HtmlEscapeHandler yourself."); return HTML_ESCAPE_HANDLER; } /** * Write text after HTML escaping it. No need to close(). * * @param unescapedString String , HTML or plain text or null * @return HTMLCanvas , the receiver * @throws IOException */ public HtmlCanvas write(String unescapedString) throws IOException { if (unescapedString == null) return this; getHtmlEscapeHandler().escapeHtml(out, unescapedString); return this; } /** * Write a character. No need to close(). * * @param ch * @return HTMLCanvas , the receiver * @throws IOException */ public HtmlCanvas write(char ch) throws IOException { out.append(ch); return this; } /** * Write some text. If escapedNeeded then HTML escape the characters while writing it. * * @param text * String , HTML or plain text * @param escapeNeeded * , boolean (e.g. NO_ESCAPE) * @return HTMLCanvas , the receiver * @throws IOException */ public HtmlCanvas write(String text, boolean escapeNeeded) throws IOException { if (text == null) return this; if (escapeNeeded) { getHtmlEscapeHandler().escapeHtml(out, text); } else { this.out.write(text); } return this; } /** * Write the opening of a CDATA section (not really a HTML element). * @return HTMLCanvas , the receiver * @throws IOException */ public HtmlCanvas cdata() throws IOException { this.out.write("/*<![CDATA[*/"); openTagStack.add("/*]]>*/"); return this; } /** * Write the closing of a CDATA section (not really a HTML element). * @return HTMLCanvas , the receiver * @throws IOException */ public HtmlCanvas _cdata() throws IOException { return this.close("/*]]>*/"); } /** * Close the most recent opened tag. * * @return the receiver, a HtmlCanvas * @throws IOException */ public HtmlCanvas close() throws IOException { if (openTagStack.isEmpty()) throw RenderException.emptyStack(); out.write(openTagStack.remove(openTagStack.size()-1)); return this; } /** * Close the most recent opened tag and expect it to be #expectedTag * @param expectedTag * * @return the receiver, a HtmlCanvas * @throws IOException */ public HtmlCanvas close(String expectedTag) throws IOException { if (openTagStack.isEmpty()) throw RenderException.emptyStack(); String popped = openTagStack.remove(openTagStack.size()-1); if (!popped.equals(expectedTag)) throw RenderException.unexpectedTag(popped,expectedTag); out.write(popped); return this; } /** * Render the component using the receiver. If available, prepare the * pageContext for accessing variables by the components. * * @param component a Renderable instance | null * @return the receiver this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas render(Renderable component) throws IOException { // Allow undefined component as argument. This is a noop. if (component == null) return this; if (pageContext != null) { pageContext.beginRender(); component.renderOn(this); pageContext.endRender(); } else { component.renderOn(this); } return this; } /** * Conditionally render a component based on the condition. * @param component * @param condition * @return * @throws IOException */ public HtmlCanvas render_if(Renderable component, boolean condition) throws IOException { return condition ? this.render(component) : this; } /** * Factory method for an HtmlAttributes instance. * This allows for subclass specialization. Also conforms to the fluent * interface compared to "new HtmlAttributes()" * * @return a new ToAttributesString */ public HtmlAttributes attributes() { return new HtmlAttributes(); } /** * Write the open tag <{tagName}>. Requires close(). * * @param tagName * String, cannot be null * @return the receiver, a HtmlCanvas * @throws IOException * * @see #close() */ public HtmlCanvas tag(String tagName) throws IOException { if (tagName == null) throw RenderException.nullTag(); out.write('<'); out.write(tagName); out.write('>'); StringBuilder buffer = new StringBuilder(tagName.length()+3); buffer.append('<').append('/').append(tagName).append('>'); openTagStack.add(buffer.toString()); return this; } /** * @param tagName * @return * @throws IOException */ public HtmlCanvas tag_close(String tagName) throws IOException { if (tagName == null) throw RenderException.nullTag(); StringBuilder buffer = new StringBuilder(tagName.length()+3); buffer.append('<').append('/').append(tagName).append('>'); return this.close(buffer.toString()); } /** * Write the open tag with attributes {attrs}. Requires close(). * * @param tagName * String, cannot be null * @param attrs * ToAttributesString, cannot be null * @return the receiver, aHtmlCanvas * @throws IOException * * @see #close() */ public HtmlCanvas tag(String tagName, CharactersWriteable attrs) throws IOException { if (tagName == null) throw RenderException.nullTag(); out.write('<'); out.append(tagName); attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</" + tagName + '>'); return this; } /** * Answer whether the receiver has instantiated a PageContext. * @return */ public boolean hasPageContext() { return pageContext != null; } /** * Answer the pageContext. Create one if absent. * * @return the context */ public PageContext getPageContext() { if (null == pageContext) pageContext = this.createPageContext(); return pageContext; } /** * use RequestUtils.getSession(html) instead. * @return */ @Deprecated public ContextMap getSession() { return RequestUtils.getSession(this); } /** * use RequestUtils.getParameters(html) instead. * @return */ @Deprecated public ContextMap getRequestParameters() { return RequestUtils.getParameters(this); } /** * use RequestUtils.getPathParameters(html) instead. * @return */ @Deprecated public ContextMap getPathParameters() { return this.getPageContext().getContextMap(PageContext.REQUEST_PATH); } /** * If the condition is true then return the receiver * otherwise return a SinkCanvas that consumes all tags until the last is closed. * @param condition * @return * @throws IOException */ public HtmlCanvas if_(boolean condition) throws IOException { if (condition) return this; else return new SinkCanvas(this); } /** * @return * @throws IOException */ public HtmlCanvas _if() throws IOException { // NOOP return this; } /** * Return a new PageContext for storing component-scoped variables. * @return a new PageContext */ protected PageContext createPageContext() { return new PageContext(); } // //////////////////////////////////////////////////////////////// // // Methods below are generated using XSLT (see /html-codegen). DO NOT EDIT // // //////////////////////////////////////////////////////////////// /** * Opens the <em>a</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_a()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas a() throws IOException { out.write("<a>"); openTagStack.add("</a>"); return this; } /** * Opens the <em>a</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_a()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>name<dd>named link end * <dt>href<dd>URI for linked resource * <dt>hreflang<dd>language code * <dt>type<dd>advisory content type * <dt>rel<dd>forward link types * <dt>rev<dd>reverse link types * <dt>charset<dd>char encoding of linked resource * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>shape<dd>for use with client-side image maps * <dt>coords<dd>for use with client-side image maps * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onfocus<dd>the element got the focus * <dt>onblur<dd>the element lost the focus * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>target<dd>render in this frame * <dt>tabindex<dd>position in tabbing order * <dt>accesskey<dd>accessibility key character * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas a(CharactersWriteable attrs) throws IOException { out.write("<a"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</a>"); return this; } /** * Closes the <em>a</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _a() throws IOException { return this.close("</a>"); } /** * Opens the <em>abbr</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_abbr()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas abbr() throws IOException { out.write("<abbr>"); openTagStack.add("</abbr>"); return this; } /** * Opens the <em>abbr</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_abbr()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas abbr(CharactersWriteable attrs) throws IOException { out.write("<abbr"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</abbr>"); return this; } /** * Closes the <em>abbr</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _abbr() throws IOException { return this.close("</abbr>"); } /** * Opens the <em>acronym</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_acronym()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas acronym() throws IOException { out.write("<acronym>"); openTagStack.add("</acronym>"); return this; } /** * Opens the <em>acronym</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_acronym()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas acronym(CharactersWriteable attrs) throws IOException { out.write("<acronym"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</acronym>"); return this; } /** * Closes the <em>acronym</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _acronym() throws IOException { return this.close("</acronym>"); } /** * Opens the <em>em</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_em()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas em() throws IOException { out.write("<em>"); openTagStack.add("</em>"); return this; } /** * Opens the <em>em</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_em()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas em(CharactersWriteable attrs) throws IOException { out.write("<em"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</em>"); return this; } /** * Closes the <em>em</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _em() throws IOException { return this.close("</em>"); } /** * Opens the <em>strong</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_strong()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas strong() throws IOException { out.write("<strong>"); openTagStack.add("</strong>"); return this; } /** * Opens the <em>strong</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_strong()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas strong(CharactersWriteable attrs) throws IOException { out.write("<strong"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</strong>"); return this; } /** * Closes the <em>strong</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _strong() throws IOException { return this.close("</strong>"); } /** * Opens the <em>cite</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_cite()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas cite() throws IOException { out.write("<cite>"); openTagStack.add("</cite>"); return this; } /** * Opens the <em>cite</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_cite()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas cite(CharactersWriteable attrs) throws IOException { out.write("<cite"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</cite>"); return this; } /** * Closes the <em>cite</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _cite() throws IOException { return this.close("</cite>"); } /** * Opens the <em>dfn</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_dfn()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas dfn() throws IOException { out.write("<dfn>"); openTagStack.add("</dfn>"); return this; } /** * Opens the <em>dfn</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_dfn()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas dfn(CharactersWriteable attrs) throws IOException { out.write("<dfn"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</dfn>"); return this; } /** * Closes the <em>dfn</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _dfn() throws IOException { return this.close("</dfn>"); } /** * Opens the <em>code</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_code()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas code() throws IOException { out.write("<code>"); openTagStack.add("</code>"); return this; } /** * Opens the <em>code</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_code()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas code(CharactersWriteable attrs) throws IOException { out.write("<code"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</code>"); return this; } /** * Closes the <em>code</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _code() throws IOException { return this.close("</code>"); } /** * Opens the <em>samp</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_samp()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas samp() throws IOException { out.write("<samp>"); openTagStack.add("</samp>"); return this; } /** * Opens the <em>samp</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_samp()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas samp(CharactersWriteable attrs) throws IOException { out.write("<samp"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</samp>"); return this; } /** * Closes the <em>samp</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _samp() throws IOException { return this.close("</samp>"); } /** * Opens the <em>kbd</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_kbd()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas kbd() throws IOException { out.write("<kbd>"); openTagStack.add("</kbd>"); return this; } /** * Opens the <em>kbd</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_kbd()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas kbd(CharactersWriteable attrs) throws IOException { out.write("<kbd"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</kbd>"); return this; } /** * Closes the <em>kbd</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _kbd() throws IOException { return this.close("</kbd>"); } /** * Opens the <em>var</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_var()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas var() throws IOException { out.write("<var>"); openTagStack.add("</var>"); return this; } /** * Opens the <em>var</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_var()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas var(CharactersWriteable attrs) throws IOException { out.write("<var"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</var>"); return this; } /** * Closes the <em>var</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _var() throws IOException { return this.close("</var>"); } /** * Opens the <em>address</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_address()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas address() throws IOException { out.write("<address>"); openTagStack.add("</address>"); return this; } /** * Opens the <em>address</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_address()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas address(CharactersWriteable attrs) throws IOException { out.write("<address"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</address>"); return this; } /** * Closes the <em>address</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _address() throws IOException { return this.close("</address>"); } /** * Opens the (deprecated) <em>applet</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_applet()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas applet() throws IOException { out.write("<applet>"); openTagStack.add("</applet>"); return this; } /** * Opens the <em>applet</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_applet()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>codebase<dd>optional base URI for applet * <dt>code<dd>applet class file * <dt>name<dd>allows applets to find each other * <dt>archive<dd>comma separated archive list * <dt>object<dd>serialized applet file * <dt>width<dd>initial width * <dt>height<dd>initial height * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>alt<dd>short description * <dt>align<dd>vertical or horizontal alignment * <dt>hspace<dd>horizontal gutter * <dt>vspace<dd>vertical gutter * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas applet(CharactersWriteable attrs) throws IOException { out.write("<applet"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</applet>"); return this; } /** * Closes the <em>applet</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _applet() throws IOException { return this.close("</applet>"); } /** * Opens the <em>area</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>coords<dd>comma separated list of lengths * <dt>shape<dd>controls interpretation of coords * <dt>nohref<dd>this region has no action * <dt>name<dd> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>shape<dd>controls interpretation of coords * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onfocus<dd>the element got the focus * <dt>onblur<dd>the element lost the focus * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>target<dd>render in this frame * <dt>tabindex<dd>position in tabbing order * <dt>accesskey<dd>accessibility key character * <dt>href<dd>URI for linked resource * <dt>alt<dd>short description * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas area(CharactersWriteable attrs) throws IOException { out.write("<area"); if (attrs != null) attrs.writeCharsOn(out); out.write('/'); out.write('>'); return this; } /** * Opens the <em>map</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_map()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas map() throws IOException { out.write("<map>"); openTagStack.add("</map>"); return this; } /** * Opens the <em>map</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_map()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>name<dd>for reference by usemap * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas map(CharactersWriteable attrs) throws IOException { out.write("<map"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</map>"); return this; } /** * Closes the <em>map</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _map() throws IOException { return this.close("</map>"); } /** * Opens the <em>b</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_b()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas b() throws IOException { out.write("<b>"); openTagStack.add("</b>"); return this; } /** * Opens the <em>b</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_b()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas b(CharactersWriteable attrs) throws IOException { out.write("<b"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</b>"); return this; } /** * Closes the <em>b</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _b() throws IOException { return this.close("</b>"); } /** * Opens the <em>tt</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_tt()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas tt() throws IOException { out.write("<tt>"); openTagStack.add("</tt>"); return this; } /** * Opens the <em>tt</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_tt()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas tt(CharactersWriteable attrs) throws IOException { out.write("<tt"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</tt>"); return this; } /** * Closes the <em>tt</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _tt() throws IOException { return this.close("</tt>"); } /** * Opens the <em>i</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_i()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas i() throws IOException { out.write("<i>"); openTagStack.add("</i>"); return this; } /** * Opens the <em>i</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_i()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas i(CharactersWriteable attrs) throws IOException { out.write("<i"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</i>"); return this; } /** * Closes the <em>i</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _i() throws IOException { return this.close("</i>"); } /** * Opens the <em>big</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_big()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas big() throws IOException { out.write("<big>"); openTagStack.add("</big>"); return this; } /** * Opens the <em>big</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_big()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas big(CharactersWriteable attrs) throws IOException { out.write("<big"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</big>"); return this; } /** * Closes the <em>big</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _big() throws IOException { return this.close("</big>"); } /** * Opens the <em>small</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_small()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas small() throws IOException { out.write("<small>"); openTagStack.add("</small>"); return this; } /** * Opens the <em>small</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_small()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas small(CharactersWriteable attrs) throws IOException { out.write("<small"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</small>"); return this; } /** * Closes the <em>small</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _small() throws IOException { return this.close("</small>"); } /** * Opens the (deprecated) <em>strike</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_strike()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas strike() throws IOException { out.write("<strike>"); openTagStack.add("</strike>"); return this; } /** * Opens the <em>strike</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_strike()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas strike(CharactersWriteable attrs) throws IOException { out.write("<strike"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</strike>"); return this; } /** * Closes the <em>strike</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _strike() throws IOException { return this.close("</strike>"); } /** * Opens the (deprecated) <em>s</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_s()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas s() throws IOException { out.write("<s>"); openTagStack.add("</s>"); return this; } /** * Opens the <em>s</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_s()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas s(CharactersWriteable attrs) throws IOException { out.write("<s"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</s>"); return this; } /** * Closes the <em>s</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _s() throws IOException { return this.close("</s>"); } /** * Opens the (deprecated) <em>u</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_u()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas u() throws IOException { out.write("<u>"); openTagStack.add("</u>"); return this; } /** * Opens the <em>u</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_u()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas u(CharactersWriteable attrs) throws IOException { out.write("<u"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</u>"); return this; } /** * Closes the <em>u</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _u() throws IOException { return this.close("</u>"); } /** * Opens the <em>base</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>href<dd>URI that acts as base URI * <dt>target<dd>render in this frame * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas base(CharactersWriteable attrs) throws IOException { out.write("<base"); if (attrs != null) attrs.writeCharsOn(out); out.write('/'); out.write('>'); return this; } /** * Opens the (deprecated) <em>basefont</em> tag, without any attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas basefont() throws IOException { out.write("<basefont>"); openTagStack.add("</basefont>"); return this; } /** * Opens the <em>basefont</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>size<dd>base font size for FONT elements * <dt>color<dd>text color * <dt>face<dd>comma separated list of font names * <dt>id<dd>document-wide unique id * <dt>class<dd> * <dt>lang<dd> * <dt>dir<dd> * <dt>title<dd> * <dt>style<dd> * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas basefont(CharactersWriteable attrs) throws IOException { out.write("<basefont"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</basefont>"); return this; } /** * Opens the (deprecated) <em>font</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_font()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas font() throws IOException { out.write("<font>"); openTagStack.add("</font>"); return this; } /** * Opens the <em>font</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_font()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>size<dd>[+|-]nn e.g. size=+1, size=4 * <dt>color<dd>text color * <dt>face<dd>comma separated list of font names * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas font(CharactersWriteable attrs) throws IOException { out.write("<font"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</font>"); return this; } /** * Closes the <em>font</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _font() throws IOException { return this.close("</font>"); } /** * Opens the <em>bdo</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_bdo()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas bdo() throws IOException { out.write("<bdo>"); openTagStack.add("</bdo>"); return this; } /** * Opens the <em>bdo</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_bdo()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>dir<dd>directionality * <dt>lang<dd>language code * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas bdo(CharactersWriteable attrs) throws IOException { out.write("<bdo"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</bdo>"); return this; } /** * Closes the <em>bdo</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _bdo() throws IOException { return this.close("</bdo>"); } /** * Opens the <em>body</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_body()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas body() throws IOException { out.write("<body>"); openTagStack.add("</body>"); return this; } /** * Opens the <em>body</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_body()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>background<dd>texture tile for document background * <dt>text<dd>document text color * <dt>link<dd>color of links * <dt>vlink<dd>color of visited links * <dt>alink<dd>color of selected links * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>bgcolor<dd>document background color * <dt>onload<dd>the document has been loaded * <dt>onunload<dd>the document has been removed * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas body(CharactersWriteable attrs) throws IOException { out.write("<body"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</body>"); return this; } /** * Closes the <em>body</em> tag. * @return * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _body() throws IOException { return this.close("</body>"); } /** * Opens the <em>br</em> tag, without any attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas br() throws IOException { out.write("<br/>"); return this; } /** * Opens the <em>br</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>clear<dd>control of text flow * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas br(CharactersWriteable attrs) throws IOException { out.write("<br"); if (attrs != null) attrs.writeCharsOn(out); out.write("/>"); return this; } /** * Opens the <em>button</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_button()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas button() throws IOException { out.write("<button>"); openTagStack.add("</button>"); return this; } /** * Opens the <em>button</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_button()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>name<dd> * <dt>value<dd>sent to server when submitted * <dt>type<dd>for use as form button * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>disabled<dd>unavailable in this context * <dt>accesskey<dd>accessibility key character * <dt>tabindex<dd>position in tabbing order * <dt>onblure<dd> * <dt>onfocus<dd>the element got the focus * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas button(CharactersWriteable attrs) throws IOException { out.write("<button"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</button>"); return this; } /** * Closes the <em>button</em> tag. * @return * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _button() throws IOException { return this.close("</button>"); } /** * Opens the <em>caption</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_caption()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas caption() throws IOException { out.write("<caption>"); openTagStack.add("</caption>"); return this; } /** * Opens the <em>caption</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_caption()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>align<dd>relative to table * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>dir<dd>direction for weak/neutral text * <dt>lang<dd>language code * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas caption(CharactersWriteable attrs) throws IOException { out.write("<caption"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</caption>"); return this; } /** * Closes the <em>caption</em> tag. * @return * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _caption() throws IOException { return this.close("</caption>"); } /** * Opens the (deprecated) <em>center</em> tag, without any attributes. * This tag does not support any attributes. * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas center() throws IOException { out.write("<center>"); openTagStack.add("</center>"); return this; } /** * Closes the (deprecated) <em>center</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ @Deprecated public HtmlCanvas _center() throws IOException { return this.close("</center>"); } /** * Opens the <em>col</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>span<dd>COL attributes affect N columns * <dt>width<dd>column width specification * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>align<dd> * <dt>char<dd>alignment char, e.g. char=':' * <dt>charoff<dd>offset for alignment char * <dt>valign<dd>vertical alignment in cells * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas col(CharactersWriteable attrs) throws IOException { out.write("<col"); if (attrs != null) attrs.writeCharsOn(out); out.write('/'); out.write('>'); return this; } /** * Opens the <em>colgroup</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_colgroup()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas colgroup() throws IOException { out.write("<colgroup>"); openTagStack.add("</colgroup>"); return this; } /** * Opens the <em>colgroup</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_colgroup()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>span<dd>default number of columns in group * <dt>width<dd>default width for enclosed COLs * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>align<dd> * <dt>char<dd>alignment char, e.g. char=':' * <dt>charoff<dd>offset for alignment char * <dt>valign<dd>vertical alignment in cells * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas colgroup(CharactersWriteable attrs) throws IOException { out.write("<colgroup"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</colgroup>"); return this; } /** * Closes the <em>colgroup</em> tag. * @return * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _colgroup() throws IOException { return this.close("</colgroup>"); } /** * Opens the <em>dd</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_dd()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas dd() throws IOException { out.write("<dd>"); openTagStack.add("</dd>"); return this; } /** * Opens the <em>dd</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_dd()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>align<dd> * <dt>char<dd> * <dt>charoff<dd> * <dt>valign<dd> * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas dd(CharactersWriteable attrs) throws IOException { out.write("<dd"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</dd>"); return this; } /** * Closes the <em>dd</em> tag. * @return * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _dd() throws IOException { return this.close("</dd>"); } /** * Opens the <em>dl</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_dl()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas dl() throws IOException { out.write("<dl>"); openTagStack.add("</dl>"); return this; } /** * Opens the <em>dl</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_dl()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>align<dd> * <dt>char<dd> * <dt>charoff<dd> * <dt>valign<dd> * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas dl(CharactersWriteable attrs) throws IOException { out.write("<dl"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</dl>"); return this; } /** * Closes the <em>dl</em> tag. * @return * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _dl() throws IOException { return this.close("</dl>"); } /** * Opens the <em>dt</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_dt()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas dt() throws IOException { out.write("<dt>"); openTagStack.add("</dt>"); return this; } /** * Opens the <em>dt</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_dt()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>align<dd> * <dt>char<dd> * <dt>charoff<dd> * <dt>valign<dd> * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas dt(CharactersWriteable attrs) throws IOException { out.write("<dt"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</dt>"); return this; } /** * Closes the <em>dt</em> tag. * @return * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _dt() throws IOException { return this.close("</dt>"); } /** * Opens the <em>del</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_del()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas del() throws IOException { out.write("<del>"); openTagStack.add("</del>"); return this; } /** * Opens the <em>del</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_del()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>cite<dd>info on reason for change * <dt>datetime<dd>date and time of change * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas del(CharactersWriteable attrs) throws IOException { out.write("<del"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</del>"); return this; } /** * Closes the <em>del</em> tag. * @return * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _del() throws IOException { return this.close("</del>"); } /** * Opens the <em>ins</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_ins()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas ins() throws IOException { out.write("<ins>"); openTagStack.add("</ins>"); return this; } /** * Opens the <em>ins</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_ins()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>cite<dd>info on reason for change * <dt>datetime<dd>date and time of change * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas ins(CharactersWriteable attrs) throws IOException { out.write("<ins"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</ins>"); return this; } /** * Closes the <em>ins</em> tag. * @return * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _ins() throws IOException { return this.close("</ins>"); } /** * Opens the (deprecated) <em>dir</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_dir()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas dir() throws IOException { out.write("<dir>"); openTagStack.add("</dir>"); return this; } /** * Opens the <em>dir</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_dir()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas dir(CharactersWriteable attrs) throws IOException { out.write("<dir"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</dir>"); return this; } /** * Closes the <em>dir</em> tag. * @return * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _dir() throws IOException { return this.close("</dir>"); } /** * Opens the (deprecated) <em>menu</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_menu()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas menu() throws IOException { out.write("<menu>"); openTagStack.add("</menu>"); return this; } /** * Opens the <em>menu</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_menu()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas menu(CharactersWriteable attrs) throws IOException { out.write("<menu"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</menu>"); return this; } /** * Closes the <em>menu</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _menu() throws IOException { return this.close("</menu>"); } /** * Opens the <em>div</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_div()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas div() throws IOException { out.write("<div>"); openTagStack.add("</div>"); return this; } /** * Opens the <em>div</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_div()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>align<dd>align, text alignment * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas div(CharactersWriteable attrs) throws IOException { out.write("<div"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</div>"); return this; } /** * Closes the <em>div</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _div() throws IOException { return this.close("</div>"); } /** * Opens the <em>span</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_span()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas span() throws IOException { out.write("<span>"); openTagStack.add("</span>"); return this; } /** * Opens the <em>span</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_span()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>align<dd> * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas span(CharactersWriteable attrs) throws IOException { out.write("<span"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</span>"); return this; } /** * Closes the <em>span</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _span() throws IOException { return this.close("</span>"); } /** * Opens the <em>fieldset</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_fieldset()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas fieldset() throws IOException { out.write("<fieldset>"); openTagStack.add("</fieldset>"); return this; } /** * Opens the <em>fieldset</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_fieldset()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>align<dd> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>accesskey<dd> * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas fieldset(CharactersWriteable attrs) throws IOException { out.write("<fieldset"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</fieldset>"); return this; } /** * Closes the <em>fieldset</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _fieldset() throws IOException { return this.close("</fieldset>"); } /** * Opens the <em>form</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_form()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas form() throws IOException { out.write("<form>"); openTagStack.add("</form>"); return this; } /** * Opens the <em>form</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_form()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>action<dd>server-side form handler * <dt>method<dd>HTTP method used to submit the form * <dt>enctype<dd> * <dt>accept-charset<dd>list of supported charsets * <dt>accept<dd> * <dt>name<dd>name of form for scripting * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>target<dd>render in this frame * <dt>onsubmit<dd>the form was submitted * <dt>onreset<dd>the form was reset * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas form(CharactersWriteable attrs) throws IOException { out.write("<form"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</form>"); return this; } /** * Closes the <em>form</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _form() throws IOException { return this.close("</form>"); } /** * Opens the <em>frame</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>name<dd>name of frame for targetting * <dt>longdesc<dd>link to long description (complements title) * <dt>src<dd>source of frame content * <dt>noresize<dd>allow users to resize frames? * <dt>scrolling<dd>scrollbar or none * <dt>frameborder<dd>request frame borders? * <dt>margin-width<dd> * <dt>margin-height<dd> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas frame(CharactersWriteable attrs) throws IOException { out.write("<frame"); if (attrs != null) attrs.writeCharsOn(out); out.write('/'); out.write('>'); return this; } /** * Opens the <em>frameset</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_frameset()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas frameset() throws IOException { out.write("<frameset>"); openTagStack.add("</frameset>"); return this; } /** * Opens the <em>frameset</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_frameset()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>rows<dd>list of lengths, default: 100% (1 row) * <dt>cols<dd>list of lengths, default: 100% (1 col) * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onload<dd>all the frames have been loaded * <dt>onunload<dd>all the frames have been removed * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas frameset(CharactersWriteable attrs) throws IOException { out.write("<frameset"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</frameset>"); return this; } /** * Closes the <em>frameset</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _frameset() throws IOException { return this.close("</frameset>"); } /** * Opens the <em>h1</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_h1()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h1() throws IOException { out.write("<h1>"); openTagStack.add("</h1>"); return this; } /** * Opens the <em>h1</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_h1()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>align<dd>align, text alignment * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h1(CharactersWriteable attrs) throws IOException { out.write("<h1"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</h1>"); return this; } /** * Closes the <em>h1</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _h1() throws IOException { return this.close("</h1>"); } /** * Opens the <em>h2</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_h2()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h2() throws IOException { out.write("<h2>"); openTagStack.add("</h2>"); return this; } /** * Opens the <em>h2</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_h2()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>align<dd>align, text alignment * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h2(CharactersWriteable attrs) throws IOException { out.write("<h2"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</h2>"); return this; } /** * Closes the <em>h2</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _h2() throws IOException { return this.close("</h2>"); } /** * Opens the <em>h3</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_h3()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h3() throws IOException { out.write("<h3>"); openTagStack.add("</h3>"); return this; } /** * Opens the <em>h3</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_h3()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>align<dd>align, text alignment * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h3(CharactersWriteable attrs) throws IOException { out.write("<h3"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</h3>"); return this; } /** * Closes the <em>h3</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _h3() throws IOException { return this.close("</h3>"); } /** * Opens the <em>h4</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_h4()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h4() throws IOException { out.write("<h4>"); openTagStack.add("</h4>"); return this; } /** * Opens the <em>h4</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_h4()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>align<dd>align, text alignment * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h4(CharactersWriteable attrs) throws IOException { out.write("<h4"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</h4>"); return this; } /** * Closes the <em>h4</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _h4() throws IOException { return this.close("</h4>"); } /** * Opens the <em>h5</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_h5()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h5() throws IOException { out.write("<h5>"); openTagStack.add("</h5>"); return this; } /** * Opens the <em>h5</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_h5()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>align<dd>align, text alignment * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h5(CharactersWriteable attrs) throws IOException { out.write("<h5"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</h5>"); return this; } /** * Closes the <em>h5</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _h5() throws IOException { return this.close("</h5>"); } /** * Opens the <em>h6</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_h6()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h6() throws IOException { out.write("<h6>"); openTagStack.add("</h6>"); return this; } /** * Opens the <em>h6</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_h6()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>align<dd>align, text alignment * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas h6(CharactersWriteable attrs) throws IOException { out.write("<h6"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</h6>"); return this; } /** * Closes the <em>h6</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _h6() throws IOException { return this.close("</h6>"); } /** * Opens the <em>head</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_head()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas head() throws IOException { out.write("<head>"); openTagStack.add("</head>"); return this; } /** * Opens the <em>head</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_head()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>profile<dd>named dictionary of meta info * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas head(CharactersWriteable attrs) throws IOException { out.write("<head"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</head>"); return this; } /** * Closes the <em>head</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _head() throws IOException { return this.close("</head>"); } /** * Opens the <em>hr</em> tag, without any attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas hr() throws IOException { out.write("<hr/>"); return this; } /** * Opens the <em>hr</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>align<dd> * <dt>noshade<dd> * <dt>size<dd> * <dt>width<dd> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas hr(CharactersWriteable attrs) throws IOException { out.write("<hr"); if (attrs != null) attrs.writeCharsOn(out); out.write("/>"); return this; } /** * Opens the <em>html</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_html()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas html() throws IOException { out.write("<html>"); openTagStack.add("</html>"); return this; } /** * Opens the <em>html</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_html()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>version<dd>Constant * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas html(CharactersWriteable attrs) throws IOException { out.write("<html"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</html>"); return this; } /** * Closes the <em>html</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _html() throws IOException { return this.close("</html>"); } /** * Opens the <em>iframe</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_iframe()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas iframe() throws IOException { out.write("<iframe>"); openTagStack.add("</iframe>"); return this; } /** * Opens the <em>iframe</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_iframe()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>longdesc<dd>link to long description (complements title) * <dt>name<dd>name of frame for targetting * <dt>width<dd>frame width * <dt>height<dd>frame height * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>src<dd>source of frame content * <dt>frameborder<dd>request frame borders? * <dt>marginwidth<dd>margin widths in pixels * <dt>marginheight<dd>margin height in pixels * <dt>scrolling<dd>scrollbar or none * <dt>align<dd>vertical or horizontal alignment * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas iframe(CharactersWriteable attrs) throws IOException { out.write("<iframe"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</iframe>"); return this; } /** * Closes the <em>iframe</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _iframe() throws IOException { return this.close("</iframe>"); } /** * Opens the <em>img</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>src<dd>URI of image to embed * <dt>longdesc<dd>link to long description (complements alt) * <dt>name<dd>name of image for scripting * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>alt<dd>short description * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>ismap<dd>use server-side image map * <dt>usemap<dd>use client-side image map * <dt>align<dd>vertical or horizontal alignment * <dt>width<dd>override width * <dt>height<dd>override height * <dt>border<dd>link border width * <dt>hspace<dd>horizontal gutter * <dt>vspace<dd>vertical gutter * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas img(CharactersWriteable attrs) throws IOException { out.write("<img"); if (attrs != null) attrs.writeCharsOn(out); out.write('/'); out.write('>'); return this; } /** * Opens the <em>input</em> tag, without any attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas input() throws IOException { out.write("<input/>"); return this; } /** * Opens the <em>input</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>type<dd>what kind of widget is needed * <dt>name<dd>submit as part of form * <dt>value<dd>required for radio and checkboxes * <dt>size<dd>specific to each type of field * <dt>maxlength<dd>max chars for text fields * <dt>checked<dd>for radio buttons and check boxes * <dt>src<dd>for fields with images * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>alt<dd>short description * <dt>align<dd>vertical or horizontal alignment * <dt>accept<dd>list of MIME types for file upload * <dt>disabled<dd>unavailable in this context * <dt>tabindex<dd>position in tabbing order * <dt>accesskey<dd>accessibility key character * <dt>usemap<dd>use client-side image map * <dt>ismap<dd>use server-side image map * <dt>readonly<dd>for text and passwd * <dt>onfocus<dd>the element got the focus * <dt>onblur<dd>the element lost the focus * <dt>onselect<dd>some text was selected * <dt>onchange<dd>the element value was changed * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas input(CharactersWriteable attrs) throws IOException { out.write("<input"); if (attrs != null) attrs.writeCharsOn(out); out.write("/>"); return this; } /** * Opens the (deprecated) <em>isindex</em> tag, without any attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas isindex() throws IOException { out.write("<isindex>"); openTagStack.add("</isindex>"); return this; } /** * Opens the <em>isindex</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>prompt<dd>prompt message * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @deprecated this tag is deprecated in HTML 4.0. */ @Deprecated public HtmlCanvas isindex(CharactersWriteable attrs) throws IOException { out.write("<isindex"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</isindex>"); return this; } /** * Opens the <em>label</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_label()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas label() throws IOException { out.write("<label>"); openTagStack.add("</label>"); return this; } /** * Opens the <em>label</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_label()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>for<dd>matches field ID value * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>accesskey<dd>accessibility key character * <dt>onfocus<dd>the element got the focus * <dt>onblur<dd>the element lost the focus * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas label(CharactersWriteable attrs) throws IOException { out.write("<label"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</label>"); return this; } /** * Closes the <em>label</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _label() throws IOException { return this.close("</label>"); } /** * Opens the <em>legend</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_legend()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas legend() throws IOException { out.write("<legend>"); openTagStack.add("</legend>"); return this; } /** * Opens the <em>legend</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_legend()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>for<dd> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>accesskey<dd>accessibility key character * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas legend(CharactersWriteable attrs) throws IOException { out.write("<legend"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</legend>"); return this; } /** * Closes the <em>legend</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _legend() throws IOException { return this.close("</legend>"); } /** * Opens the <em>li</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_li()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas li() throws IOException { out.write("<li>"); openTagStack.add("</li>"); return this; } /** * Opens the <em>li</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_li()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>type<dd>list item style * <dt>start<dd> * <dt>value<dd>reset sequence number * <dt>compact<dd> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas li(CharactersWriteable attrs) throws IOException { out.write("<li"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</li>"); return this; } /** * Closes the <em>li</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _li() throws IOException { return this.close("</li>"); } /** * Opens the <em>ol</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_ol()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas ol() throws IOException { out.write("<ol>"); openTagStack.add("</ol>"); return this; } /** * Opens the <em>ol</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_ol()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>type<dd>numbering style * <dt>start<dd>starting sequence number * <dt>value<dd> * <dt>compact<dd>reduced interitem spacing * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas ol(CharactersWriteable attrs) throws IOException { out.write("<ol"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</ol>"); return this; } /** * Closes the <em>ol</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _ol() throws IOException { return this.close("</ol>"); } /** * Opens the <em>ul</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_ul()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas ul() throws IOException { out.write("<ul>"); openTagStack.add("</ul>"); return this; } /** * Opens the <em>ul</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_ul()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>type<dd>bullet style * <dt>start<dd> * <dt>value<dd> * <dt>compact<dd>reduced interitem spacing * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas ul(CharactersWriteable attrs) throws IOException { out.write("<ul"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</ul>"); return this; } /** * Closes the <em>ul</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _ul() throws IOException { return this.close("</ul>"); } /** * Opens the <em>link</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onfocus<dd> * <dt>onblur<dd> * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>href<dd>URI for linked resource * <dt>hreflang<dd>language code * <dt>rel<dd>forward link types * <dt>rev<dd>reverse link types * <dt>target<dd>render in this frame * <dt>charset<dd>char encoding of linked resource * <dt>media<dd>for rendering on these media * <dt>type<dd>advisory content type * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas link(CharactersWriteable attrs) throws IOException { out.write("<link"); if (attrs != null) attrs.writeCharsOn(out); out.write('/'); out.write('>'); return this; } /** * Opens the <em>meta</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>name<dd>metainformation name * <dt>content<dd>associated information * <dt>scheme<dd>select form of content * <dt>http-equiv<dd>HTTP response header name * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas meta(CharactersWriteable attrs) throws IOException { out.write("<meta"); if (attrs != null) attrs.writeCharsOn(out); out.write('/'); out.write('>'); return this; } /** * Opens the <em>noframes</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_noframes()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas noframes() throws IOException { out.write("<noframes>"); openTagStack.add("</noframes>"); return this; } /** * Opens the <em>noframes</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_noframes()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas noframes(CharactersWriteable attrs) throws IOException { out.write("<noframes"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</noframes>"); return this; } /** * Closes the <em>noframes</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _noframes() throws IOException { return this.close("</noframes>"); } /** * Opens the <em>noscript</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_noscript()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas noscript() throws IOException { out.write("<noscript>"); openTagStack.add("</noscript>"); return this; } /** * Opens the <em>noscript</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_noscript()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas noscript(CharactersWriteable attrs) throws IOException { out.write("<noscript"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</noscript>"); return this; } /** * Closes the <em>noscript</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _noscript() throws IOException { return this.close("</noscript>"); } /** * Opens the <em>object</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_object()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas object() throws IOException { out.write("<object>"); openTagStack.add("</object>"); return this; } /** * Opens the <em>object</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_object()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>classid<dd>identifies an implementation * <dt>codebase<dd>base URI for classid, data, archive * <dt>codetype<dd>content type for code * <dt>data<dd>reference to object's data * <dt>type<dd>content type for data * <dt>archive<dd>space separated archive list * <dt>declare<dd>declare but don't instantiate flag * <dt>standby<dd>message to show while loading * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>tabindex<dd>position in tabbing order * <dt>usemap<dd>use client-side image map * <dt>name<dd>submit as part of form * <dt>align<dd>vertical or horizontal alignment * <dt>width<dd>override width * <dt>height<dd>override height * <dt>border<dd>link border width * <dt>hspace<dd>horizontal gutter * <dt>vspace<dd>vertical gutter * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas object(CharactersWriteable attrs) throws IOException { out.write("<object"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</object>"); return this; } /** * Closes the <em>object</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _object() throws IOException { return this.close("</object>"); } /** * Opens the <em>optgroup</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_optgroup()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas optgroup() throws IOException { out.write("<optgroup>"); openTagStack.add("</optgroup>"); return this; } /** * Opens the <em>optgroup</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_optgroup()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>name<dd> * <dt>label<dd>for use in hierarchical menus * <dt>size<dd> * <dt>multiple<dd> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>disabled<dd>unavailable in this context * <dt>tabindex<dd> * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas optgroup(CharactersWriteable attrs) throws IOException { out.write("<optgroup"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</optgroup>"); return this; } /** * Closes the <em>optgroup</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _optgroup() throws IOException { return this.close("</optgroup>"); } /** * Opens the <em>option</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_option()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas option() throws IOException { out.write("<option>"); openTagStack.add("</option>"); return this; } /** * Opens the <em>option</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_option()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>selected<dd> * <dt>value<dd>defaults to element content * <dt>label<dd>for use in hierarchical menus * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>disabled<dd>unavailable in this context * <dt>tabindex<dd> * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas option(CharactersWriteable attrs) throws IOException { out.write("<option"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</option>"); return this; } /** * Closes the <em>option</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _option() throws IOException { return this.close("</option>"); } /** * Opens the <em>select</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_select()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas select() throws IOException { out.write("<select>"); openTagStack.add("</select>"); return this; } /** * Opens the <em>select</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_select()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>name<dd>field name * <dt>size<dd>rows visible * <dt>multiple<dd>default is single selection * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>disabled<dd>unavailable in this context * <dt>tabindex<dd>position in tabbing order * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>onblur<dd>the element lost the focus * <dt>onchange<dd>the element value was changed * <dt>onfocus<dd>the element got the focus * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas select(CharactersWriteable attrs) throws IOException { out.write("<select"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</select>"); return this; } /** * Closes the <em>select</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _select() throws IOException { return this.close("</select>"); } /** * Opens the <em>p</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_p()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas p() throws IOException { out.write("<p>"); openTagStack.add("</p>"); return this; } /** * Opens the <em>p</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_p()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>alt<dd> * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>align<dd>align, text alignment * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas p(CharactersWriteable attrs) throws IOException { out.write("<p"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</p>"); return this; } /** * Closes the <em>p</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _p() throws IOException { return this.close("</p>"); } /** * Opens the <em>param</em> tag, with the specified attributes. * * <p>This tag must not be closed, an end tag is forbidden. * * <p>This tag supports the following attributes: * <dl> * <dt>name<dd>property name * <dt>value<dd>property value * <dt>valuetype<dd>How to interpret value * <dt>type<dd>content type for value when valuetype=ref * <dt>id<dd>document-wide unique id * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas param(CharactersWriteable attrs) throws IOException { out.write("<param"); if (attrs != null) attrs.writeCharsOn(out); out.write('/'); out.write('>'); return this; } /** * Opens the <em>pre</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_pre()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas pre() throws IOException { out.write("<pre>"); openTagStack.add("</pre>"); return this; } /** * Opens the <em>pre</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_pre()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>width<dd> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas pre(CharactersWriteable attrs) throws IOException { out.write("<pre"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</pre>"); return this; } /** * Closes the <em>pre</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _pre() throws IOException { return this.close("</pre>"); } /** * Opens the <em>blockquote</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_blockquote()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas blockquote() throws IOException { out.write("<blockquote>"); openTagStack.add("</blockquote>"); return this; } /** * Opens the <em>blockquote</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_blockquote()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>cite<dd>URI for source document or msg * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas blockquote(CharactersWriteable attrs) throws IOException { out.write("<blockquote"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</blockquote>"); return this; } /** * Closes the <em>blockquote</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _blockquote() throws IOException { return this.close("</blockquote>"); } /** * Opens the <em>q</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_q()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas q() throws IOException { out.write("<q>"); openTagStack.add("</q>"); return this; } /** * Opens the <em>q</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_q()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>cite<dd>URI for source document or msg * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas q(CharactersWriteable attrs) throws IOException { out.write("<q"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</q>"); return this; } /** * Closes the <em>q</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _q() throws IOException { return this.close("</q>"); } /** * Opens the <em>script</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_script()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas script() throws IOException { out.write("<script>"); openTagStack.add("</script>"); return this; } /** * Opens the <em>script</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_script()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>src<dd>URI for an external script * <dt>type<dd>content type of script language * <dt>language<dd>predefined script language name * <dt>defer<dd>UA may defer execution of script * <dt>charset<dd>char encoding of linked resource * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas script(CharactersWriteable attrs) throws IOException { out.write("<script"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</script>"); return this; } /** * Closes the <em>script</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _script() throws IOException { return this.close("</script>"); } /** * Opens the <em>style</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_style()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas style() throws IOException { out.write("<style>"); openTagStack.add("</style>"); return this; } /** * Opens the <em>style</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_style()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>type<dd>content type of style language * <dt>media<dd>designed for use with these media * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas style(CharactersWriteable attrs) throws IOException { out.write("<style"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</style>"); return this; } /** * Closes the <em>style</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _style() throws IOException { return this.close("</style>"); } /** * Opens the <em>sub</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_sub()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas sub() throws IOException { out.write("<sub>"); openTagStack.add("</sub>"); return this; } /** * Opens the <em>sub</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_sub()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas sub(CharactersWriteable attrs) throws IOException { out.write("<sub"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</sub>"); return this; } /** * Closes the <em>sub</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _sub() throws IOException { return this.close("</sub>"); } /** * Opens the <em>sup</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_sup()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas sup() throws IOException { out.write("<sup>"); openTagStack.add("</sup>"); return this; } /** * Opens the <em>sup</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_sup()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas sup(CharactersWriteable attrs) throws IOException { out.write("<sup"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</sup>"); return this; } /** * Closes the <em>sup</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _sup() throws IOException { return this.close("</sup>"); } /** * Opens the <em>textarea</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_textarea()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas textarea() throws IOException { out.write("<textarea>"); openTagStack.add("</textarea>"); return this; } /** * Opens the <em>textarea</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_textarea()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>name<dd> * <dt>rows<dd> * <dt>cols<dd> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>readonly<dd> * <dt>disabled<dd>unavailable in this context * <dt>tabindex<dd>position in tabbing order * <dt>accesskey<dd>accessibility key character * <dt>onfocus<dd>the element got the focus * <dt>onblur<dd>the element lost the focus * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>onchange<dd>the element value was changed * <dt>onselect<dd>some text was selected * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas textarea(CharactersWriteable attrs) throws IOException { out.write("<textarea"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</textarea>"); return this; } /** * Closes the <em>textarea</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _textarea() throws IOException { return this.close("</textarea>"); } /** * Opens the <em>title</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_title()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas title() throws IOException { out.write("<title>"); openTagStack.add("</title>"); return this; } /** * Opens the <em>title</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_title()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas title(CharactersWriteable attrs) throws IOException { out.write("<title"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</title>"); return this; } /** * Closes the <em>title</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _title() throws IOException { return this.close("</title>"); } /** * Opens the <em>table</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_table()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas table() throws IOException { out.write("<table>"); openTagStack.add("</table>"); return this; } /** * Opens the <em>table</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_table()} (the end tag is required). * * <p>This tag supports the following attributes: * <dl> * <dt>summary<dd>purpose/structure for speech output * <dt>align<dd>table position relative to window * <dt>width<dd>table width * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>bgcolor<dd>background color for cells * <dt>frame<dd>which parts of frame to render * <dt>rules<dd>rulings between rows and cols * <dt>border<dd>controls frame width around table * <dt>cellspacing<dd>spacing between cells * <dt>cellpadding<dd>spacing within cells * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas table(CharactersWriteable attrs) throws IOException { out.write("<table"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</table>"); return this; } /** * Closes the <em>table</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _table() throws IOException { return this.close("</table>"); } /** * Opens the <em>tbody</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_tbody()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas tbody() throws IOException { out.write("<tbody>"); openTagStack.add("</tbody>"); return this; } /** * Opens the <em>tbody</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_tbody()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>align<dd> * <dt>valign<dd>vertical alignment in cells * <dt>char<dd>alignment char, e.g. char=':' * <dt>charoff<dd>offset for alignment char * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas tbody(CharactersWriteable attrs) throws IOException { out.write("<tbody"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</tbody>"); return this; } /** * Closes the <em>tbody</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _tbody() throws IOException { return this.close("</tbody>"); } /** * Opens the <em>tfoot</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_tfoot()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas tfoot() throws IOException { out.write("<tfoot>"); openTagStack.add("</tfoot>"); return this; } /** * Opens the <em>tfoot</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_tfoot()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>align<dd> * <dt>valign<dd>vertical alignment in cells * <dt>char<dd>alignment char, e.g. char=':' * <dt>charoff<dd>offset for alignment char * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas tfoot(CharactersWriteable attrs) throws IOException { out.write("<tfoot"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</tfoot>"); return this; } /** * Closes the <em>tfoot</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _tfoot() throws IOException { return this.close("</tfoot>"); } /** * Opens the <em>thead</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_thead()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas thead() throws IOException { out.write("<thead>"); openTagStack.add("</thead>"); return this; } /** * Opens the <em>thead</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_thead()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>align<dd> * <dt>valign<dd>vertical alignment in cells * <dt>char<dd>alignment char, e.g. char=':' * <dt>charoff<dd>offset for alignment char * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas thead(CharactersWriteable attrs) throws IOException { out.write("<thead"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</thead>"); return this; } /** * Closes the <em>thead</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _thead() throws IOException { return this.close("</thead>"); } /** * Opens the <em>td</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_td()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas td() throws IOException { out.write("<td>"); openTagStack.add("</td>"); return this; } /** * Opens the <em>td</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_td()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>headers<dd>list of id's for header cells * <dt>scope<dd>scope covered by header cells * <dt>abbr<dd>abbreviation for header cell * <dt>axis<dd>names groups of related headers * <dt>rowspan<dd>number of rows spanned by cell * <dt>colspan<dd>number of cols spanned by cell * <dt>nowrap<dd>suppress word wrap * <dt>width<dd>width for cell * <dt>height<dd>height for cell * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>align<dd> * <dt>valign<dd>vertical alignment in cells * <dt>char<dd>alignment char, e.g. char=':' * <dt>charoff<dd>offset for alignment char * <dt>bgcolor<dd>cell background color * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas td(CharactersWriteable attrs) throws IOException { out.write("<td"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</td>"); return this; } /** * Closes the <em>td</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _td() throws IOException { return this.close("</td>"); } /** * Opens the <em>th</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_th()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas th() throws IOException { out.write("<th>"); openTagStack.add("</th>"); return this; } /** * Opens the <em>th</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_th()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>headers<dd>list of id's for header cells * <dt>scope<dd>scope covered by header cells * <dt>abbr<dd>abbreviation for header cell * <dt>axis<dd>names groups of related headers * <dt>rowspan<dd>number of rows spanned by cell * <dt>colspan<dd>number of cols spanned by cell * <dt>nowrap<dd>suppress word wrap * <dt>width<dd>width for cell * <dt>height<dd>height for cell * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>align<dd> * <dt>valign<dd>vertical alignment in cells * <dt>char<dd>alignment char, e.g. char=':' * <dt>charoff<dd>offset for alignment char * <dt>bgcolor<dd>cell background color * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas th(CharactersWriteable attrs) throws IOException { out.write("<th"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</th>"); return this; } /** * Closes the <em>th</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _th() throws IOException { return this.close("</th>"); } /** * Opens the <em>tr</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_tr()} (the end tag is optional). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas tr() throws IOException { out.write("<tr>"); openTagStack.add("</tr>"); return this; } /** * Opens the <em>tr</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_tr()} (the end tag is optional). * * <p>This tag supports the following attributes: * <dl> * <dt>id<dd>document-wide unique id * <dt>class<dd>space separated list of classes * <dt>lang<dd>language code * <dt>dir<dd>direction for weak/neutral text * <dt>title<dd>advisory title * <dt>style<dd>associated style info * <dt>onclick<dd>a pointer button was clicked * <dt>ondblclick<dd>a pointer button was double clicked * <dt>onmousedown<dd>a pointer button was pressed down * <dt>onmouseup<dd>a pointer button was released * <dt>onmouseover<dd>a pointer was moved onto * <dt>onmousemove<dd>a pointer was moved within * <dt>onmouseout<dd>a pointer was moved away * <dt>onkeypress<dd>a key was pressed and released * <dt>onkeydown<dd>a key was pressed down * <dt>onkeyup<dd>a key was released * <dt>align<dd> * <dt>valign<dd>vertical alignment in cells * <dt>char<dd>alignment char, e.g. char=':' * <dt>charoff<dd>offset for alignment char * <dt>bgcolor<dd>background color for row * </dl> * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. */ public HtmlCanvas tr(CharactersWriteable attrs) throws IOException { out.write("<tr"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</tr>"); return this; } /** * Closes the <em>tr</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. */ public HtmlCanvas _tr() throws IOException { return this.close("</tr>"); } /** * Defines an article. * * Opens the <em>article</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_article()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas article() throws IOException { out.write("<article>"); openTagStack.add("</article>"); return this; } /** * Defines an article. * * Opens the <em>article</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_article()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas article(CharactersWriteable attrs) throws IOException { out.write("<article"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</article>"); return this; } /** * Closes the <em>article</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _article() throws IOException { return this.close("</article>"); } /** * Defines content aside from the page content. * * Opens the <em>aside</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_aside()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas aside() throws IOException { out.write("<aside>"); openTagStack.add("</aside>"); return this; } /** * Defines content aside from the page content. * * Opens the <em>aside</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_aside()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas aside(CharactersWriteable attrs) throws IOException { out.write("<aside"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</aside>"); return this; } /** * Closes the <em>aside</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _aside() throws IOException { return this.close("</aside>"); } /** * Defines sound content. * * Opens the <em>audio</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_audio()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas audio() throws IOException { out.write("<audio>"); openTagStack.add("</audio>"); return this; } /** * Defines sound content. * * Opens the <em>audio</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_audio()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas audio(CharactersWriteable attrs) throws IOException { out.write("<audio"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</audio>"); return this; } /** * Closes the <em>audio</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _audio() throws IOException { return this.close("</audio>"); } /** * Defines graphics. * * Opens the <em>canvas</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_canvas()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas canvas() throws IOException { out.write("<canvas>"); openTagStack.add("</canvas>"); return this; } /** * Defines graphics. * * Opens the <em>canvas</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_canvas()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas canvas(CharactersWriteable attrs) throws IOException { out.write("<canvas"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</canvas>"); return this; } /** * Closes the <em>canvas</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _canvas() throws IOException { return this.close("</canvas>"); } /** * Defines a command button. * * Opens the <em>command</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_command()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas command() throws IOException { out.write("<command>"); openTagStack.add("</command>"); return this; } /** * Defines a command button. * * Opens the <em>command</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_command()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas command(CharactersWriteable attrs) throws IOException { out.write("<command"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</command>"); return this; } /** * Closes the <em>command</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _command() throws IOException { return this.close("</command>"); } /** * Defines a dropdown list. * * Opens the <em>datalist</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_datalist()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas datalist() throws IOException { out.write("<datalist>"); openTagStack.add("</datalist>"); return this; } /** * Defines a dropdown list. * * Opens the <em>datalist</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_datalist()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas datalist(CharactersWriteable attrs) throws IOException { out.write("<datalist"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</datalist>"); return this; } /** * Closes the <em>datalist</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _datalist() throws IOException { return this.close("</datalist>"); } /** * Defines details of an element. * * Opens the <em>details</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_details()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas details() throws IOException { out.write("<details>"); openTagStack.add("</details>"); return this; } /** * Defines details of an element. * * Opens the <em>details</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_details()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas details(CharactersWriteable attrs) throws IOException { out.write("<details"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</details>"); return this; } /** * Closes the <em>details</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _details() throws IOException { return this.close("</details>"); } /** * Defines external interactive content or plugin. * * Opens the <em>embed</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_embed()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas embed() throws IOException { out.write("<embed>"); openTagStack.add("</embed>"); return this; } /** * Defines external interactive content or plugin. * * Opens the <em>embed</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_embed()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas embed(CharactersWriteable attrs) throws IOException { out.write("<embed"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</embed>"); return this; } /** * Closes the <em>embed</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _embed() throws IOException { return this.close("</embed>"); } /** * Defines the caption of a figure element. * * Opens the <em>figcaption</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_figcaption()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas figcaption() throws IOException { out.write("<figcaption>"); openTagStack.add("</figcaption>"); return this; } /** * Defines the caption of a figure element. * * Opens the <em>figcaption</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_figcaption()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas figcaption(CharactersWriteable attrs) throws IOException { out.write("<figcaption"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</figcaption>"); return this; } /** * Closes the <em>figcaption</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _figcaption() throws IOException { return this.close("</figcaption>"); } /** * Defines a group of media content, and their caption. * * Opens the <em>figure</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_figure()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas figure() throws IOException { out.write("<figure>"); openTagStack.add("</figure>"); return this; } /** * Defines a group of media content, and their caption. * * Opens the <em>figure</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_figure()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas figure(CharactersWriteable attrs) throws IOException { out.write("<figure"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</figure>"); return this; } /** * Closes the <em>figure</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _figure() throws IOException { return this.close("</figure>"); } /** * Defines a footer for a section or page. * * Opens the <em>footer</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_footer()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas footer() throws IOException { out.write("<footer>"); openTagStack.add("</footer>"); return this; } /** * Defines a footer for a section or page. * * Opens the <em>footer</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_footer()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas footer(CharactersWriteable attrs) throws IOException { out.write("<footer"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</footer>"); return this; } /** * Closes the <em>footer</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _footer() throws IOException { return this.close("</footer>"); } /** * Defines a header for a section or page. * * Opens the <em>header</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_header()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas header() throws IOException { out.write("<header>"); openTagStack.add("</header>"); return this; } /** * Defines a header for a section or page. * * Opens the <em>header</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_header()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas header(CharactersWriteable attrs) throws IOException { out.write("<header"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</header>"); return this; } /** * Closes the <em>header</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _header() throws IOException { return this.close("</header>"); } /** * Defines information about a section in a document. * * Opens the <em>hgroup</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_hgroup()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas hgroup() throws IOException { out.write("<hgroup>"); openTagStack.add("</hgroup>"); return this; } /** * Defines information about a section in a document. * * Opens the <em>hgroup</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_hgroup()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas hgroup(CharactersWriteable attrs) throws IOException { out.write("<hgroup"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</hgroup>"); return this; } /** * Closes the <em>hgroup</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _hgroup() throws IOException { return this.close("</hgroup>"); } /** * Defines a generated key in a form. * * Opens the <em>keygen</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_keygen()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas keygen() throws IOException { out.write("<keygen>"); openTagStack.add("</keygen>"); return this; } /** * Defines a generated key in a form. * * Opens the <em>keygen</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_keygen()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas keygen(CharactersWriteable attrs) throws IOException { out.write("<keygen"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</keygen>"); return this; } /** * Closes the <em>keygen</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _keygen() throws IOException { return this.close("</keygen>"); } /** * Defines marked text. * * Opens the <em>mark</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_mark()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas mark() throws IOException { out.write("<mark>"); openTagStack.add("</mark>"); return this; } /** * Defines marked text. * * Opens the <em>mark</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_mark()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas mark(CharactersWriteable attrs) throws IOException { out.write("<mark"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</mark>"); return this; } /** * Closes the <em>mark</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _mark() throws IOException { return this.close("</mark>"); } /** * Defines measurement within a predefined range. * * Opens the <em>meter</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_meter()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas meter() throws IOException { out.write("<meter>"); openTagStack.add("</meter>"); return this; } /** * Defines measurement within a predefined range. * * Opens the <em>meter</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_meter()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas meter(CharactersWriteable attrs) throws IOException { out.write("<meter"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</meter>"); return this; } /** * Closes the <em>meter</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _meter() throws IOException { return this.close("</meter>"); } /** * Defines navigation links. * * Opens the <em>nav</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_nav()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas nav() throws IOException { out.write("<nav>"); openTagStack.add("</nav>"); return this; } /** * Defines navigation links. * * Opens the <em>nav</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_nav()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas nav(CharactersWriteable attrs) throws IOException { out.write("<nav"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</nav>"); return this; } /** * Closes the <em>nav</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _nav() throws IOException { return this.close("</nav>"); } /** * Defines some types of output. * * Opens the <em>output</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_output()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas output() throws IOException { out.write("<output>"); openTagStack.add("</output>"); return this; } /** * Defines some types of output. * * Opens the <em>output</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_output()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas output(CharactersWriteable attrs) throws IOException { out.write("<output"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</output>"); return this; } /** * Closes the <em>output</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _output() throws IOException { return this.close("</output>"); } /** * Defines progress of a task of any kind. * * Opens the <em>progress</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_progress()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas progress() throws IOException { out.write("<progress>"); openTagStack.add("</progress>"); return this; } /** * Defines progress of a task of any kind. * * Opens the <em>progress</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_progress()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas progress(CharactersWriteable attrs) throws IOException { out.write("<progress"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</progress>"); return this; } /** * Closes the <em>progress</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _progress() throws IOException { return this.close("</progress>"); } /** * Used in ruby annotations to define what to show browsers that to not support the ruby element.. * * Opens the <em>rp</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_rp()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas rp() throws IOException { out.write("<rp>"); openTagStack.add("</rp>"); return this; } /** * Used in ruby annotations to define what to show browsers that to not support the ruby element.. * * Opens the <em>rp</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_rp()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas rp(CharactersWriteable attrs) throws IOException { out.write("<rp"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</rp>"); return this; } /** * Closes the <em>rp</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _rp() throws IOException { return this.close("</rp>"); } /** * Defines explanation to ruby annotations.. * * Opens the <em>rt</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_rt()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas rt() throws IOException { out.write("<rt>"); openTagStack.add("</rt>"); return this; } /** * Defines explanation to ruby annotations.. * * Opens the <em>rt</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_rt()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas rt(CharactersWriteable attrs) throws IOException { out.write("<rt"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</rt>"); return this; } /** * Closes the <em>rt</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _rt() throws IOException { return this.close("</rt>"); } /** * Defines ruby annotations. * * Opens the <em>ruby</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_ruby()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas ruby() throws IOException { out.write("<ruby>"); openTagStack.add("</ruby>"); return this; } /** * Defines ruby annotations. * * Opens the <em>ruby</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_ruby()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas ruby(CharactersWriteable attrs) throws IOException { out.write("<ruby"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</ruby>"); return this; } /** * Closes the <em>ruby</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _ruby() throws IOException { return this.close("</ruby>"); } /** * Defines a section. * * Opens the <em>section</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_section()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas section() throws IOException { out.write("<section>"); openTagStack.add("</section>"); return this; } /** * Defines a section. * * Opens the <em>section</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_section()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas section(CharactersWriteable attrs) throws IOException { out.write("<section"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</section>"); return this; } /** * Closes the <em>section</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _section() throws IOException { return this.close("</section>"); } /** * Defines media resources. * * Opens the <em>source</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_source()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas source() throws IOException { out.write("<source>"); openTagStack.add("</source>"); return this; } /** * Defines media resources. * * Opens the <em>source</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_source()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas source(CharactersWriteable attrs) throws IOException { out.write("<source"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</source>"); return this; } /** * Closes the <em>source</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _source() throws IOException { return this.close("</source>"); } /** * Defines the header of a "detail" element. * * Opens the <em>summary</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_summary()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas summary() throws IOException { out.write("<summary>"); openTagStack.add("</summary>"); return this; } /** * Defines the header of a "detail" element. * * Opens the <em>summary</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_summary()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas summary(CharactersWriteable attrs) throws IOException { out.write("<summary"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</summary>"); return this; } /** * Closes the <em>summary</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _summary() throws IOException { return this.close("</summary>"); } /** * Defines a date/time. * * Opens the <em>time</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_time()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas time() throws IOException { out.write("<time>"); openTagStack.add("</time>"); return this; } /** * Defines a date/time. * * Opens the <em>time</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_time()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas time(CharactersWriteable attrs) throws IOException { out.write("<time"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</time>"); return this; } /** * Closes the <em>time</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _time() throws IOException { return this.close("</time>"); } /** * Defines a video. * * Opens the <em>video</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_video()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas video() throws IOException { out.write("<video>"); openTagStack.add("</video>"); return this; } /** * Defines a video. * * Opens the <em>video</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_video()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas video(CharactersWriteable attrs) throws IOException { out.write("<video"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</video>"); return this; } /** * Closes the <em>video</em> tag. * @return * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _video() throws IOException { return this.close("</video>"); } /** * Defines a possible line-break. * * Opens the <em>wbr</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_wbr()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas wbr() throws IOException { out.write("<wbr>"); openTagStack.add("</wbr>"); return this; } /** * Defines a possible line-break. * * Opens the <em>wbr</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_wbr()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas wbr(CharactersWriteable attrs) throws IOException { out.write("<wbr"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</wbr>"); return this; } /** * Closes the <em>wbr</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ /** * @return * @throws IOException */ public HtmlCanvas _wbr() throws IOException { return this.close("</wbr>"); } /** * Defines the main content of a document. * * Opens the <em>main</em> tag, without any attributes. * * <p>Close this tag by calling {@link #_main()} (the end tag is required). * * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas main() throws IOException { out.write("<main>"); openTagStack.add("</main>"); return this; } /** * Defines the main content of a document. * * Opens the <em>main</em> tag, with the specified attributes. * * <p>Close this tag by calling {@link #_main()} (the end tag is required). * * @param attrs the {@link CharactersWriteable}, or <code>null</code> if none. * @return the receiver, this <code>HtmlCanvas</code> instance. * @throws IOException in case of an I/O error. * @since HTML5 */ public HtmlCanvas main(CharactersWriteable attrs) throws IOException { out.write("<main"); if (attrs != null) attrs.writeCharsOn(out); out.write('>'); openTagStack.add("</main>"); return this; } /** * Closes the <em>main</em> tag. * * @throws IOException in case of an I/O error while writing the end tag. * @since HTML5 */ public HtmlCanvas _main() throws IOException { return this.close("</main>"); } /** * Convenience method that write the integer value (if not null). * @param i * @return * @throws IOException */ public HtmlCanvas write(Integer i) throws IOException { if (null == i) { return this; } out.append(Integer.toString(i)); return this; } /** * Convenience method that calls write(Integer) and closes the last opened tag. * @param i * @return * @throws IOException */ public HtmlCanvas content(Integer i) throws IOException { if (null == i) { return this.close(); } out.append(Integer.toString(i)); return this.close(); } }