diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 68d7792bc7..3f0996a3fc 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 52568 - Added methods to set/get an XWPFRun's text color 52566 - Added methods to set/get vertical alignment and color in XWPFTableCell 52562 - Added methods to get/set a table row's Can't Split and Repeat Header attributes in XWPF 52561 - Added methods to set table inside borders and cell margins in XWPF diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java index 73629f7467..f5d396abb8 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java @@ -48,6 +48,7 @@ import org.openxmlformats.schemas.drawingml.x2006.main.STShapeType; import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTAnchor; import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTColor; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDrawing; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTEmpty; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts; @@ -74,6 +75,8 @@ import org.openxmlformats.schemas.drawingml.x2006.picture.CTPictureNonVisual; * XWPFRun object defines a region of text with a common set of properties * * @author Yegor Kozlov + * @author Gregg Morris (gregg dot morris at gmail dot com) - added getColor(), setColor() + * */ public class XWPFRun { private CTR run; @@ -244,6 +247,31 @@ public class XWPFRun { bold.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); } + /** + * Get text color. The returned value is a string in the hex form "RRGGBB". + */ + public String getColor() { + String color = null; + if (run.isSetRPr()) { + CTRPr pr = run.getRPr(); + if (pr.isSetColor()) { + CTColor clr = pr.getColor(); + color = clr.xgetVal().getStringValue(); + } + } + return color; + } + + /** + * Set text color. + * @param rgbStr - the desired color, in the hex form "RRGGBB". + */ + public void setColor(String rgbStr) { + CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); + CTColor color = pr.isSetColor() ? pr.getColor() : pr.addNewColor(); + color.setVal(rgbStr); + } + /** * Return the string content of this text run * diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java index 272ca87d1c..086e117e53 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java @@ -161,6 +161,13 @@ public class TestXWPFRun extends TestCase { assertEquals(2400, rpr.getPosition().getVal().longValue()); } + public void testSetGetColor() { + XWPFRun run = new XWPFRun(ctRun, p); + run.setColor("0F0F0F"); + String clr = run.getColor(); + assertEquals("0F0F0F", clr); + } + public void testAddCarriageReturn() { ctRun.addNewT().setStringValue("TEST STRING");