package word.w2004; import word.api.interfaces.IElement; import word.api.interfaces.IFooter; public class Footer2004 implements IFooter{ StringBuilder txt = new StringBuilder(""); private boolean hasBeenCalledBefore = false; // if getContent has already been called, I cached the result for future invocations private boolean showPageNumber = true; public void addEle(IElement e) { this.txt.append("\n" + e.getContent()); } public void addEle(String str) { this.txt.append("\n" + str); } public String getContent() { if("".equals(txt.toString())){ return ""; } if(hasBeenCalledBefore ){ return txt.toString(); }else{ hasBeenCalledBefore = true; } txt.insert(0, HEADER_TOP); if(showPageNumber){ txt.append(PAGE_NUMBER); } txt.append(HEADER_BOTTON); return txt.toString(); } public void showPageNumber(boolean value){ this.showPageNumber = value; } private static String HEADER_TOP = "\n <w:ftr w:type=\"odd\">"; private static String HEADER_BOTTON = "\n </w:ftr>"; private static String PAGE_NUMBER = "\n <wx:pBdrGroup> " +"\n <wx:apo> " +"\n <wx:jc wx:val=\"right\"/> " +"\n </wx:apo> " +"\n <w:p wsp:rsidR=\"00595002\" wsp:rsidRDefault=\"00595002\" wsp:rsidP=\"00165A2B\"> " +"\n <w:pPr> " +"\n <w:pStyle w:val=\"Footer\"/> " +"\n <w:framePr w:wrap=\"around\" w:vanchor=\"text\" w:hanchor=\"margin\" w:x-align=\"right\" w:y=\"1\"/> " +"\n <w:rPr> " +"\n <w:rStyle w:val=\"PageNumber\"/> " +"\n </w:rPr> " +"\n </w:pPr> " +"\n <w:r> " +"\n <w:rPr> " +"\n <w:rStyle w:val=\"PageNumber\"/> " +"\n </w:rPr> " +"\n <w:fldChar w:fldCharType=\"begin\"/> " +"\n </w:r> " +"\n <w:r> " +"\n <w:rPr> " +"\n <w:rStyle w:val=\"PageNumber\"/> " +"\n </w:rPr> " +"\n <w:instrText>PAGE </w:instrText> " +"\n </w:r> " +"\n <w:r> " +"\n <w:rPr> " +"\n <w:rStyle w:val=\"PageNumber\"/> " +"\n </w:rPr> " +"\n <w:fldChar w:fldCharType=\"separate\"/> " +"\n </w:r> " +"\n <w:r> " +"\n <w:rPr> " +"\n <w:rStyle w:val=\"PageNumber\"/> " +"\n <w:noProof/> " +"\n </w:rPr> " +"\n <w:t>2</w:t> " +"\n </w:r> " +"\n <w:r> " +"\n <w:rPr> " +"\n <w:rStyle w:val=\"PageNumber\"/> " +"\n </w:rPr> " +"\n <w:fldChar w:fldCharType=\"end\"/> " +"\n </w:r> " +"\n </w:p> " +"\n </wx:pBdrGroup> \n" ; }