aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2015-05-07 13:25:47 +0000
committerNick Burch <nick@apache.org>2015-05-07 13:25:47 +0000
commitd38594d5526ede5b687e0dd5f54a1448997feea7 (patch)
tree93e7f65a61d091705ea15717b83d8d27d13d87b7
parentc0bb5083cfce78243c6f5b48f9192349ffa9dfac (diff)
downloadpoi-d38594d5526ede5b687e0dd5f54a1448997feea7.tar.gz
poi-d38594d5526ede5b687e0dd5f54a1448997feea7.zip
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
-rw-r--r--src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java4
-rw-r--r--src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java4
-rw-r--r--src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java77
-rw-r--r--src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java6
4 files changed, 65 insertions, 26 deletions
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java
index 3d29f7942c..9d16e26dab 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java
@@ -30,6 +30,10 @@ public class XWPFDefaultParagraphStyle {
this.ppr = ppr;
}
+ protected CTPPr getPPr() {
+ return ppr;
+ }
+
public int getSpacingAfter() {
if (ppr.isSetSpacing())
return ppr.getSpacing().getAfter().intValue();
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java
index 38de75e347..210a951638 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java
@@ -30,6 +30,10 @@ public class XWPFDefaultRunStyle {
this.rpr = rpr;
}
+ protected CTRPr getRPr() {
+ return rpr;
+ }
+
public int getFontSize() {
if (rpr.isSetSz())
return rpr.getSz().getVal().intValue() / 2;
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java
index 06405a63fe..cebc63cadb 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java
@@ -34,6 +34,7 @@ import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationship;
import org.apache.xmlbeans.XmlException;
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.CTStyles;
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}
*/
public class XWPFStyles extends POIXMLDocumentPart{
- private List<XWPFStyle> listStyle = new ArrayList<XWPFStyle>();
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
@@ -104,7 +108,23 @@ public class XWPFStyles extends POIXMLDocumentPart{
}
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()) {
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
*/
public void setSpellingLanguage(String strSpellingLanguage) {
- CTDocDefaults docDefaults = null;
- CTRPr runProps = null;
+ ensureDocDefaults();
+
CTLanguage lang = null;
-
- // Just making sure we use the members that have already been defined
- if(ctStyles.isSetDocDefaults()) {
- docDefaults = ctStyles.getDocDefaults();
- if(docDefaults.isSetRPrDefault()) {
- CTRPrDefault RPrDefault = docDefaults.getRPrDefault();
- if(RPrDefault.isSetRPr()) {
- runProps = RPrDefault.getRPr();
- if(runProps.isSetLang())
- lang = runProps.getLang();
- }
- }
+ if (defaultRunStyle.getRPr().isSetLang()) {
+ lang = defaultRunStyle.getRPr().getLang();
+ } else {
+ lang = defaultRunStyle.getRPr().addNewLang();
}
- if(docDefaults == null)
- docDefaults = ctStyles.addNewDocDefaults();
- if(runProps == null)
- runProps = docDefaults.addNewRPrDefault().addNewRPr();
- if(lang == null)
- lang = runProps.addNewLang();
-
lang.setVal(strSpellingLanguage);
lang.setBidi(strSpellingLanguage);
}
+
+ // TODO Refactor the others like this
/**
* Sets the default East Asia spelling language on ctStyles DocDefaults parameter
@@ -306,10 +324,19 @@ public class XWPFStyles extends POIXMLDocumentPart{
}
/**
+ * 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
*/
public XWPFDefaultParagraphStyle getDefaultParagraphStyle() {
- return null; // TODO
+ ensureDocDefaults();
+ return defaultParaStyle;
}
/**
diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java
index 578e73f817..c297bc4c3b 100644
--- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java
+++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java
@@ -188,6 +188,10 @@ public class TestXWPFStyles extends TestCase {
assertEquals(137, styles.getLatentStyles().getNumberOfStyles());
// Check the default styles
- // TODO
+ assertNotNull(styles.getDefaultRunStyle());
+ assertNotNull(styles.getDefaultParagraphStyle());
+
+ assertEquals(11, styles.getDefaultRunStyle().getFontSize());
+ assertEquals(200, styles.getDefaultParagraphStyle().getSpacingAfter());
}
}