You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2022/03/07 11:05:05 UTC
svn commit: r1898672 - in /poi/trunk/poi-ooxml/src: main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java test/java/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
Author: fanningpj
Date: Mon Mar 7 11:05:05 2022
New Revision: 1898672
URL: http://svn.apache.org/viewvc?rev=1898672&view=rev
Log:
[bug-65935] add removeTextRun
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java?rev=1898672&r1=1898671&r2=1898672&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java Mon Mar 7 11:05:05 2022
@@ -18,6 +18,7 @@ package org.apache.poi.xslf.usermodel;
import java.awt.Color;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
@@ -103,12 +104,12 @@ public class XSLFTextParagraph implement
@Override
public List<XSLFTextRun> getTextRuns() {
- return _runs;
+ return Collections.unmodifiableList(_runs);
}
@Override
public Iterator<XSLFTextRun> iterator() {
- return _runs.iterator();
+ return getTextRuns().iterator();
}
/**
@@ -126,6 +127,43 @@ public class XSLFTextParagraph implement
}
/**
+ * Remove a text run
+ *
+ * @param textRun a run of text
+ * @return whether the run was removed
+ * @since POI 5.2.2
+ */
+ public boolean removeTextRun(XSLFTextRun textRun) {
+ if (_runs.remove(textRun)) {
+ XmlObject xo = textRun.getXmlObject();
+ if (xo instanceof CTRegularTextRun) {
+ for (int i = 0; i < getXmlObject().sizeOfRArray(); i++) {
+ if (getXmlObject().getRArray(i).equals(xo)) {
+ getXmlObject().removeR(i);
+ return true;
+ }
+ }
+ } else if (xo instanceof CTTextField) {
+ for (int i = 0; i < getXmlObject().sizeOfFldArray(); i++) {
+ if (getXmlObject().getFldArray(i).equals(xo)) {
+ getXmlObject().removeFld(i);
+ return true;
+ }
+ }
+ } else if (xo instanceof CTTextLineBreak) {
+ for (int i = 0; i < getXmlObject().sizeOfBrArray(); i++) {
+ if (getXmlObject().getBrArray(i).equals(xo)) {
+ getXmlObject().removeBr(i);
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ return false;
+ }
+
+ /**
* Insert a line break
*
* @return text run representing this line break ('\n')
Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java?rev=1898672&r1=1898671&r2=1898672&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java Mon Mar 7 11:05:05 2022
@@ -169,6 +169,28 @@ class TestXSLFTextParagraph {
}
}
+ @Test
+ void testRemoveTextRun() throws IOException {
+ try (XMLSlideShow ppt = new XMLSlideShow()) {
+ XSLFSlide slide = ppt.createSlide();
+ XSLFTextShape sh = slide.createAutoShape();
+ sh.setLineColor(Color.black);
+
+ XSLFTextParagraph p = sh.addNewTextParagraph();
+ XSLFTextRun run = p.addNewTextRun();
+ run.setText(
+ "Paragraph formatting allows for more granular control " +
+ "of text within a shape. Properties here apply to all text " +
+ "residing within the corresponding paragraph.");
+
+ assertTrue(p.removeTextRun(run));
+
+ assertTrue(p.getTextRuns().isEmpty());
+
+ assertEquals(0, p.getXmlObject().sizeOfRArray());
+ }
+ }
+
/**
* test breaking test into lines.
* This test requires that the Arial font is available and will run only on windows
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org