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

word.w2004.style.HeadingStyle Maven / Gradle / Ivy

The newest version!
package word.w2004.style;

import word.api.interfaces.ISuperStylin;

/**
 * @author everybody - there is no ownership!
 *
 * Use this class to apply style to the whole Heading1 element.
 * Default align is left
 *
 */
public class HeadingStyle extends AbstractStyle implements ISuperStylin{

    /**
     * Default align is left
     */
    private Align align = Align.LEFT;
    private boolean bold = false;
    private boolean italic = false;

    //we could abstract this or not... if we want to apply style to one word inside a the Heading, you can NOT apply align JUSTIFIED, for example.
    //For this reason I will leave this here for instance...
    public enum Align {
        CENTER("center"), LEFT("left"), RIGHT("right"), JUSTIFIED("both");

        private String value;

        Align(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }


    //This method holds the logic to replace all place holders for styling.
    //I also noticed if you don't replace the place holder, it doesn't cause any error!
    //But we should try to replace in order to keep the result xml clean.
    @Override
    public String getNewContentWithStyle(String txt) {
        String alignValue = "\n            	";
        txt = txt.replace("{styleAlign}", alignValue);

        StringBuilder sbText = new StringBuilder("");

        applyBoldAndItalic(sbText);

        if(!"".equals(sbText.toString())) {
            sbText.insert(0, "\n	 ");
            sbText.append("\n	 ");
        }

        txt = txt.replace("{styleText}", sbText.toString());//Convention: apply styles
        txt = txt.replaceAll("[{]style(.*)[}]", ""); //Convention: remove unused styles after...

        return txt;
    }


    private void applyBoldAndItalic(StringBuilder sbText) {
        if(bold) {
            sbText.append("\n            	");
        }
        if(italic) {
            sbText.append("\n            	");
        }
    }


    //### Getters  setters... ###

    /**
     * Heading alignment
     * @param align
     * @return fluent @HeadingStyle
     */
    public HeadingStyle align(Align align) {
        this.align = align;
        return this;
    }

    /**
     * Set Heading font to bold
     * @return fluent @HeadingStyle
     */
    public HeadingStyle bold() {
        bold = true;
        return this;
    }

    /**
     * Set Heading font to italic
     * @return fluent @HeadingStyle
     */
    public HeadingStyle italic() {
        italic = true;
        return this;
    }


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy