NIFI-280 - putting description as an info bubble
Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/60070706 Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/60070706 Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/60070706 Branch: refs/heads/NIFI-353 Commit: 60070706281e8d8cd8ee2a15312f62a1af9e7e0c Parents: f269861 Author: danbress <[email protected]> Authored: Tue Feb 3 22:37:44 2015 -0500 Committer: danbress <[email protected]> Committed: Sat Feb 7 10:47:09 2015 -0500 ---------------------------------------------------------------------- .../html/HtmlDocumentationWriter.java | 71 ++++++++++++++------ .../html/HtmlProcessorDocumentationWriter.java | 4 +- .../example/FullyDocumentedProcessor.java | 3 +- 3 files changed, 53 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/60070706/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java index 40618fe..cd2cee6 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlDocumentationWriter.java @@ -52,8 +52,8 @@ public class HtmlDocumentationWriter implements DocumentationWriter { final boolean includesAdditionalDocumentation) throws IOException { try { - XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(streamToWriteTo, - "UTF-8"); + XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter( + streamToWriteTo, "UTF-8"); xmlStreamWriter.writeDTD("<!DOCTYPE html>"); xmlStreamWriter.writeStartElement("html"); xmlStreamWriter.writeAttribute("lang", "en"); @@ -76,8 +76,8 @@ public class HtmlDocumentationWriter implements DocumentationWriter { * @throws XMLStreamException * thrown if there was a problem writing to the stream */ - protected void writeHead(final ConfigurableComponent configurableComponent, final XMLStreamWriter xmlStreamWriter) - throws XMLStreamException { + protected void writeHead(final ConfigurableComponent configurableComponent, + final XMLStreamWriter xmlStreamWriter) throws XMLStreamException { xmlStreamWriter.writeStartElement("head"); xmlStreamWriter.writeStartElement("meta"); xmlStreamWriter.writeAttribute("charset", "utf-8"); @@ -118,7 +118,8 @@ public class HtmlDocumentationWriter implements DocumentationWriter { * thrown if there was a problem writing to the XML stream */ private final void writeBody(final ConfigurableComponent configurableComponent, - final XMLStreamWriter xmlStreamWriter, final boolean hasAdditionalDetails) throws XMLStreamException { + final XMLStreamWriter xmlStreamWriter, final boolean hasAdditionalDetails) + throws XMLStreamException { xmlStreamWriter.writeStartElement("body"); writeDescription(configurableComponent, xmlStreamWriter, hasAdditionalDetails); writeTags(configurableComponent, xmlStreamWriter); @@ -149,16 +150,18 @@ public class HtmlDocumentationWriter implements DocumentationWriter { * @param xmlStreamWriter * @throws XMLStreamException */ - private void writeTags(final ConfigurableComponent configurableComponent, final XMLStreamWriter xmlStreamWriter) - throws XMLStreamException { + private void writeTags(final ConfigurableComponent configurableComponent, + final XMLStreamWriter xmlStreamWriter) throws XMLStreamException { final Tags tags = configurableComponent.getClass().getAnnotation(Tags.class); + xmlStreamWriter.writeStartElement("h3"); + xmlStreamWriter.writeCharacters("Tags: "); + xmlStreamWriter.writeEndElement(); xmlStreamWriter.writeStartElement("p"); if (tags != null) { final String tagString = StringUtils.join(tags.value(), ", "); - xmlStreamWriter.writeCharacters("Tags: "); xmlStreamWriter.writeCharacters(tagString); } else { - xmlStreamWriter.writeCharacters("No Tags provided."); + xmlStreamWriter.writeCharacters("None."); } xmlStreamWriter.writeEndElement(); @@ -178,7 +181,8 @@ public class HtmlDocumentationWriter implements DocumentationWriter { * thrown if there was a problem writing to the XML stream */ protected void writeDescription(final ConfigurableComponent configurableComponent, - final XMLStreamWriter xmlStreamWriter, final boolean hasAdditionalDetails) throws XMLStreamException { + final XMLStreamWriter xmlStreamWriter, final boolean hasAdditionalDetails) + throws XMLStreamException { writeSimpleElement(xmlStreamWriter, "h2", "Description: "); writeSimpleElement(xmlStreamWriter, "p", getDescription(configurableComponent)); if (hasAdditionalDetails) { @@ -224,9 +228,7 @@ public class HtmlDocumentationWriter implements DocumentationWriter { */ protected void writeProperties(final ConfigurableComponent configurableComponent, final XMLStreamWriter xmlStreamWriter) throws XMLStreamException { - xmlStreamWriter.writeStartElement("p"); - writeSimpleElement(xmlStreamWriter, "strong", "Properties: "); - xmlStreamWriter.writeEndElement(); + writeSimpleElement(xmlStreamWriter, "h3", "Properties: "); xmlStreamWriter.writeStartElement("p"); xmlStreamWriter.writeCharacters("In the list below, the names of required properties appear in "); writeSimpleElement(xmlStreamWriter, "strong", "bold"); @@ -253,11 +255,10 @@ public class HtmlDocumentationWriter implements DocumentationWriter { // write the header row xmlStreamWriter.writeStartElement("tr"); writeSimpleElement(xmlStreamWriter, "th", "Name"); - writeSimpleElement(xmlStreamWriter, "th", "Description"); - writeSimpleElement(xmlStreamWriter, "th", "Default"); - writeSimpleElement(xmlStreamWriter, "th", "Values"); + writeSimpleElement(xmlStreamWriter, "th", "Default Value"); + writeSimpleElement(xmlStreamWriter, "th", "Valid Values"); xmlStreamWriter.writeStartElement("th"); - writeLink(xmlStreamWriter, "EL", "../../html/expression-language-guide.html"); + writeLink(xmlStreamWriter, "Expression Language", "../../html/expression-language-guide.html"); xmlStreamWriter.writeEndElement(); xmlStreamWriter.writeEndElement(); @@ -274,17 +275,18 @@ public class HtmlDocumentationWriter implements DocumentationWriter { if (property.isSensitive()) { writeSensitiveImg(xmlStreamWriter); } + writePropertyDescription(xmlStreamWriter, property.getDescription()); xmlStreamWriter.writeEndElement(); - writeSimpleElement(xmlStreamWriter, "td", property.getDescription()); writeSimpleElement(xmlStreamWriter, "td", property.getDefaultValue()); writeValidValues(xmlStreamWriter, property); - writeSimpleElement(xmlStreamWriter, "td", property.isExpressionLanguageSupported() ? "Yes" : "No"); + writeSimpleElement(xmlStreamWriter, "td", property.isExpressionLanguageSupported() ? "Yes" + : "No"); xmlStreamWriter.writeEndElement(); } // TODO support dynamic properties... xmlStreamWriter.writeEndElement(); - + if (containsSensitiveElement) { writeSensitiveImg(xmlStreamWriter); xmlStreamWriter.writeCharacters(" indicates that a property is a sensitive property"); @@ -295,6 +297,26 @@ public class HtmlDocumentationWriter implements DocumentationWriter { } } + private void writePropertyDescription(XMLStreamWriter xmlStreamWriter, String description) + throws XMLStreamException { + xmlStreamWriter.writeCharacters(" "); + xmlStreamWriter.writeStartElement("img"); + xmlStreamWriter.writeAttribute("src", "../../html/images/iconInfo.png"); + xmlStreamWriter.writeAttribute("alt", description); + xmlStreamWriter.writeEndElement(); + + } + + private void writeValidValueDescription(XMLStreamWriter xmlStreamWriter, String description) + throws XMLStreamException { + xmlStreamWriter.writeCharacters(" "); + xmlStreamWriter.writeStartElement("img"); + xmlStreamWriter.writeAttribute("src", "../../html/images/iconInfo.png"); + xmlStreamWriter.writeAttribute("alt", description); + xmlStreamWriter.writeEndElement(); + + } + private void writeSensitiveImg(final XMLStreamWriter xmlStreamWriter) throws XMLStreamException { xmlStreamWriter.writeCharacters(" "); xmlStreamWriter.writeStartElement("img"); @@ -320,7 +342,14 @@ public class HtmlDocumentationWriter implements DocumentationWriter { if (property.getAllowableValues() != null && property.getAllowableValues().size() > 0) { xmlStreamWriter.writeStartElement("ul"); for (AllowableValue value : property.getAllowableValues()) { - writeSimpleElement(xmlStreamWriter, "li", value.getDisplayName()); + xmlStreamWriter.writeStartElement("li"); + xmlStreamWriter.writeCharacters(value.getDisplayName()); + + if (value.getDescription() != null) { + writeValidValueDescription(xmlStreamWriter, value.getDescription()); + } + xmlStreamWriter.writeEndElement(); + } xmlStreamWriter.writeEndElement(); } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/60070706/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlProcessorDocumentationWriter.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlProcessorDocumentationWriter.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlProcessorDocumentationWriter.java index 2637235..4cf6ba8 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlProcessorDocumentationWriter.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/main/java/org/apache/nifi/documentation/html/HtmlProcessorDocumentationWriter.java @@ -35,9 +35,7 @@ public class HtmlProcessorDocumentationWriter extends HtmlDocumentationWriter { protected void writeAdditionalBodyInfo(final ConfigurableComponent configurableComponent, final XMLStreamWriter xmlStreamWriter) throws XMLStreamException { final Processor processor = (Processor) configurableComponent; - xmlStreamWriter.writeStartElement("p"); - writeSimpleElement(xmlStreamWriter, "strong", "Relationships: "); - xmlStreamWriter.writeEndElement(); + writeSimpleElement(xmlStreamWriter, "h3", "Relationships: "); if (processor.getRelationships().size() > 0) { xmlStreamWriter.writeStartElement("table"); http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/60070706/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/example/FullyDocumentedProcessor.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/example/FullyDocumentedProcessor.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/example/FullyDocumentedProcessor.java index 2a00177..a30133e 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/example/FullyDocumentedProcessor.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/example/FullyDocumentedProcessor.java @@ -22,6 +22,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.apache.nifi.components.AllowableValue; import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.processor.AbstractProcessor; import org.apache.nifi.processor.ProcessContext; @@ -44,7 +45,7 @@ public class FullyDocumentedProcessor extends AbstractProcessor { public static final PropertyDescriptor RECURSE = new PropertyDescriptor.Builder().name("Recurse Subdirectories") .description("Indicates whether or not to pull files from subdirectories").required(true) - .allowableValues("true", "false").defaultValue("true").build(); + .allowableValues(new AllowableValue("true", "true", "Should pull from sub directories"), new AllowableValue("false", "false", "Should not pull from sub directories")).defaultValue("true").build(); public static final PropertyDescriptor POLLING_INTERVAL = new PropertyDescriptor.Builder().name("Polling Interval") .description("Indicates how long to wait before performing a directory listing").required(true)
