package OOXMLconvert;

/**
 *
 * @author ferou
 */
public class OOXMLpreserve implements Cloneable {

	/** zachovať formátovanie - underline */
	public boolean underline = false;
	/** zachovať formátovanie - strike */
	public boolean strike = false;
	/** zachovať formátovanie - superscript */
	public boolean superscript = false;
	/** zachovať formátovanie - subscript */
	public boolean subscript = false;
	/** zachovať formátovanie - italic */
	public boolean italic = false;
	/** zachovať formátovanie - bold */
	public boolean bold = false;
	/** zachovať formátovanie - veľkosť fontu */
	public boolean fontSize = false;
	/** zachovať formátovanie - font */
	public boolean fontName = false;
	/** zachovať formátovanie - farba textu */
	public boolean color = false;
	/** zachovať formátovanie - farba pozadia */
	public boolean background = false;
	/** zachovať formátovanie - okraje */
	public boolean border = false;
	/** zachovať formátovanie nadpisov */
	public boolean headingStyle = false;
	/** zachovať formátovanie odrážok */
	public boolean bulletStyle = false;
	/** zachovať odsadenie odstavcov */
	public boolean indentation = false;
	/** zachovať výšku riadkov a odsadenie medzi odstavcami */
	public boolean linespacing = false;
	/** zachovať farbu pozadia dokumentu */
	public boolean documentBackground = false;
	/** zachovať zarovnanie */
	public boolean alignment = false;

	/**
	 * Konštruktor
	 */
	public OOXMLpreserve() {
		// noop
	}

	/**
	 * Funkcia, ktorá na základe nastavenia úrovne zachovania formátovania nastaví jednotlivé elementy.
	 */
	public void setElementsFormatting() {
		try {
			switch (Global.ooxmlParams.formatPreservingLevel) {
				case 0:
					setLevel0();
					break;
				case 1:
					setLevel1();
					break;
				case 2:
					setLevel2();
					break;
				default:
					setLevel0();
					break;
			}
		}
		catch (Exception e) {
			System.err.println(this.getClass().getName() + " (setElementsFormatting): " + e.toString());
		}
	}
	
	/**
	 * Funkcia nastaví zachovanie formátovania elementov na úroveň 0.
	 */
	private void setLevel0() {
		try {
			this.strike = false;
			this.superscript = false;
			this.subscript = false;
			this.underline = false;
			this.italic = false;
			this.bold = false;
			this.fontSize = false;
			this.fontName = false;
			this.color = false;
			this.background = false;
			this.border = false;
			this.headingStyle = false;
			this.bulletStyle = false;
			this.indentation = false;
			this.linespacing = false;
			this.documentBackground = false;
			this.alignment = false;
		}
		catch (Exception e) {
			System.err.println(this.getClass().getName() + " (setLevel0): " + e.toString());
		}
	}
	
	/**
	 * Funkcia nastaví zachovanie formátovania elementov na úroveň 1.
	 */
	private void setLevel1() {
		try {
			this.strike = true;
			this.superscript = true;
			this.subscript = true;
			this.underline = true;
			this.italic = true;
			this.bold = true;
			this.fontSize = false;
			this.fontName = false;
			this.color = true;
			this.background = false;
			this.border = false;
			this.headingStyle = false;
			this.bulletStyle = false;
			this.indentation = false;
			this.linespacing = false;
			this.documentBackground = false;
			this.alignment = true;
		}
		catch (Exception e) {
			System.err.println(this.getClass().getName() + " (setLevel1): " + e.toString());
		}
	}
	
	/**
	 * Funkcia nastaví zachovanie formátovania elementov na úroveň 2.
	 */
	private void setLevel2() {
		try {
			this.strike = true;
			this.superscript = true;
			this.subscript = true;
			this.underline = true;
			this.italic = true;
			this.bold = true;
			this.fontSize = true;
			this.fontName = true;
			this.color = true;
			this.background = true;
			this.border = true;
			this.headingStyle = true;
			this.bulletStyle = true;
			this.indentation = true;
			this.linespacing = true;
			this.documentBackground = true;
			this.alignment = true;
		}
		catch (Exception e) {
			System.err.println(this.getClass().getName() + " (setLevel2): " + e.toString());
		}
	}
	
}
