blob: bc3d3fcbc4689fc1a4c5293dcbbaac22e016cec5 [file] [log] [blame]
package org.apache.maven.doxia.sink;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import javax.swing.text.MutableAttributeSet;
/**
* A set of attributes for a sink event.
* <p>
* All sink methods that produce some presentation-level output should have at least
* one form that allows to pass in a Set of SinkEventAttributes. For instance in
* </p>
* <pre>void text( String text, SinkEventAttributes attributes );</pre>
* <p>
* the <code>attributes</code> parameter can be used to specify some text styling
* options, or other optional parameters.
* </p>
* <p>
* What kind of attributes are supported depends on the event and the sink
* implementation. The sink API just specifies a list of suggested attribute
* names, that sinks are expected to recognize, and parsers are expected to use
* preferably when emitting events.
* </p>
* <p>
* It is recommended that for simple attributes, both keys and values should be
* lower-case Strings, but this is not mandatory. One example of an exception is
* the {@link #STYLE} attribute, whose value may itself be an AttributeSet again.
* </p>
* <p>
* The <b>base attributes</b> that are supported by almost all events are
* {@link #CLASS}, {@link #ID}, {@link #LANG}, {@link #STYLE} and {@link #TITLE}.
* </p>
*
* @author ltheussl
* @version $Id$
* @since 1.1
*/
@SuppressWarnings( "checkstyle:interfaceistype" )
public interface SinkEventAttributes
extends MutableAttributeSet
{
// base
/**
* The class of the event element.
*/
String CLASS = "class";
/**
* A unique id for the event element.
*/
String ID = "id";
/**
* The language code for the event element.
*/
String LANG = "lang";
/**
* An inline style definition.
*
* <p>
* Generally supported values are "italic", "bold", "monospaced" and AttributeSets.
* </p>
* <p>
* If the value of this Attribute is itself an AttributeSet, it is interpreted as a
* sequence of CSS properties. For instance, the HTML paragraph opening
* </p>
* <pre>
* &lt;p style="color: red; margin-left: 20px"&gt;
* </pre>
* <p>
* can be produced by an HTML Sink via the event
* <code>{@link Sink#paragraph(SinkEventAttributes)}</code>, where the value of the
* SinkEventAttribute is an AttributeSet with two Attributes ("<code>color</code>" and
* "<code>margin-left</code>" with values "<code>red</code>" and "<code>20px</code>",
* respectively).
* </p>
*/
String STYLE = "style";
/**
* A text to display in a tool tip.
*/
String TITLE = "title";
// head
/**
* A space separated list of URL's that contains meta data information about the document.
*/
String PROFILE = "profile";
/**
* An electronic mail address.
*/
String EMAIL = "email";
// img
/**
* Specifies the alignment of the event element within its parent element.
*
* <p>
* Generally supported values are "left", "right", "center", "justify".
* </p>
*/
String ALIGN = "align";
/**
* Defines a short description of the event element.
*/
String ALT = "alt";
/**
* Defines a border around an event element.
*/
String BORDER = "border";
/**
* Defines the height of an event element.
*/
String HEIGHT = "height";
/**
* Defines white space on the left and right side of an event element.
*/
String HSPACE = "hspace";
/**
* Defines an image as a server-side image map. Only used by the figureGraphics Sink event.
*/
String ISMAP = "ismap";
/**
* The URL of an external resource, eg an image.
*/
String SRC = "src";
/**
* Defines an image as a client-side image map.
*/
String USEMAP = "usemap";
/**
* Defines white space on the top and bottom of the event element.
*/
String VSPACE = "vspace";
/**
* Sets the width of an event element.
*/
String WIDTH = "width";
// hr
/**
* Used to indicate that an element comes with a shadow.
*/
String NOSHADE = "noshade";
/**
* Specifies the size, or thickness, or height of an event element.
*/
String SIZE = "size";
// anchor
/**
* Specifies the name of an anchor.
*/
String NAME = "name";
// link
/**
* Specifies the character encoding of text associated with an event element.
*/
String CHARSET = "charset";
/**
* May be used in conjunction with {@link #SHAPE}.
*
* <p>
* Valid values are the same as for the corresponding HTML attributes.
* </p>
*/
String COORDS = "coords";
/**
* The target URL of an event element, eg a link.
*/
String HREF = "href";
/**
* Specifies the base language of the target URL.
*
* <p>
* Used in conjunction with {@link #HREF}.
* </p>
*/
String HREFLANG = "hreflang";
/**
* For references to external resourcs, specifies the relationship between
* the current document and the target URL.
*
* <p>
* Valid values are the same as for the corresponding HTML attribute.
* </p>
*/
String REL = "rel";
/**
* For references to external resourcs, specifies the relationship between
* the target URL and the current document.
*
* <p>
* Valid values are the same as for the corresponding HTML attribute.
* </p>
*/
String REV = "rev";
/**
* Defines the type of region to be defined for a mapping.
*
* <p>
* Used with the {@link #COORDS} attribute.
* </p>
*/
String SHAPE = "shape";
/**
* Where to open the target URL.
*
* <p>
* Valid values are the same as for the corresponding HTML attribute.
* </p>
*/
String TARGET = "target";
/**
* Specifies the MIME (Multipurpose Internet Mail Extensions) type of an
* external resource URL, eg a link.
*/
String TYPE = "type";
// table
/**
* Specifies the background color of an event element.
*/
String BGCOLOR = "bgcolor";
/**
* Specifies the space between cell walls and contents.
*/
String CELLPADDING = "cellpadding";
/**
* Specifies the space between cells.
*/
String CELLSPACING = "cellspacing";
/**
* Specifies which sides of a border surrounding an element should be visible.
*
* <p>
* Valid values are the same as for the corresponding HTML attribute.
* </p>
*/
String FRAME = "frame";
/**
* Specifies horizontal/vertical divider lines between certain elements, eg table cells.
*/
String RULES = "rules";
/**
* Specifies a summary of an event attribute for speech-synthesizing/non-visual target output.
*/
String SUMMARY = "summary";
// table cell
/**
* Specifies an abbreviated version of the content in an element.
*/
String ABBRV = "abbrv";
/**
* Defines a name for a cell.
*/
String AXIS = "axis";
/**
* Indicates the number of columns a cell should span. Used in tables.
*/
String COLSPAN = "colspan";
/**
* A space-separated list of cell IDs that supply header information for the cell.
*/
String HEADERS = "headers";
/**
* Whether to disable or enable automatic text wrapping for an element.
*/
String NOWRAP = "nowrap";
/**
* Indicates the number of rows a cell should span. Used in tables.
*/
String ROWSPAN = "rowspan";
/**
* A general scope parameter. In Particular, for table cells this
* specifies if the cell provides header information for the rest of the
* row that contains it ("row"), or for the rest of the column ("col"),
* or for the rest of the row group that contains it ("rowgroup"),
* or for the rest of the column group that contains it ("colgroup").
*/
String SCOPE = "scope";
/**
* Specifies the vertical alignment of an element.
*
* <p>
* Generally accepted values are "top", "baseline", "middle", "bottom", "sup", "sub".
* </p>
*/
String VALIGN = "valign";
// text
/**
* Specifies a decoration for an element.
*
* <p>
* Generally accepted values are "underline", "overline", "line-through", "boxed".
* </p>
*/
String DECORATION = "decoration";
/**
* Specifies the semantics of an element.
*
* <p>
* Generally accepted values are "emphasis", "strong",
* "small", "line-through", "citation", "quote", "definition", "abbreviation",
* "italic", "bold", "monospaced", "code, "variable", "sample", "keyboard",
* "superscript", "subscript", "annotation", "highlight", "ruby", "rubyBase",
* "rubyText", "rubyTextContainer", "rubyParentheses", "bidirectionalIsolation",
* "bidirectionalOverride", "phrase", "insert", "delete".
* </p>
*/
String SEMANTICS = "semantics";
/**
* Specifies the semantics of an element.
*
* <p>
* Generally accepted values are "article", "section",
* "navigation", "sidebar".
* </p>
*/
String SECTIONS = "sections";
/**
* Specifies a value for the data element.
*/
String VALUE = "value";
/**
* Specifies a machine readable date/time for the time element.
*/
String DATETIME = "datetime";
}