package nota.oxygen.dtbook.v2005;
import javax.swing.text.BadLocationException;
import ro.sync.ecss.extensions.api.node.AuthorElement;
import ro.sync.ecss.extensions.api.node.AuthorNode;
import ro.sync.ecss.extensions.api.structure.AuthorOutlineCustomizer;
import ro.sync.ecss.extensions.api.structure.RenderingInformation;
/**
* Configures outline functionality for dtbook2005
* @author OHA
*/
public class Dtbook2005AuthorOutlineCustomizer extends AuthorOutlineCustomizer {
@Override
public void customizeRenderingInformation(RenderingInformation renderInfo) {
// TODO Auto-generated method stub
super.customizeRenderingInformation(renderInfo);
AuthorNode node = renderInfo.getNode();
if (node.getType()==AuthorNode.NODE_TYPE_ELEMENT)
{
AuthorElement elem = (AuthorElement)node;
if (hasLocalName(elem, "level"))
{
renderInfo.setAdditionalRenderedText(getChildElementText(elem, "hd"));
}
if (hasLocalName(elem, "level1"))
{
renderInfo.setAdditionalRenderedText(getChildElementText(elem, "h1"));
}
if (hasLocalName(elem, "level2"))
{
renderInfo.setAdditionalRenderedText(getChildElementText(elem, "h2"));
}
if (hasLocalName(elem, "level3"))
{
renderInfo.setAdditionalRenderedText(getChildElementText(elem, "h3"));
}
if (hasLocalName(elem, "level4"))
{
renderInfo.setAdditionalRenderedText(getChildElementText(elem, "h4"));
}
if (hasLocalName(elem, "level5"))
{
renderInfo.setAdditionalRenderedText(getChildElementText(elem, "h5"));
}
if (hasLocalName(elem, "level6"))
{
renderInfo.setAdditionalRenderedText(getChildElementText(elem, "h6"));
}
if (hasLocalName(elem, "frontmatter"))
{
renderInfo.setAdditionalRenderedText("");
}
if (hasLocalName(elem, "bodymatter"))
{
renderInfo.setAdditionalRenderedText("");
}
if (hasLocalName(elem, "readmatter"))
{
renderInfo.setAdditionalRenderedText("");
}
if (hasLocalName(elem, "imggroup"))
{
renderInfo.setAdditionalRenderedText(getChildElementText(elem, "caption"));
}
if (hasLocalName(elem, "img"))
{
renderInfo.setAdditionalRenderedAttributeValue(
"\"".concat(elem.getAttribute("src").getValue()).concat("\""));
renderInfo.setAdditionalRenderedText(elem.getAttribute("alt").getValue());
}
if (hasLocalName(elem, "table"))
{
renderInfo.setAdditionalRenderedText(getChildElementText(elem, "caption"));
}
}
}
protected String getChildElementText(AuthorElement elem, String childLocalName)
{
AuthorElement[] children = elem.getElementsByLocalName(childLocalName);
if (children.length>0)
{
try {
return children[0].getTextContent();
} catch (BadLocationException e) {
return "";
}
}
return "";
}
protected boolean hasLocalName(AuthorNode node, String localName)
{
if (node.getName()==localName) return true;
if (node.getName().endsWith(":".concat(localName))) return true;
return false;
}
@Override
public boolean ignoreNode(AuthorNode node) {
if (hasLocalName(node, "head")) return true;
return super.ignoreNode(node);
}
}