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
This commit is contained in:
parent
9ade81c403
commit
82014d6ba9
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
<changes>
|
<changes>
|
||||||
<release version="3.8-beta6" date="2012-??-??">
|
<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">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">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>
|
<action dev="poi-developers" type="add">52575 - added an option to ignore missing workbook references in formula evaluator</action>
|
||||||
|
@ -22,13 +22,16 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHeight;
|
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.CTRow;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTrPr;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTrPr;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author gisellabronzetti
|
* @author gisellabronzetti
|
||||||
|
* @author gregg morris - added removeCell(), setCantSplitRow(), setRepeatHeader()
|
||||||
*/
|
*/
|
||||||
public class XWPFTableRow {
|
public class XWPFTableRow {
|
||||||
|
|
||||||
@ -64,6 +67,11 @@ public class XWPFTableRow {
|
|||||||
return null;
|
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
|
* 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();
|
return properties.sizeOfTrHeightArray() == 0 ? 0 : properties.getTrHeightArray(0).getVal().intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private CTTrPr getTrPr() {
|
private CTTrPr getTrPr() {
|
||||||
return (ctRow.isSetTrPr()) ? ctRow.getTrPr() : ctRow.addNewTrPr();
|
return (ctRow.isSetTrPr()) ? ctRow.getTrPr() : ctRow.addNewTrPr();
|
||||||
}
|
}
|
||||||
@ -136,9 +143,67 @@ public class XWPFTableRow {
|
|||||||
*/
|
*/
|
||||||
public XWPFTableCell getTableCell(CTTc cell) {
|
public XWPFTableCell getTableCell(CTTc cell) {
|
||||||
for(int i=0; i<tableCells.size(); i++){
|
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;
|
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
|
}// end class
|
||||||
|
@ -20,27 +20,50 @@ package org.apache.poi.xwpf.usermodel;
|
|||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
|
||||||
|
|
||||||
public class TestXWPFTableRow extends TestCase {
|
public class TestXWPFTableRow extends TestCase {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
super.setUp();
|
super.setUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSomething() throws Exception {
|
public void testCreateRow() throws Exception {
|
||||||
|
|
||||||
CTRow ctRow = CTRow.Factory.newInstance();
|
CTRow ctRow = CTRow.Factory.newInstance();
|
||||||
|
assertNotNull(ctRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tearDown() throws Exception {
|
protected void tearDown() throws Exception {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
super.tearDown();
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user