diff options
4 files changed, 52 insertions, 0 deletions
diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index e374a544dc..42050460be 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,8 @@ <changes> <release version="3.8-beta6" date="2012-??-??"> + <action dev="poi-developers" type="add">support setting background color of sheet tab in XSSF</action> + <action dev="poi-developers" type="add">51564 - support for enforcing fields update in XWPF</action> <action dev="poi-developers" type="add">51673 - support grouping rows in SXSSF</action> <action dev="poi-developers" type="add">51780 - support replacement of content types in OPC packages </action> <action dev="poi-developers" type="fix">52784 - replace ISO control characters with question marks in SXSSF to be consistent with XSSF </action> diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java index 94b326811b..3114813f51 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java @@ -974,6 +974,10 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { return settings.isEnforcedWith(STDocProtect.TRACKED_CHANGES); } + public boolean isEnforcedUpdateFields() { + return settings.isUpdateFields(); + } + /** * Enforces the readOnly protection.<br/> * In the documentProtection tag inside settings.xml file, <br/> @@ -1048,6 +1052,22 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { } /** + * Enforces fields update on document open (in Word). + * In the settings.xml file <br/> + * sets the updateSettings value to true (w:updateSettings w:val="true") + * + * NOTICES: + * <ul> + * <li>Causing Word to ask on open: "This document contains fields that may refer to other files. Do you want to update the fields in this document?" + * (if "Update automatic links at open" is enabled)</li> + * <li>Flag is removed after saving with changes in Word </li> + * </ul> + */ + public void enforceUpdateFields() { + settings.setUpdateFields(); + } + + /** * inserts an existing XWPFTable to the arrays bodyElements and tables * @param pos * @param table diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java index 5471fde0cb..8ceddbe35e 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java @@ -30,6 +30,7 @@ import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackageRelationship; import org.apache.xmlbeans.XmlOptions; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocProtect; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSettings; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTZoom; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STDocProtect; @@ -147,6 +148,28 @@ public class XWPFSettings extends POIXMLDocumentPart { safeGetDocumentProtection().setEnforcement(STOnOff.X_0); } + /** + * Enforces fields update on document open (in Word). + * In the settings.xml file <br/> + * sets the updateSettings value to true (w:updateSettings w:val="true") + * + * NOTICES: + * <ul> + * <li>Causing Word to ask on open: "This document contains fields that may refer to other files. Do you want to update the fields in this document?" + * (if "Update automatic links at open" is enabled)</li> + * <li>Flag is removed after saving with changes in Word </li> + * </ul> + */ + public void setUpdateFields() { + CTOnOff onOff = CTOnOff.Factory.newInstance(); + onOff.setVal(STOnOff.TRUE); + ctSettings.setUpdateFields(onOff); + } + + boolean isUpdateFields() { + return ctSettings.isSetUpdateFields() && ctSettings.getUpdateFields().getVal() == STOnOff.TRUE; + } + @Override protected void commit() throws IOException { if (ctSettings == null) { diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/TestDocumentProtection.java b/src/ooxml/testcases/org/apache/poi/xwpf/TestDocumentProtection.java index 3e3d93f339..3d814aada9 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/TestDocumentProtection.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/TestDocumentProtection.java @@ -137,4 +137,11 @@ public class TestDocumentProtection extends TestCase { assertTrue(document.isEnforcedCommentsProtection()); } + public void testUpdateFields() throws Exception { + XWPFDocument doc = new XWPFDocument(); + assertFalse(doc.isEnforcedUpdateFields()); + doc.enforceUpdateFields(); + assertTrue(doc.isEnforcedUpdateFields()); + } + } |