word.w2004.elements.tableElements.TableRowStyle Maven / Gradle / Ivy
The newest version!
package word.w2004.elements.tableElements;
import word.api.interfaces.IElement;
import word.api.interfaces.ISuperStylin;
public class TableRowStyle implements ISuperStylin{
private IElement element;
StringBuilder style = new StringBuilder("");
private boolean bold = false;
private String bgColor = "";
private boolean repeatTableHeaderOnEveryPage = false;
@Override
public String getNewContentWithStyle(String txt) {
txt = doStyleBold(style, txt);
doStyleBgColor(style);
doStyleRepeatTableHeader(style);
if(!"".equals(style.toString())){
style.insert(0, "\n");
style.append("\n \n");
}
return txt.replace("{styleRowPh}", style);
}
@Override
public void setElement(IElement element) {
this.element = element;
}
@Override
public TableRow create() {
/**
* This is Covariant Return if you wanna know. No many people use it because the need is pretty rare.
* I am returning a subtype of the IElement when overriding the method.
*/
return (TableRow) this.element;
}
//### Useful external methods ############################
/**
* (Experiment, beta) Set the text to Bold to the whole line.
* It actually cascades the bold to every Paragraph RUN. This is under test and trying to find a better solution.
* Apparently is only possible to apply bold and other format to Paragraph RUNs.
* @return
*/
public TableRowStyle bold() {
//TODO: This doesn't work so trying to apply style to all paragraphs runs
this.bold = true;
return this;
}
/**
* Table will show this on every page. It is very useful when you are building reports.
* @return
*/
public TableRowStyle repeatTableHeaderOnEveryPage() {
this.repeatTableHeaderOnEveryPage = true;
return this;
}
/**
* It Sets up the background color for the cell.
* */
public TableRowStyle bgColor(String bgColor) {
this.bgColor = bgColor;
return this;
}
//### Chunk of code bellow ######################################
private String doStyleBold(StringBuilder style, String txt) { //bold can only be applied to "run|rPr" not "pPr"
//hardcode applying style to the Paragraph
if (bold ) {
//style.append("\n ");
txt = txt.replace("", "\n \n \n \n");
}
return txt;
}
private void doStyleBgColor(StringBuilder style) {
if (!"".equals(bgColor)) {
style.append("\n \n");
}
}
private void doStyleRepeatTableHeader(StringBuilder style) {
if (repeatTableHeaderOnEveryPage) {
style.append("\n \n");
}
}
}