// (c) 2003 Allen I Holub. All rights reserved.
//
package com.holub.ui.HTML;
import java.util.Properties;
import javax.swing.JComponent;
import java.util.Properties;
/** Define a custom tag handler. See the documentation {@link HTMLPane}
* for an in-depth explanation of how to use this interface
*
* <!-- ====================== distribution terms ===================== -->
* <p><blockquote
* style="border-style: solid; border-width:thin; padding: 1em 1em 1em 1em;">
* <center>
* Copyright © 2003, Allen I. Holub. All rights reserved.
* </center>
* <br>
* <br>
* This code is distributed under the terms of the
* <a href="http://www.gnu.org/licenses/gpl.html"
* >GNU Public License</a> (GPL)
* with the following ammendment to section 2.c:
* <p>
* As a requirement for distributing this code, your splash screen,
* about box, or equivalent must include an my name, copyright,
* <em>and URL</em>. An acceptable message would be:
* <center>
* This program contains Allen Holub's <em>XXX</em> utility.<br>
* (c) 2003 Allen I. Holub. All Rights Reserved.<br>
* http://www.holub.com<br>
* </center>
* If your progam does not run interactively, then the foregoing
* notice must appear in your documentation.
* </blockquote>
* <!-- =============================================================== -->
* @author Allen I. Holub
*/
public interface TagHandler
{
/***Handle a custom tag.
* @param source The HTMLPane that's processing the link.
* @param attributes The attributes of the start tag. In the
* following example,
* <code>attributes.get("s1")</code> returns <code>"hello"</code>
* and
* <code>attributes.get("s2")</code> returns <code>"world"</code>.
* <pre>
* <mytag s1=hello s2=world>
* </pre>
* The following predefined attribute is also available:
* <table cellpadding=4>
* <tr><td valign="top"><code>HTMLPane.TAG_NAME</code></td>
* <td valign="top">The name of the tag itself.
* </td>
* </tr>
* </table>
* @return a {@link JComponent} to display in place of the tag,
* or <code>null</code> if nothing is to be displayed.
* The returned <code>JComponent</code> should implement
* {@link TagBehavior} to get control of
* reset behavior or to supply data to the form's
* submit-data set.
*
* @see com.holub.ui.HTML.HTMLPane#addTag
*/
JComponent handleTag( HTMLPane source, Properties attributes);
}