aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2012-02-07 09:21:15 +0000
committerYegor Kozlov <yegor@apache.org>2012-02-07 09:21:15 +0000
commit94211115474151e7228e12cd0d6a4fb67cb145b6 (patch)
treeecc1ca66fbfa65d5ece2df416ff48ef67a1eb10a /src
parentfe10b2c7bcecbfbf324bc4d3f83f61ab35c7dd96 (diff)
downloadpoi-94211115474151e7228e12cd0d6a4fb67cb145b6.tar.gz
poi-94211115474151e7228e12cd0d6a4fb67cb145b6.zip
Bugzilla 525612: added methods to get/set a table row's Can't Split and Repeat Header attributes in XWPF
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1241387 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/documentation/content/xdocs/status.xml1
-rw-r--r--src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java69
-rw-r--r--src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java37
3 files changed, 98 insertions, 9 deletions
diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml
index 29d223a0e7..718e7a3b6e 100644
--- a/src/documentation/content/xdocs/status.xml
+++ b/src/documentation/content/xdocs/status.xml
@@ -34,6 +34,7 @@
<changes>
<release version="3.8-beta6" date="2012-??-??">
+ <action dev="poi-developers" type="add">52562 - Added methods to get/set a table row's Can't Split and Repeat Header attributes in XWPF</action>
<action dev="poi-developers" type="add">52561 - Added methods to set table inside borders and cell margins in XWPF</action>
<action dev="poi-developers" type="add">52569 - Support DConRefRecord in HSSF</action>
<action dev="poi-developers" type="add">52575 - added an option to ignore missing workbook references in formula evaluator</action>
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
index a717d7f374..9da2302386 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
@@ -22,13 +22,16 @@ import java.util.List;
import org.apache.poi.util.Internal;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHeight;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTrPr;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;
/**
* @author gisellabronzetti
+ * @author gregg morris - added removeCell(), setCantSplitRow(), setRepeatHeader()
*/
public class XWPFTableRow {
@@ -64,6 +67,11 @@ public class XWPFTableRow {
return null;
}
+ public void removeCell(int pos) {
+ if (pos >= 0 && pos < ctRow.sizeOfTcArray()) {
+ tableCells.remove(pos);
+ }
+ }
/**
* adds a new TableCell at the end of this tableRow
*/
@@ -105,7 +113,6 @@ public class XWPFTableRow {
return properties.sizeOfTrHeightArray() == 0 ? 0 : properties.getTrHeightArray(0).getVal().intValue();
}
-
private CTTrPr getTrPr() {
return (ctRow.isSetTrPr()) ? ctRow.getTrPr() : ctRow.addNewTrPr();
}
@@ -136,9 +143,67 @@ public class XWPFTableRow {
*/
public XWPFTableCell getTableCell(CTTc cell) {
for(int i=0; i<tableCells.size(); i++){
- if(tableCells.get(i).getCTTc() == cell) return tableCells.get(i);
+ if (tableCells.get(i).getCTTc() == cell)
+ return tableCells.get(i);
}
return null;
}
+ /**
+ * This attribute controls whether to allow table rows to split across pages.
+ * The logic for this attribute is a little unusual: a true value means
+ * DON'T allow rows to split, false means allow rows to split.
+ * @param split - if true, don't allow rows to be split. If false, allow
+ * rows to be split.
+ */
+ public void setCantSplitRow(boolean split) {
+ CTTrPr trpr = getTrPr();
+ CTOnOff onoff = trpr.addNewCantSplit();
+ onoff.setVal(split ? STOnOff.ON : STOnOff.OFF);
+ }
+
+ /**
+ * Return true if the "can't split row" value is true. The logic for this
+ * attribute is a little unusual: a TRUE value means DON'T allow rows to
+ * split, FALSE means allow rows to split.
+ * @return true if rows can't be split, false otherwise.
+ */
+ public boolean isCantSplitRow() {
+ boolean isCant = false;
+ CTTrPr trpr = getTrPr();
+ if (trpr.sizeOfCantSplitArray() > 0) {
+ CTOnOff onoff = trpr.getCantSplitList().get(0);
+ isCant = onoff.getVal().equals(STOnOff.ON);
+ }
+ return isCant;
+ }
+
+ /**
+ * This attribute controls whether to repeat a table's header row at the top
+ * of a table split across pages.
+ * @param repeat - if TRUE, repeat header row at the top of each page of table;
+ * if FALSE, don't repeat header row.
+ */
+ public void setRepeatHeader(boolean repeat) {
+ CTTrPr trpr = getTrPr();
+ CTOnOff onoff = trpr.addNewTblHeader();
+ onoff.setVal(repeat ? STOnOff.ON : STOnOff.OFF);
+ }
+
+ /**
+ * Return true if a table's header row should be repeated at the top of a
+ * table split across pages.
+ * @return true if table's header row should be repeated at the top of each
+ * page of table, false otherwise.
+ */
+ public boolean isRepeatHeader() {
+ boolean repeat = false;
+ CTTrPr trpr = getTrPr();
+ if (trpr.sizeOfTblHeaderArray() > 0) {
+ CTOnOff rpt = trpr.getTblHeaderList().get(0);
+ repeat = rpt.getVal().equals(STOnOff.ON);
+ }
+ return repeat;
+ }
+
}// end class
diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java
index c2b751ad2e..abdf1688c9 100644
--- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java
+++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java
@@ -20,27 +20,50 @@ package org.apache.poi.xwpf.usermodel;
import junit.framework.TestCase;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
public class TestXWPFTableRow extends TestCase {
-
-
@Override
protected void setUp() throws Exception {
- // TODO Auto-generated method stub
super.setUp();
}
- public void testSomething() throws Exception {
-
+ public void testCreateRow() throws Exception {
CTRow ctRow = CTRow.Factory.newInstance();
-
+ assertNotNull(ctRow);
}
@Override
protected void tearDown() throws Exception {
- // TODO Auto-generated method stub
super.tearDown();
}
+ public void testSetGetCantSplitRow() {
+ // create a table
+ XWPFDocument doc = new XWPFDocument();
+ CTTbl ctTable = CTTbl.Factory.newInstance();
+ XWPFTable table = new XWPFTable(ctTable, doc);
+ // table has a single row by default; grab it
+ XWPFTableRow tr = table.getRow(0);
+ assertNotNull(tr);
+
+ tr.setCantSplitRow(true);
+ boolean isCant = tr.isCantSplitRow();
+ assert(isCant);
+ }
+
+ public void testSetGetRepeatHeader() {
+ // create a table
+ XWPFDocument doc = new XWPFDocument();
+ CTTbl ctTable = CTTbl.Factory.newInstance();
+ XWPFTable table = new XWPFTable(ctTable, doc);
+ // table has a single row by default; grab it
+ XWPFTableRow tr = table.getRow(0);
+ assertNotNull(tr);
+
+ tr.setRepeatHeader(true);
+ boolean isRpt = tr.isRepeatHeader();
+ assert(isRpt);
+ }
}