You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by sa...@apache.org on 2020/12/04 03:57:24 UTC

svn commit: r1884080 - in /poi/trunk/src/ooxml: java/org/apache/poi/xwpf/usermodel/TableRowHeightRule.java java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java

Author: sayi
Date: Fri Dec  4 03:57:24 2020
New Revision: 1884080

URL: http://svn.apache.org/viewvc?rev=1884080&view=rev
Log:
get and set heightRule for table row

Added:
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/TableRowHeightRule.java   (with props)
Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java

Added: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/TableRowHeightRule.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/TableRowHeightRule.java?rev=1884080&view=auto
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/TableRowHeightRule.java (added)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/TableRowHeightRule.java Fri Dec  4 03:57:24 2020
@@ -0,0 +1,54 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+package org.apache.poi.xwpf.usermodel;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Sets height rule values allowed for Table Rows
+ */
+public enum TableRowHeightRule {
+    
+    AUTO(1),
+    EXACT(2),
+    AT_LEAST(3);
+
+    private static Map<Integer, TableRowHeightRule> imap = new HashMap<>();
+
+    static {
+        for (TableRowHeightRule p : values()) {
+            imap.put(p.getValue(), p);
+        }
+    }
+
+    private final int value;
+
+    private TableRowHeightRule(int val) {
+        value = val;
+    }
+
+    public static TableRowHeightRule valueOf(int type) {
+        TableRowHeightRule err = imap.get(type);
+        if (err == null) throw new IllegalArgumentException("Unknown table row height rule: " + type);
+        return err;
+    }
+
+    public int getValue() {
+        return value;
+    }
+}

Propchange: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/TableRowHeightRule.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java?rev=1884080&r1=1884079&r2=1884080&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java Fri Dec  4 03:57:24 2020
@@ -30,6 +30,7 @@ import org.openxmlformats.schemas.wordpr
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtCell;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTrPr;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHeightRule;
 
 
 /**
@@ -119,6 +120,37 @@ public class XWPFTableRow {
         h.setVal(new BigInteger(Integer.toString(height)));
     }
 
+    /**
+     * Returns the meaning of the height specified for this table row.
+     * <p>
+     * If hRule is omitted, then its value shall be assumed to be auto.
+     * </p>
+     *
+     * @return the height rule of this row.
+     */
+    public TableRowHeightRule getHeightRule() {
+        CTTrPr properties = getTrPr();
+        return properties.sizeOfTrHeightArray() == 0 ? TableRowHeightRule.AUTO
+                : TableRowHeightRule.valueOf(properties.getTrHeightArray(0).getHRule().intValue());
+    }
+
+    /**
+     * Specifies the height rule for this table row.
+     * <p>
+     * If the value of hRule is auto, then the table row's height should be automatically determined based on the
+     * height of its contents. The h value is ignored.
+     * If the value of hRule is atLeast, then the table row's height should be at least the value the h attribute.
+     * If the value of hRule is exact, then the table row's height should be exactly the value of the h attribute.
+     * </p>
+     *
+     * @param heightRule the height rule to apply to this row.
+     */
+    public void setHeightRule(TableRowHeightRule heightRule) {
+        CTTrPr properties = getTrPr();
+        CTHeight h = properties.sizeOfTrHeightArray() == 0 ? properties.addNewTrHeight() : properties.getTrHeightArray(0);
+        h.setHRule(STHeightRule.Enum.forInt(heightRule.getValue()));
+    }
+
     private CTTrPr getTrPr() {
         return (ctRow.isSetTrPr()) ? ctRow.getTrPr() : ctRow.addNewTrPr();
     }

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java?rev=1884080&r1=1884079&r2=1884080&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java Fri Dec  4 03:57:24 2020
@@ -157,6 +157,20 @@ public class TestXWPFTableRow {
     }
 
     @Test
+    public void testGetSetHeightRule() throws IOException {
+        XWPFDocument doc = new XWPFDocument();
+        XWPFTableRow tr = doc.createTable(1, 1).createRow();
+        assertEquals(TableRowHeightRule.AUTO, tr.getHeightRule());
+
+        tr.setHeightRule(TableRowHeightRule.AT_LEAST);
+        assertEquals(TableRowHeightRule.AT_LEAST, tr.getHeightRule());
+
+        tr.setHeightRule(TableRowHeightRule.EXACT);
+        assertEquals(TableRowHeightRule.EXACT, tr.getHeightRule());
+        doc.close();
+    }
+
+    @Test
     public void testBug62174() throws IOException {
         try (XWPFDocument doc = XWPFTestDataSamples
                 .openSampleDocument("Bug60337.docx")) {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org