271 lines
6.4 KiB
Java
271 lines
6.4 KiB
Java
package jxl.biff;
|
|
|
|
import common.Logger;
|
|
|
|
public abstract class HeaderFooter {
|
|
private static Logger logger = Logger.getLogger(HeaderFooter.class);
|
|
|
|
private static final String BOLD_TOGGLE = "&B";
|
|
|
|
private static final String UNDERLINE_TOGGLE = "&U";
|
|
|
|
private static final String ITALICS_TOGGLE = "&I";
|
|
|
|
private static final String STRIKETHROUGH_TOGGLE = "&S";
|
|
|
|
private static final String DOUBLE_UNDERLINE_TOGGLE = "&E";
|
|
|
|
private static final String SUPERSCRIPT_TOGGLE = "&X";
|
|
|
|
private static final String SUBSCRIPT_TOGGLE = "&Y";
|
|
|
|
private static final String OUTLINE_TOGGLE = "&O";
|
|
|
|
private static final String SHADOW_TOGGLE = "&H";
|
|
|
|
private static final String LEFT_ALIGN = "&L";
|
|
|
|
private static final String CENTRE = "&C";
|
|
|
|
private static final String RIGHT_ALIGN = "&R";
|
|
|
|
private static final String PAGENUM = "&P";
|
|
|
|
private static final String TOTAL_PAGENUM = "&N";
|
|
|
|
private static final String DATE = "&D";
|
|
|
|
private static final String TIME = "&T";
|
|
|
|
private static final String WORKBOOK_NAME = "&F";
|
|
|
|
private static final String WORKSHEET_NAME = "&A";
|
|
|
|
private Contents left;
|
|
|
|
private Contents right;
|
|
|
|
private Contents centre;
|
|
|
|
protected static class Contents {
|
|
private StringBuffer contents;
|
|
|
|
protected Contents() {
|
|
this.contents = new StringBuffer();
|
|
}
|
|
|
|
protected Contents(String s) {
|
|
this.contents = new StringBuffer(s);
|
|
}
|
|
|
|
protected Contents(Contents copy) {
|
|
this.contents = new StringBuffer(copy.getContents());
|
|
}
|
|
|
|
protected String getContents() {
|
|
return (this.contents != null) ? this.contents.toString() : "";
|
|
}
|
|
|
|
private void appendInternal(String txt) {
|
|
if (this.contents == null)
|
|
this.contents = new StringBuffer();
|
|
this.contents.append(txt);
|
|
}
|
|
|
|
private void appendInternal(char ch) {
|
|
if (this.contents == null)
|
|
this.contents = new StringBuffer();
|
|
this.contents.append(ch);
|
|
}
|
|
|
|
protected void append(String txt) {
|
|
appendInternal(txt);
|
|
}
|
|
|
|
protected void toggleBold() {
|
|
appendInternal("&B");
|
|
}
|
|
|
|
protected void toggleUnderline() {
|
|
appendInternal("&U");
|
|
}
|
|
|
|
protected void toggleItalics() {
|
|
appendInternal("&I");
|
|
}
|
|
|
|
protected void toggleStrikethrough() {
|
|
appendInternal("&S");
|
|
}
|
|
|
|
protected void toggleDoubleUnderline() {
|
|
appendInternal("&E");
|
|
}
|
|
|
|
protected void toggleSuperScript() {
|
|
appendInternal("&X");
|
|
}
|
|
|
|
protected void toggleSubScript() {
|
|
appendInternal("&Y");
|
|
}
|
|
|
|
protected void toggleOutline() {
|
|
appendInternal("&O");
|
|
}
|
|
|
|
protected void toggleShadow() {
|
|
appendInternal("&H");
|
|
}
|
|
|
|
protected void setFontName(String fontName) {
|
|
appendInternal("&\"");
|
|
appendInternal(fontName);
|
|
appendInternal('"');
|
|
}
|
|
|
|
protected boolean setFontSize(int size) {
|
|
String fontSize;
|
|
if (size < 1 || size > 99)
|
|
return false;
|
|
if (size < 10) {
|
|
fontSize = "0" + size;
|
|
} else {
|
|
fontSize = Integer.toString(size);
|
|
}
|
|
appendInternal('&');
|
|
appendInternal(fontSize);
|
|
return true;
|
|
}
|
|
|
|
protected void appendPageNumber() {
|
|
appendInternal("&P");
|
|
}
|
|
|
|
protected void appendTotalPages() {
|
|
appendInternal("&N");
|
|
}
|
|
|
|
protected void appendDate() {
|
|
appendInternal("&D");
|
|
}
|
|
|
|
protected void appendTime() {
|
|
appendInternal("&T");
|
|
}
|
|
|
|
protected void appendWorkbookName() {
|
|
appendInternal("&F");
|
|
}
|
|
|
|
protected void appendWorkSheetName() {
|
|
appendInternal("&A");
|
|
}
|
|
|
|
protected void clear() {
|
|
this.contents = null;
|
|
}
|
|
|
|
protected boolean empty() {
|
|
if (this.contents == null || this.contents.length() == 0)
|
|
return true;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
protected HeaderFooter() {
|
|
this.left = createContents();
|
|
this.right = createContents();
|
|
this.centre = createContents();
|
|
}
|
|
|
|
protected HeaderFooter(HeaderFooter hf) {
|
|
this.left = createContents(hf.left);
|
|
this.right = createContents(hf.right);
|
|
this.centre = createContents(hf.centre);
|
|
}
|
|
|
|
protected HeaderFooter(String s) {
|
|
if (s == null || s.length() == 0) {
|
|
this.left = createContents();
|
|
this.right = createContents();
|
|
this.centre = createContents();
|
|
return;
|
|
}
|
|
int pos = 0;
|
|
int leftPos = s.indexOf("&L");
|
|
int rightPos = s.indexOf("&R");
|
|
int centrePos = s.indexOf("&C");
|
|
if (pos == leftPos)
|
|
if (centrePos != -1) {
|
|
this.left = createContents(s.substring(pos + 2, centrePos));
|
|
pos = centrePos;
|
|
} else if (rightPos != -1) {
|
|
this.left = createContents(s.substring(pos + 2, rightPos));
|
|
pos = rightPos;
|
|
} else {
|
|
this.left = createContents(s.substring(pos + 2));
|
|
pos = s.length();
|
|
}
|
|
if (pos == centrePos || (leftPos == -1 && rightPos == -1 && centrePos == -1))
|
|
if (rightPos != -1) {
|
|
this.centre = createContents(s.substring(pos + 2, rightPos));
|
|
pos = rightPos;
|
|
} else {
|
|
this.centre = createContents(s.substring(pos + 2));
|
|
pos = s.length();
|
|
}
|
|
if (pos == rightPos) {
|
|
this.right = createContents(s.substring(pos + 2));
|
|
pos = s.length();
|
|
}
|
|
if (this.left == null)
|
|
this.left = createContents();
|
|
if (this.centre == null)
|
|
this.centre = createContents();
|
|
if (this.right == null)
|
|
this.right = createContents();
|
|
}
|
|
|
|
public String toString() {
|
|
StringBuffer hf = new StringBuffer();
|
|
if (!this.left.empty()) {
|
|
hf.append("&L");
|
|
hf.append(this.left.getContents());
|
|
}
|
|
if (!this.centre.empty()) {
|
|
hf.append("&C");
|
|
hf.append(this.centre.getContents());
|
|
}
|
|
if (!this.right.empty()) {
|
|
hf.append("&R");
|
|
hf.append(this.right.getContents());
|
|
}
|
|
return hf.toString();
|
|
}
|
|
|
|
protected Contents getRightText() {
|
|
return this.right;
|
|
}
|
|
|
|
protected Contents getCentreText() {
|
|
return this.centre;
|
|
}
|
|
|
|
protected Contents getLeftText() {
|
|
return this.left;
|
|
}
|
|
|
|
protected void clear() {
|
|
this.left.clear();
|
|
this.right.clear();
|
|
this.centre.clear();
|
|
}
|
|
|
|
protected abstract Contents createContents();
|
|
|
|
protected abstract Contents createContents(String paramString);
|
|
|
|
protected abstract Contents createContents(Contents paramContents);
|
|
}
|