/*
* Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* -Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* -Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* This software is provided "AS IS," without a warranty of any
* kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
* WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
* EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
* DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
* RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR
* ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
* FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
* SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
* THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* You acknowledge that Software is not designed, licensed or
* intended for use in the design, construction, operation or
* maintenance of any nuclear facility.
*/
import com.sun.tools.doclets.Taglet;
import com.sun.tools.doclets.standard.HtmlStandardWriter;
import com.sun.tools.doclets.standard.tags.AbstractExecutableMemberTaglet;
import com.sun.javadoc.*;
import java.util.Map;
/**
* A sample Taglet representing @todo. This tag can be used in any kind of
* {@link com.sun.javadoc.Doc}. It is not an inline tag. The text is displayed
* in yellow to remind the developer to perform a task. For
* example, "@todo Fix this!" would be shown as:
*
* -
* To Do:
*
*
*
* @author Jamie Ho
* @since 1.4
*/
public class ToDoTagletWithInline extends AbstractExecutableMemberTaglet {
private static final String NAME = "todo";
private static final String HEADER = "To Do:";
/**
* Return the name of this custom tag.
*/
public String getName() {
return NAME;
}
/**
* Will return true since @todo
* can be used in field documentation.
* @return true since @todo
* can be used in field documentation and false
* otherwise.
*/
public boolean inField() {
return true;
}
/**
* Will return true since @todo
* can be used in constructor documentation.
* @return true since @todo
* can be used in constructor documentation and false
* otherwise.
*/
public boolean inConstructor() {
return true;
}
/**
* Will return true since @todo
* can be used in method documentation.
* @return true since @todo
* can be used in method documentation and false
* otherwise.
*/
public boolean inMethod() {
return true;
}
/**
* Will return true since @todo
* can be used in method documentation.
* @return true since @todo
* can be used in overview documentation and false
* otherwise.
*/
public boolean inOverview() {
return true;
}
/**
* Will return true since @todo
* can be used in package documentation.
* @return true since @todo
* can be used in package documentation and false
* otherwise.
*/
public boolean inPackage() {
return true;
}
/**
* Will return true since @todo
* can be used in type documentation (classes or interfaces).
* @return true since @todo
* can be used in type documentation and false
* otherwise.
*/
public boolean inType() {
return true;
}
/**
* Will return false since @todo
* is not an inline tag.
* @return false since @todo
* is not an inline tag.
*/
public boolean isInlineTag() {
return false;
}
/**
* Register this Taglet.
* @param tagletMap the map to register this tag to.
*/
public static void register(Map tagletMap) {
ToDoTagletWithInline tag = new ToDoTagletWithInline();
Taglet t = (Taglet) tagletMap.get(tag.getName());
if (t != null) {
tagletMap.remove(tag.getName());
}
tagletMap.put(tag.getName(), tag);
}
/**
* Given the Tag
representation of this custom
* tag, return its string representation.
* @param tag he Tag
representation of this custom tag.
*/
public String toString(Tag tag) {
return "" + HEADER + ""
+ "\n";
}
/**
* Given an array of Tag
s representing this custom
* tag, return its string representation.
* @param tags the array of Tag
s representing of this custom tag.
*/
public String toString(Tag[] tags) {
if (tags.length == 0) {
return null;
}
String result = "\n" + HEADER + "";
result += "";
for (int i = 0; i < tags.length; i++) {
if (i > 0) {
result += ", ";
}
result += tags[i].text();
}
return result + " |
\n";
}
/**
* Given the Tag
representation of this custom
* tag, return its string representation, with inline tags resolved.
* @param tag the Tag
representation of this custom tag.
* @param doc the Doc that we are generating documentation for.
* @param html The HTMLStandardWriter that will output this tag.
*/
public String toString(Tag tag, Doc doc, HtmlStandardWriter html) {
return "" + HEADER + ""
+ ""
+ html.commentTagsToString(doc, tag.inlineTags(), false, false)
+ " |
\n";
}
/**
* Given an array of Tag
s representing this custom
* tag, return its string representation, with inline tags resolved. If
* there is no output, return null.
* @param tags the array of Tag
s representing of this custom tag.
* @param doc the Doc that we are generating documentation for.
* @param html The HTMLStandardWriter that will output this tag.
*/
public String toString(Doc doc, HtmlStandardWriter html) {
Tag[] tags = doc.tags(NAME);
if (tags.length == 0) {
return null;
}
String result = "";
for (int i = 0; i < tags.length; i++) {
result += toString(tags[i], doc, html);
}
return result;
}
}