From 339e6e29fa958f6d2de87f01f96ce5ddd7374922 Mon Sep 17 00:00:00 2001 From: Sergey Vladimirov Date: Tue, 9 Aug 2011 13:25:56 +0000 Subject: [PATCH] simplify HTML CSS creation code git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1155357 13f79535-47bb-0310-9956-ffa450edef68 --- .../hssf/converter/ExcelToHtmlConverter.java | 14 ++---- .../hwpf/converter/HtmlDocumentFacade.java | 16 +++++-- .../hwpf/converter/WordToHtmlConverter.java | 48 +++++++------------ 3 files changed, 34 insertions(+), 44 deletions(-) diff --git a/src/scratchpad/src/org/apache/poi/hssf/converter/ExcelToHtmlConverter.java b/src/scratchpad/src/org/apache/poi/hssf/converter/ExcelToHtmlConverter.java index a847cde08..b25d221a8 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/converter/ExcelToHtmlConverter.java +++ b/src/scratchpad/src/org/apache/poi/hssf/converter/ExcelToHtmlConverter.java @@ -524,11 +524,8 @@ public class ExcelToHtmlConverter innerDivStyle.append( "pt;white-space:nowrap;" ); ExcelToHtmlUtils.appendAlign( innerDivStyle, cellStyle.getAlignment() ); - innerDiv.setAttribute( - "class", - htmlDocumentFacade.getOrCreateCssClass( - outerDiv.getTagName(), "d", - innerDivStyle.toString() ) ); + htmlDocumentFacade.addStyleClass( outerDiv, "d", + innerDivStyle.toString() ); innerDiv.appendChild( text ); outerDiv.appendChild( innerDiv ); @@ -761,11 +758,8 @@ public class ExcelToHtmlConverter continue; Element tableRowElement = htmlDocumentFacade.createTableRow(); - tableRowElement.setAttribute( - "class", - htmlDocumentFacade.getOrCreateCssClass( - tableRowElement.getTagName(), "r", "height:" - + ( row.getHeight() / 20f ) + "pt;" ) ); + htmlDocumentFacade.addStyleClass( tableRowElement, "r", "height:" + + ( row.getHeight() / 20f ) + "pt;" ); int maxRowColumnNumber = processRow( mergedRanges, row, tableRowElement ); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/HtmlDocumentFacade.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/HtmlDocumentFacade.java index a6bbffe12..6218210bf 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/converter/HtmlDocumentFacade.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/HtmlDocumentFacade.java @@ -57,10 +57,7 @@ public class HtmlDocumentFacade html.appendChild( body ); head.appendChild( stylesheetElement ); - body.setAttribute( - "class", - getOrCreateCssClass( "body", "b", - "white-space-collapsing: preserve; " ) ); + addStyleClass( body, "b", "white-space-collapsing:preserve;" ); } public void addAuthor( String value ) @@ -86,6 +83,17 @@ public class HtmlDocumentFacade head.appendChild( meta ); } + public void addStyleClass( Element element, String classNamePrefix, + String style ) + { + String exising = element.getAttribute( "class" ); + String addition = getOrCreateCssClass( element.getTagName(), + classNamePrefix, style ); + String newClassValue = WordToHtmlUtils.isEmpty( exising ) ? addition + : ( exising + " " + addition ); + element.setAttribute( "class", newClassValue ); + } + public Element createBlock() { return document.createElement( "div" ); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToHtmlConverter.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToHtmlConverter.java index e6233d2c3..e18efbe2a 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToHtmlConverter.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToHtmlConverter.java @@ -217,8 +217,7 @@ public class WordToHtmlConverter extends AbstractWordConverter WordToHtmlUtils.addCharactersProperties( characterRun, style ); if ( style.length() != 0 ) - span.setAttribute( "class", htmlDocumentFacade.getOrCreateCssClass( - span.getTagName(), "s", style.toString() ) ); + htmlDocumentFacade.addStyleClass( span, "s", style.toString() ); Text textNode = htmlDocumentFacade.createText( text ); span.appendChild( textNode ); @@ -405,26 +404,22 @@ public class WordToHtmlConverter extends AbstractWordConverter - cropBottom ); root = htmlDocumentFacade.createBlock(); - root.setAttribute( "class", htmlDocumentFacade.getOrCreateCssClass( - root.getTagName(), "d", "vertical-align:text-bottom;width:" - + visibleWidth + "in;height:" + visibleHeight - + "in;" ) ); + htmlDocumentFacade.addStyleClass( root, "d", + "vertical-align:text-bottom;width:" + visibleWidth + + "in;height:" + visibleHeight + "in;" ); // complex Element inner = htmlDocumentFacade.createBlock(); - inner.setAttribute( "class", htmlDocumentFacade - .getOrCreateCssClass( inner.getTagName(), "d", - "position:relative;width:" + visibleWidth - + "in;height:" + visibleHeight - + "in;overflow:hidden;" ) ); + htmlDocumentFacade.addStyleClass( inner, "d", + "position:relative;width:" + visibleWidth + "in;height:" + + visibleHeight + "in;overflow:hidden;" ); root.appendChild( inner ); Element image = htmlDocumentFacade.createImage( imageSourcePath ); - image.setAttribute( "class", htmlDocumentFacade - .getOrCreateCssClass( image.getTagName(), "i", - "position:absolute;left:-" + cropLeft + ";top:-" - + cropTop + ";width:" + imageWidth - + "in;height:" + imageHeight + "in;" ) ); + htmlDocumentFacade.addStyleClass( image, "i", + "position:absolute;left:-" + cropLeft + ";top:-" + cropTop + + ";width:" + imageWidth + "in;height:" + + imageHeight + "in;" ); inner.appendChild( image ); style.append( "overflow:hidden;" ); @@ -560,10 +555,7 @@ public class WordToHtmlConverter extends AbstractWordConverter } if ( style.length() > 0 ) - pElement.setAttribute( - "class", - htmlDocumentFacade.getOrCreateCssClass( - pElement.getTagName(), "p", style.toString() ) ); + htmlDocumentFacade.addStyleClass( pElement, "p", style.toString() ); WordToHtmlUtils.compactSpans( pElement ); return; @@ -573,8 +565,7 @@ public class WordToHtmlConverter extends AbstractWordConverter Section section, int sectionCounter ) { Element div = htmlDocumentFacade.createBlock(); - div.setAttribute( "class", htmlDocumentFacade.getOrCreateCssClass( - div.getTagName(), "d", getSectionStyle( section ) ) ); + htmlDocumentFacade.addStyleClass( div, "d", getSectionStyle( section ) ); htmlDocumentFacade.body.appendChild( div ); processParagraphes( wordDocument, div, section, Integer.MIN_VALUE ); @@ -584,9 +575,8 @@ public class WordToHtmlConverter extends AbstractWordConverter protected void processSingleSection( HWPFDocumentCore wordDocument, Section section ) { - htmlDocumentFacade.body - .setAttribute( "class", htmlDocumentFacade.getOrCreateCssClass( - "body", "b", getSectionStyle( section ) ) ); + htmlDocumentFacade.addStyleClass( htmlDocumentFacade.body, "b", + getSectionStyle( section ) ); processParagraphes( wordDocument, htmlDocumentFacade.body, section, Integer.MIN_VALUE ); @@ -672,11 +662,9 @@ public class WordToHtmlConverter extends AbstractWordConverter .createParagraph() ); } if ( tableCellStyle.length() > 0 ) - tableCellElement.setAttribute( "class", htmlDocumentFacade - .getOrCreateCssClass( - tableCellElement.getTagName(), - tableCellElement.getTagName(), - tableCellStyle.toString() ) ); + htmlDocumentFacade.addStyleClass( tableCellElement, + tableCellElement.getTagName(), + tableCellStyle.toString() ); tableRowElement.appendChild( tableCellElement ); }