All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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");
    	}
    }
	
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy