You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by on...@apache.org on 2016/09/11 03:21:33 UTC
svn commit: r1760217 - in /poi/trunk/src/ooxml:
java/org/apache/poi/xslf/usermodel/XSLFTableRow.java
testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java
Author: onealj
Date: Sun Sep 11 03:21:33 2016
New Revision: 1760217
URL: http://svn.apache.org/viewvc?rev=1760217&view=rev
Log:
bug 58191: Support merge cells within a table row; patch from Mark Olesen
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java?rev=1760217&r1=1760216&r2=1760217&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java Sun Sep 11 03:21:33 2016
@@ -32,9 +32,9 @@ import org.openxmlformats.schemas.drawin
* Represents a table in a .pptx presentation
*/
public class XSLFTableRow implements Iterable<XSLFTableCell> {
- private CTTableRow _row;
- private List<XSLFTableCell> _cells;
- private XSLFTable _table;
+ private final CTTableRow _row;
+ private final List<XSLFTableCell> _cells;
+ private final XSLFTable _table;
/*package*/ XSLFTableRow(CTTableRow row, XSLFTable table){
_row = row;
@@ -78,6 +78,29 @@ public class XSLFTableRow implements Ite
_table.updateRowColIndexes();
return cell;
}
+
+ /**
+ * Merge cells of a table row, inclusive.
+ * Indices are 0-based.
+ *
+ * @param firstCol 0-based index of first column to merge, inclusive
+ * @param lastCol 0-based index of last column to merge, inclusive
+ */
+ public void mergeCells(int firstCol, int lastCol)
+ {
+ if (firstCol >= lastCol) {
+ throw new IllegalArgumentException(
+ "Cannot merge, first column >= last column : "
+ + firstCol + " >= " + lastCol
+ );
+ }
+
+ final int colSpan = (lastCol - firstCol) + 1;
+ _cells.get(firstCol).setGridSpan(colSpan);
+ for (final XSLFTableCell cell : _cells.subList(firstCol+1, lastCol+1)) {
+ cell.setHMerge(true);
+ }
+ }
}
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java?rev=1760217&r1=1760216&r2=1760217&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableRow.java Sun Sep 11 03:21:33 2016
@@ -17,9 +17,11 @@
package org.apache.poi.xslf.usermodel;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.IOException;
import java.util.List;
@@ -104,6 +106,23 @@ public class TestXSLFTableRow {
}
@Test
+ public void mergeCells() {
+ try {
+ row.mergeCells(0, 0);
+ fail("expected IllegalArgumentException when merging fewer than 2 columns");
+ } catch (final IllegalArgumentException e) {
+ // expected
+ }
+
+ row.mergeCells(0, 1);
+ List<XSLFTableCell> cells = row.getCells();
+ //the top-left cell of a merged region is not regarded as merged
+ assertFalse("top-left cell of merged region", cells.get(0).isMerged());
+ assertTrue("inside merged region", cells.get(1).isMerged());
+ assertFalse("outside merged region", cells.get(2).isMerged());
+ }
+
+ @Test
public void getXmlObject() {
CTTableRow ctrow = row.getXmlObject();
assertNotNull(ctrow);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org