org.docx4j.model.properties.table.tr.TrCantSplit Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of docx4j Show documentation
Show all versions of docx4j Show documentation
docx4j is a library which helps you to work with the Office Open
XML file format as used in docx
documents, pptx presentations, and xlsx spreadsheets.
package org.docx4j.model.properties.table.tr;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
import org.docx4j.XmlUtils;
import org.docx4j.jaxb.Context;
import org.docx4j.openpackaging.parts.relationships.Namespaces;
import org.docx4j.wml.BooleanDefaultTrue;
import org.docx4j.wml.TrPr;
import org.w3c.dom.Element;
public class TrCantSplit extends AbstractTrProperty {
public final static String CSS_NAME = "page-break-inside";
public final static String FO_NAME = "keep-together.within-page";
protected static final QName CANT_SPLIT = new QName("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "cantSplit");
public TrCantSplit() {
JAXBElement cantSplit = Context.getWmlObjectFactory().createCTTrPrBaseCantSplit(new BooleanDefaultTrue());
setObject(cantSplit);
}
public TrCantSplit(JAXBElement> cantSplit) {
setObject(cantSplit);
}
@Override
public void set(TrPr trPr) {
if (getObject()!=null) {
JAXBElement> newObject = (JAXBElement>)getObject();
JAXBElement> existing = XmlUtils.getListItemByQName(trPr.getCnfStyleOrDivIdOrGridBefore(), new QName(Namespaces.NS_WORD12, "cantSplit"));
if (existing==null) {
// just add it
trPr.getCnfStyleOrDivIdOrGridBefore().add(newObject);
} else {
// replace it
trPr.getCnfStyleOrDivIdOrGridBefore().remove(existing);
trPr.getCnfStyleOrDivIdOrGridBefore().add(newObject);
}
}
}
/*
* Note that browser support for CSS page-break-inside: avoid is limited
* (apparently it works in IE 9, but not in Chrome 22 or Firefox 15).
* See:
* http://stackoverflow.com/questions/1539876/controlling-css-page-breaks-when-printing-in-webkit
*
* In any case, wiring this class up to our XHTML output/import remains
* a small TODO.
*
* (non-Javadoc)
* @see org.docx4j.model.properties.Property#getCssProperty()
*/
@Override
public String getCssProperty() {
JAXBElement> cantSplit = (JAXBElement>)getObject();
if (cantSplit!=null) {
BooleanDefaultTrue val = (BooleanDefaultTrue)XmlUtils.unwrap(cantSplit);
if (val.isVal()) {
return composeCss(getCssName(), "avoid");
}
}
return null;
}
@Override
public String getCssName() {
return CSS_NAME;
}
@Override
public void setXslFO(Element foElement) {
JAXBElement> cantSplit = (JAXBElement>)getObject();
if (cantSplit!=null) {
BooleanDefaultTrue val = (BooleanDefaultTrue)XmlUtils.unwrap(cantSplit);
if (val.isVal()) {
foElement.setAttribute(FO_NAME, "always");
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy