]> source.dussan.org Git - poi.git/commitdiff
Bugzilla 51564 - support for enforcing fields update in XWPF
authorYegor Kozlov <yegor@apache.org>
Wed, 29 Feb 2012 12:52:55 +0000 (12:52 +0000)
committerYegor Kozlov <yegor@apache.org>
Wed, 29 Feb 2012 12:52:55 +0000 (12:52 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1295078 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java
src/ooxml/testcases/org/apache/poi/xwpf/TestDocumentProtection.java

index e374a544dc3eb18e2841613aca54922048013b0f..42050460beff97170d99e348b34e76a9c68c020b 100644 (file)
@@ -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>
index 94b326811b5353947966f9675e2161030c780c18..3114813f517b88a1cbd33d8669b220ebcdd61aa7 100644 (file)
@@ -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/>
@@ -1047,6 +1051,22 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody {
         settings.removeEnforcement();
     }
 
+    /**
+     * 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
index 5471fde0cbee71689aa80acf9c223adaecea978a..8ceddbe35e84e5ba81790819e9436ab49d6da6c5 100644 (file)
@@ -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) {
index 3e3d93f339c088dd3620efb8bb24d3fb9a238329..3d814aada9e0163a664d456db802573efddd583a 100644 (file)
@@ -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());
+    }
+
 }