View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.doxia.sink;
20  
21  import javax.swing.text.MutableAttributeSet;
22  
23  /**
24   * A set of attributes for a sink event.
25   * <p>
26   * All sink methods that produce some presentation-level output should have at least
27   * one form that allows to pass in a Set of SinkEventAttributes. For instance in
28   * </p>
29   * <pre>void text(String text, SinkEventAttributes attributes);</pre>
30   * <p>
31   * the <code>attributes</code> parameter can be used to specify some text styling
32   * options, or other optional parameters.
33   * </p>
34   * <p>
35   * What kind of attributes are supported depends on the event and the sink
36   * implementation. The sink API just specifies a list of suggested attribute
37   * names, that sinks are expected to recognize, and parsers are expected to use
38   * preferably when emitting events.
39   * </p>
40   * <p>
41   * It is recommended that for simple attributes, both keys and values should be
42   * lower-case Strings, but this is not mandatory. One example of an exception is
43   * the {@link #STYLE} attribute, whose value may itself be an AttributeSet again.
44   * </p>
45   * <p>
46   * The <b>base attributes</b> that are supported by almost all events are
47   * {@link #CLASS}, {@link #ID}, {@link #LANG}, {@link #STYLE} and {@link #TITLE}.
48   * </p>
49   *
50   * @author ltheussl
51   * @since 1.1
52   */
53  @SuppressWarnings("checkstyle:interfaceistype")
54  public interface SinkEventAttributes extends MutableAttributeSet {
55      // base
56  
57      /**
58       * The class of the event element.
59       */
60      String CLASS = "class";
61  
62      /**
63       * A unique id for the event element.
64       */
65      String ID = "id";
66  
67      /**
68       * The language code for the event element.
69       */
70      String LANG = "lang";
71  
72      /**
73       * An inline style definition.
74       *
75       * <p>
76       *   Generally supported values are "italic", "bold", "monospaced" and AttributeSets.
77       * </p>
78       * <p>
79       *   If the value of this Attribute is itself an AttributeSet, it is interpreted as a
80       *   sequence of CSS properties. For instance, the HTML paragraph opening
81       * </p>
82       * <pre>
83       *   &lt;p style="color: red; margin-left: 20px"&gt;
84       * </pre>
85       * <p>
86       *   can be produced by an HTML Sink via the event
87       *   <code>{@link Sink#paragraph(SinkEventAttributes)}</code>, where the value of the
88       *   SinkEventAttribute is an AttributeSet with two Attributes ("<code>color</code>" and
89       *   "<code>margin-left</code>" with values "<code>red</code>" and "<code>20px</code>",
90       *   respectively).
91       * </p>
92       */
93      String STYLE = "style";
94  
95      /**
96       * A text to display in a tool tip.
97       */
98      String TITLE = "title";
99  
100     // head
101 
102     /**
103      * A space separated list of URL's that contains meta data information about the document.
104      */
105     String PROFILE = "profile";
106 
107     /**
108      * An electronic mail address.
109      */
110     String EMAIL = "email";
111 
112     // img
113 
114     /**
115      * Specifies the alignment of the event element within its parent element.
116      *
117      * <p>
118      *   Generally supported values are "left", "right", "center", "justify".
119      * </p>
120      */
121     String ALIGN = "align";
122 
123     /**
124      * Defines a short description of the event element.
125      */
126     String ALT = "alt";
127 
128     /**
129      * Defines a border around an event element.
130      */
131     String BORDER = "border";
132 
133     /**
134      * Defines the height of an event element.
135      */
136     String HEIGHT = "height";
137 
138     /**
139      * Defines white space on the left and right side of an event element.
140      */
141     String HSPACE = "hspace";
142 
143     /**
144      * Defines an image as a server-side image map. Only used by the figureGraphics Sink event.
145      */
146     String ISMAP = "ismap";
147 
148     /**
149      * The URL of an external resource, eg an image.
150      */
151     String SRC = "src";
152 
153     /**
154      * Defines an image as a client-side image map.
155      */
156     String USEMAP = "usemap";
157 
158     /**
159      * Defines white space on the top and bottom of the event element.
160      */
161     String VSPACE = "vspace";
162 
163     /**
164      * Sets the width of  an event element.
165      */
166     String WIDTH = "width";
167 
168     // hr
169 
170     /**
171      * Used to indicate that an element comes with a shadow.
172      */
173     String NOSHADE = "noshade";
174 
175     /**
176      * Specifies the size, or thickness, or height of an event element.
177      */
178     String SIZE = "size";
179 
180     // anchor
181 
182     /**
183      * Specifies the name of an anchor.
184      */
185     String NAME = "name";
186 
187     // link
188 
189     /**
190      * Specifies the character encoding of text associated with an event element.
191      */
192     String CHARSET = "charset";
193 
194     /**
195      * May be used in conjunction with {@link #SHAPE}.
196      *
197      * <p>
198      *   Valid values are the same as for the corresponding HTML attributes.
199      * </p>
200      */
201     String COORDS = "coords";
202 
203     /**
204      * The target URL of an event element, eg a link.
205      */
206     String HREF = "href";
207 
208     /**
209      * Specifies the base language of the target URL.
210      *
211      * <p>
212      *   Used in conjunction with {@link #HREF}.
213      * </p>
214      */
215     String HREFLANG = "hreflang";
216 
217     /**
218      * For references to external resourcs, specifies the relationship between
219      * the current document and the target URL.
220      *
221      * <p>
222      *   Valid values are the same as for the corresponding HTML attribute.
223      * </p>
224      */
225     String REL = "rel";
226 
227     /**
228      * For references to external resourcs, specifies the relationship between
229      * the target URL and the current document.
230      *
231      * <p>
232      *   Valid values are the same as for the corresponding HTML attribute.
233      * </p>
234      */
235     String REV = "rev";
236 
237     /**
238      * Defines the type of region to be defined for a mapping.
239      *
240      * <p>
241      *   Used with the {@link #COORDS} attribute.
242      * </p>
243      */
244     String SHAPE = "shape";
245 
246     /**
247      * Where to open the target URL.
248      *
249      * <p>
250      *   Valid values are the same as for the corresponding HTML attribute.
251      * </p>
252      */
253     String TARGET = "target";
254 
255     /**
256      * Specifies the MIME (Multipurpose Internet Mail Extensions) type of an
257      * external resource URL, eg a link.
258      */
259     String TYPE = "type";
260 
261     // table
262 
263     /**
264      * Specifies the background color of an event element.
265      */
266     String BGCOLOR = "bgcolor";
267 
268     /**
269      * Specifies the space between cell walls and contents.
270      */
271     String CELLPADDING = "cellpadding";
272 
273     /**
274      * Specifies the space between cells.
275      */
276     String CELLSPACING = "cellspacing";
277 
278     /**
279      * Specifies which sides of a border surrounding an element should be visible.
280      *
281      * <p>
282      *   Valid values are the same as for the corresponding HTML attribute.
283      * </p>
284      */
285     String FRAME = "frame";
286 
287     /**
288      * Specifies horizontal/vertical divider lines between certain elements, eg table cells.
289      */
290     String RULES = "rules";
291 
292     /**
293      * Specifies a summary of an event attribute for speech-synthesizing/non-visual target output.
294      */
295     String SUMMARY = "summary";
296 
297     // table cell
298 
299     /**
300      * Specifies an abbreviated version of the content in an element.
301      */
302     String ABBRV = "abbrv";
303 
304     /**
305      * Defines a name for a cell.
306      */
307     String AXIS = "axis";
308 
309     /**
310      * Indicates the number of columns a cell should span. Used in tables.
311      */
312     String COLSPAN = "colspan";
313 
314     /**
315      * A space-separated list of cell IDs that supply header information for the cell.
316      */
317     String HEADERS = "headers";
318 
319     /**
320      * Whether to disable or enable automatic text wrapping for an element.
321      */
322     String NOWRAP = "nowrap";
323 
324     /**
325      * Indicates the number of rows a cell should span. Used in tables.
326      */
327     String ROWSPAN = "rowspan";
328 
329     /**
330      * A general scope parameter. In Particular, for table cells this
331      * specifies if the cell provides header information for the rest of the
332      * row that contains it ("row"), or for the rest of the column ("col"),
333      * or for the rest of the row group that contains it ("rowgroup"),
334      * or for the rest of the column group that contains it ("colgroup").
335      */
336     String SCOPE = "scope";
337 
338     /**
339      * Specifies the vertical alignment of an element.
340      *
341      * <p>
342      *   Generally accepted values are "top", "baseline", "middle", "bottom", "sup", "sub".
343      * </p>
344      */
345     String VALIGN = "valign";
346 
347     // text
348 
349     /**
350      * Specifies a decoration for an element.
351      *
352      * <p>
353      *   Generally accepted values are "underline", "overline", "line-through", "source".
354      * </p>
355      */
356     String DECORATION = "decoration";
357 
358     /**
359      * Specifies the semantics of an element.
360      *
361      * <p>
362      *   Generally accepted values are "emphasis", "strong",
363      *   "small", "line-through", "citation", "quote", "definition", "abbreviation",
364      *   "italic", "bold", "monospaced", "code, "variable", "sample", "keyboard",
365      *   "superscript", "subscript", "annotation", "highlight", "ruby", "rubyBase",
366      *   "rubyText", "rubyTextContainer", "rubyParentheses", "bidirectionalIsolation",
367      *   "bidirectionalOverride", "phrase", "insert", "delete".
368      * </p>
369      */
370     String SEMANTICS = "semantics";
371 
372     /**
373      * Specifies the semantics of an element.
374      *
375      * <p>
376      *   Generally accepted values are "article", "section",
377      *   "navigation", "sidebar".
378      * </p>
379      */
380     String SECTIONS = "sections";
381 
382     /**
383      * Specifies a value for the data element.
384      */
385     String VALUE = "value";
386 
387     /**
388      * Specifies a machine readable date/time for the time element.
389      */
390     String DATETIME = "datetime";
391 }