Start exposing the default paragraph and run styles from XWPFStyles
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678193 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
1c693babb8
commit
120608b1f9
@ -30,6 +30,10 @@ public class XWPFDefaultParagraphStyle {
|
|||||||
this.ppr = ppr;
|
this.ppr = ppr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected CTPPr getPPr() {
|
||||||
|
return ppr;
|
||||||
|
}
|
||||||
|
|
||||||
public int getSpacingAfter() {
|
public int getSpacingAfter() {
|
||||||
if (ppr.isSetSpacing())
|
if (ppr.isSetSpacing())
|
||||||
return ppr.getSpacing().getAfter().intValue();
|
return ppr.getSpacing().getAfter().intValue();
|
||||||
|
@ -30,6 +30,10 @@ public class XWPFDefaultRunStyle {
|
|||||||
this.rpr = rpr;
|
this.rpr = rpr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected CTRPr getRPr() {
|
||||||
|
return rpr;
|
||||||
|
}
|
||||||
|
|
||||||
public int getFontSize() {
|
public int getFontSize() {
|
||||||
if (rpr.isSetSz())
|
if (rpr.isSetSz())
|
||||||
return rpr.getSz().getVal().intValue() / 2;
|
return rpr.getSz().getVal().intValue() / 2;
|
||||||
|
@ -34,6 +34,7 @@ import org.apache.poi.openxml4j.opc.PackagePart;
|
|||||||
import org.apache.poi.openxml4j.opc.PackageRelationship;
|
import org.apache.poi.openxml4j.opc.PackageRelationship;
|
||||||
import org.apache.xmlbeans.XmlException;
|
import org.apache.xmlbeans.XmlException;
|
||||||
import org.apache.xmlbeans.XmlOptions;
|
import org.apache.xmlbeans.XmlOptions;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPrDefault;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyle;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyle;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyles;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyles;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument;
|
||||||
@ -49,9 +50,12 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocDefaults;
|
|||||||
* information stored in the {@link XWPFRun}
|
* information stored in the {@link XWPFRun}
|
||||||
*/
|
*/
|
||||||
public class XWPFStyles extends POIXMLDocumentPart{
|
public class XWPFStyles extends POIXMLDocumentPart{
|
||||||
private List<XWPFStyle> listStyle = new ArrayList<XWPFStyle>();
|
|
||||||
private CTStyles ctStyles;
|
private CTStyles ctStyles;
|
||||||
XWPFLatentStyles latentStyles;
|
private List<XWPFStyle> listStyle = new ArrayList<XWPFStyle>();
|
||||||
|
|
||||||
|
private XWPFLatentStyles latentStyles;
|
||||||
|
private XWPFDefaultRunStyle defaultRunStyle;
|
||||||
|
private XWPFDefaultParagraphStyle defaultParaStyle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct XWPFStyles from a package part
|
* Construct XWPFStyles from a package part
|
||||||
@ -104,7 +108,23 @@ public class XWPFStyles extends POIXMLDocumentPart{
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void ensureDocDefaults() {
|
protected void ensureDocDefaults() {
|
||||||
// TODO Refactor from elsewhere
|
if (! ctStyles.isSetDocDefaults()) {
|
||||||
|
ctStyles.addNewDocDefaults();
|
||||||
|
}
|
||||||
|
|
||||||
|
CTDocDefaults docDefaults = ctStyles.getDocDefaults();
|
||||||
|
if (! docDefaults.isSetPPrDefault())
|
||||||
|
docDefaults.addNewPPrDefault();
|
||||||
|
if (! docDefaults.isSetRPrDefault())
|
||||||
|
docDefaults.addNewRPrDefault();
|
||||||
|
|
||||||
|
CTPPrDefault pprd = docDefaults.getPPrDefault();
|
||||||
|
CTRPrDefault rprd = docDefaults.getRPrDefault();
|
||||||
|
if (!pprd.isSetPPr()) pprd.addNewPPr();
|
||||||
|
if (!rprd.isSetRPr()) rprd.addNewRPr();
|
||||||
|
|
||||||
|
defaultRunStyle = new XWPFDefaultRunStyle(rprd.getRPr());
|
||||||
|
defaultParaStyle = new XWPFDefaultParagraphStyle(pprd.getPPr());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -119,6 +139,17 @@ public class XWPFStyles extends POIXMLDocumentPart{
|
|||||||
for(CTStyle style : ctStyles.getStyleArray()) {
|
for(CTStyle style : ctStyles.getStyleArray()) {
|
||||||
listStyle.add(new XWPFStyle(style, this));
|
listStyle.add(new XWPFStyle(style, this));
|
||||||
}
|
}
|
||||||
|
if (ctStyles.isSetDocDefaults()) {
|
||||||
|
CTDocDefaults docDefaults = ctStyles.getDocDefaults();
|
||||||
|
if (docDefaults.isSetRPrDefault() && docDefaults.getRPrDefault().isSetRPr()) {
|
||||||
|
defaultRunStyle = new XWPFDefaultRunStyle(
|
||||||
|
docDefaults.getRPrDefault().getRPr());
|
||||||
|
}
|
||||||
|
if (docDefaults.isSetPPrDefault() && docDefaults.getPPrDefault().isSetPPr()) {
|
||||||
|
defaultParaStyle = new XWPFDefaultParagraphStyle(
|
||||||
|
docDefaults.getPPrDefault().getPPr());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -205,33 +236,20 @@ public class XWPFStyles extends POIXMLDocumentPart{
|
|||||||
* @param strSpellingLanguage
|
* @param strSpellingLanguage
|
||||||
*/
|
*/
|
||||||
public void setSpellingLanguage(String strSpellingLanguage) {
|
public void setSpellingLanguage(String strSpellingLanguage) {
|
||||||
CTDocDefaults docDefaults = null;
|
ensureDocDefaults();
|
||||||
CTRPr runProps = null;
|
|
||||||
CTLanguage lang = null;
|
CTLanguage lang = null;
|
||||||
|
if (defaultRunStyle.getRPr().isSetLang()) {
|
||||||
// Just making sure we use the members that have already been defined
|
lang = defaultRunStyle.getRPr().getLang();
|
||||||
if(ctStyles.isSetDocDefaults()) {
|
} else {
|
||||||
docDefaults = ctStyles.getDocDefaults();
|
lang = defaultRunStyle.getRPr().addNewLang();
|
||||||
if(docDefaults.isSetRPrDefault()) {
|
|
||||||
CTRPrDefault RPrDefault = docDefaults.getRPrDefault();
|
|
||||||
if(RPrDefault.isSetRPr()) {
|
|
||||||
runProps = RPrDefault.getRPr();
|
|
||||||
if(runProps.isSetLang())
|
|
||||||
lang = runProps.getLang();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(docDefaults == null)
|
|
||||||
docDefaults = ctStyles.addNewDocDefaults();
|
|
||||||
if(runProps == null)
|
|
||||||
runProps = docDefaults.addNewRPrDefault().addNewRPr();
|
|
||||||
if(lang == null)
|
|
||||||
lang = runProps.addNewLang();
|
|
||||||
|
|
||||||
lang.setVal(strSpellingLanguage);
|
lang.setVal(strSpellingLanguage);
|
||||||
lang.setBidi(strSpellingLanguage);
|
lang.setBidi(strSpellingLanguage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO Refactor the others like this
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the default East Asia spelling language on ctStyles DocDefaults parameter
|
* Sets the default East Asia spelling language on ctStyles DocDefaults parameter
|
||||||
@ -305,11 +323,20 @@ public class XWPFStyles extends POIXMLDocumentPart{
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the default style which applies text runs in the document
|
||||||
|
*/
|
||||||
|
public XWPFDefaultRunStyle getDefaultRunStyle() {
|
||||||
|
ensureDocDefaults();
|
||||||
|
return defaultRunStyle;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the default paragraph style which applies to the document
|
* Get the default paragraph style which applies to the document
|
||||||
*/
|
*/
|
||||||
public XWPFDefaultParagraphStyle getDefaultParagraphStyle() {
|
public XWPFDefaultParagraphStyle getDefaultParagraphStyle() {
|
||||||
return null; // TODO
|
ensureDocDefaults();
|
||||||
|
return defaultParaStyle;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -188,6 +188,10 @@ public class TestXWPFStyles extends TestCase {
|
|||||||
assertEquals(137, styles.getLatentStyles().getNumberOfStyles());
|
assertEquals(137, styles.getLatentStyles().getNumberOfStyles());
|
||||||
|
|
||||||
// Check the default styles
|
// Check the default styles
|
||||||
// TODO
|
assertNotNull(styles.getDefaultRunStyle());
|
||||||
|
assertNotNull(styles.getDefaultParagraphStyle());
|
||||||
|
|
||||||
|
assertEquals(11, styles.getDefaultRunStyle().getFontSize());
|
||||||
|
assertEquals(200, styles.getDefaultParagraphStyle().getSpacingAfter());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user