Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java?rev=1839369&r1=1839368&r2=1839369&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java Mon Aug 27 19:25:34 2018 @@ -40,8 +40,8 @@ import org.openxmlformats.schemas.drawin import org.openxmlformats.schemas.drawingml.x2006.main.CTTextSpacing; /** - * Represents a paragraph of text within the containing text body. - * The paragraph is the highest level text separation mechanism. + * Represents a paragraph of text within the containing text body. The paragraph + * is the highest level text separation mechanism. */ @Beta public class XDDFTextParagraph { @@ -55,9 +55,7 @@ public class XDDFTextParagraph { this._p = paragraph; this._parent = parent; - final int count = paragraph.sizeOfBrArray() - + paragraph.sizeOfFldArray() - + paragraph.sizeOfRArray(); + final int count = paragraph.sizeOfBrArray() + paragraph.sizeOfFldArray() + paragraph.sizeOfRArray(); this._runs = new ArrayList<>(count); for (XmlObject xo : _p.selectChildren(QNameSet.ALL)) { @@ -83,11 +81,11 @@ public class XDDFTextParagraph { return _parent; } - public List<XDDFTextRun> getTextRuns(){ + public List<XDDFTextRun> getTextRuns() { return _runs; } - public Iterator<XDDFTextRun> iterator(){ + public Iterator<XDDFTextRun> iterator() { return _runs.iterator(); } @@ -96,10 +94,10 @@ public class XDDFTextParagraph { * * @return text run representing this line break ('\n'). */ - public XDDFTextRun appendLineBreak(){ + public XDDFTextRun appendLineBreak() { CTTextLineBreak br = _p.addNewBr(); // by default, line break has the font properties of the last text run - for (int i = _runs.size() - 1; i <= 0; i--){ + for (int i = _runs.size() - 1; i <= 0; i--) { CTTextCharacterProperties prevProps = _runs.get(i).getProperties(); // let's find one that is not undefined if (prevProps != null) { @@ -117,7 +115,7 @@ public class XDDFTextParagraph { * * @return the new text field. */ - public XDDFTextRun appendField(String id, String type, String text){ + public XDDFTextRun appendField(String id, String type, String text) { CTTextField f = _p.addNewFld(); f.setId(id); f.setType(type); @@ -134,7 +132,7 @@ public class XDDFTextParagraph { * * @return the new run of text. */ - public XDDFTextRun appendRegularRun(String text){ + public XDDFTextRun appendRegularRun(String text) { CTRegularTextRun r = _p.addNewR(); r.setT(text); CTTextCharacterProperties rPr = r.addNewRPr(); @@ -148,19 +146,20 @@ public class XDDFTextParagraph { * Returns the alignment that is applied to the paragraph. * * If this attribute is omitted, then a value of left is implied. + * * @return alignment that is applied to the paragraph */ public TextAlignment getTextAlignment() { return findDefinedParagraphProperty(props -> props.isSetAlgn(), props -> props.getAlgn()) - .map(align -> TextAlignment.valueOf(align)) - .orElse(null); + .map(align -> TextAlignment.valueOf(align)).orElse(null); } /** - * Specifies the alignment that is to be applied to the paragraph. - * Possible values for this include left, right, centered, justified and distributed, + * Specifies the alignment that is to be applied to the paragraph. Possible + * values for this include left, right, centered, justified and distributed, * - * @param align text alignment + * @param align + * text alignment */ public void setTextAlignment(TextAlignment align) { if (align != null || _p.isSetPPr()) { @@ -169,25 +168,27 @@ public class XDDFTextParagraph { } /** - * Returns where vertically on a line of text the actual words are positioned. This deals - * with vertical placement of the characters with respect to the baselines. + * Returns where vertically on a line of text the actual words are + * positioned. This deals with vertical placement of the characters with + * respect to the baselines. * * If this attribute is omitted, then a value of baseline is implied. + * * @return alignment that is applied to the paragraph */ public FontAlignment getFontAlignment() { return findDefinedParagraphProperty(props -> props.isSetFontAlgn(), props -> props.getFontAlgn()) - .map(align -> FontAlignment.valueOf(align)) - .orElse(null); + .map(align -> FontAlignment.valueOf(align)).orElse(null); } /** - * Determines where vertically on a line of text the actual words are positioned. This deals - * with vertical placement of the characters with respect to the baselines. For instance - * having text anchored to the top baseline, anchored to the bottom baseline, centered in - * between, etc. + * Determines where vertically on a line of text the actual words are + * positioned. This deals with vertical placement of the characters with + * respect to the baselines. For instance having text anchored to the top + * baseline, anchored to the bottom baseline, centered in between, etc. * - * @param align text font alignment + * @param align + * text font alignment */ public void setFontAlignment(FontAlignment align) { if (align != null || _p.isSetPPr()) { @@ -197,27 +198,31 @@ public class XDDFTextParagraph { /** * - * @return the indentation, in points, applied to the first line of text in the paragraph. + * @return the indentation, in points, applied to the first line of text in + * the paragraph. */ public Double getIndentation() { return findDefinedParagraphProperty(props -> props.isSetIndent(), props -> props.getIndent()) - .map(emu -> Units.toPoints(emu)) - .orElse(null); + .map(emu -> Units.toPoints(emu)).orElse(null); } /** - * Specifies the indentation size that will be applied to the first line of text in the paragraph. + * Specifies the indentation size that will be applied to the first line of + * text in the paragraph. * - * @param points the indentation in points. - * The value <code>null</code> unsets the indentation for this paragraph. - * <dl> - * <dt>Minimum inclusive =</dt><dd>-4032</dd> - * <dt>Maximum inclusive =</dt><dd>4032</dd> - * </dt> + * @param points + * the indentation in points. The value <code>null</code> unsets + * the indentation for this paragraph. + * <dl> + * <dt>Minimum inclusive =</dt> + * <dd>-4032</dd> + * <dt>Maximum inclusive =</dt> + * <dd>4032</dd></dt> */ public void setIndentation(Double points) { if (points != null || _p.isSetPPr()) { - getOrCreateProperties().setIndentation(points);; + getOrCreateProperties().setIndentation(points); + ; } } @@ -227,21 +232,23 @@ public class XDDFTextParagraph { */ public Double getMarginLeft() { return findDefinedParagraphProperty(props -> props.isSetMarL(), props -> props.getMarL()) - .map(emu -> Units.toPoints(emu)) - .orElse(null); + .map(emu -> Units.toPoints(emu)).orElse(null); } /** - * Specifies the left margin of the paragraph. This is specified in addition to the text body - * inset and applies only to this text paragraph. That is the text body inset and the LeftMargin - * attributes are additive with respect to the text position. - * - * @param points the margin in points. - * The value <code>null</code> unsets the left margin for this paragraph. - * <dl> - * <dt>Minimum inclusive =</dt><dd>0</dd> - * <dt>Maximum inclusive =</dt><dd>4032</dd> - * </dt> + * Specifies the left margin of the paragraph. This is specified in addition + * to the text body inset and applies only to this text paragraph. That is + * the text body inset and the LeftMargin attributes are additive with + * respect to the text position. + * + * @param points + * the margin in points. The value <code>null</code> unsets the + * left margin for this paragraph. + * <dl> + * <dt>Minimum inclusive =</dt> + * <dd>0</dd> + * <dt>Maximum inclusive =</dt> + * <dd>4032</dd></dt> */ public void setMarginLeft(Double points) { if (points != null || _p.isSetPPr()) { @@ -255,21 +262,23 @@ public class XDDFTextParagraph { */ public Double getMarginRight() { return findDefinedParagraphProperty(props -> props.isSetMarR(), props -> props.getMarR()) - .map(emu -> Units.toPoints(emu)) - .orElse(null); + .map(emu -> Units.toPoints(emu)).orElse(null); } /** - * Specifies the right margin of the paragraph. This is specified in addition to the text body - * inset and applies only to this text paragraph. That is the text body inset and the RightMargin - * attributes are additive with respect to the text position. - * - * @param points the margin in points. - * The value <code>null</code> unsets the right margin for this paragraph. - * <dl> - * <dt>Minimum inclusive =</dt><dd>0</dd> - * <dt>Maximum inclusive =</dt><dd>4032</dd> - * </dt> + * Specifies the right margin of the paragraph. This is specified in + * addition to the text body inset and applies only to this text paragraph. + * That is the text body inset and the RightMargin attributes are additive + * with respect to the text position. + * + * @param points + * the margin in points. The value <code>null</code> unsets the + * right margin for this paragraph. + * <dl> + * <dt>Minimum inclusive =</dt> + * <dd>0</dd> + * <dt>Maximum inclusive =</dt> + * <dd>4032</dd></dt> */ public void setMarginRight(Double points) { if (points != null || _p.isSetPPr()) { @@ -279,19 +288,20 @@ public class XDDFTextParagraph { /** * - * @return the default size for a tab character within this paragraph in points. + * @return the default size for a tab character within this paragraph in + * points. */ public Double getDefaultTabSize() { return findDefinedParagraphProperty(props -> props.isSetDefTabSz(), props -> props.getDefTabSz()) - .map(emu -> Units.toPoints(emu)) - .orElse(null); + .map(emu -> Units.toPoints(emu)).orElse(null); } /** * Specifies the default size for a tab character within this paragraph. * - * @param points the default tab size in points. - * The value <code>null</code> unsets the default tab size for this paragraph. + * @param points + * the default tab size in points. The value <code>null</code> + * unsets the default tab size for this paragraph. */ public void setDefaultTabSize(Double points) { if (points != null || _p.isSetPPr()) { @@ -301,30 +311,35 @@ public class XDDFTextParagraph { /** * Returns the vertical line spacing that is to be used within a paragraph. - * This may be specified in two different ways, percentage spacing or font points spacing: + * This may be specified in two different ways, percentage spacing or font + * points spacing: * <p> - * If line spacing is a percentage of normal line height, result is instance of XDDFSpacingPercent. - * If line spacing is expressed in points, result is instance of XDDFSpacingPoints. + * If line spacing is a percentage of normal line height, result is instance + * of XDDFSpacingPercent. If line spacing is expressed in points, result is + * instance of XDDFSpacingPoints. * </p> * * @return the vertical line spacing. */ public XDDFSpacing getLineSpacing() { return findDefinedParagraphProperty(props -> props.isSetLnSpc(), props -> props.getLnSpc()) - .map(spacing -> extractSpacing(spacing)) - .orElse(null); + .map(spacing -> extractSpacing(spacing)).orElse(null); } /** - * This element specifies the vertical line spacing that is to be used within a paragraph. - * This may be specified in two different ways, percentage spacing or font points spacing: + * This element specifies the vertical line spacing that is to be used + * within a paragraph. This may be specified in two different ways, + * percentage spacing or font points spacing: * <p> - * If spacing is instance of XDDFSpacingPercent, then line spacing is a percentage of normal line height. - * If spacing is instance of XDDFSpacingPoints, then line spacing is expressed in points. + * If spacing is instance of XDDFSpacingPercent, then line spacing is a + * percentage of normal line height. If spacing is instance of + * XDDFSpacingPoints, then line spacing is expressed in points. * </p> * Examples: - * <pre><code> + * + * <pre> + * <code> * // spacing will be 120% of the size of the largest text on each line * paragraph.setLineSpacing(new XDDFSpacingPercent(120)); * @@ -333,9 +348,11 @@ public class XDDFTextParagraph { * * // spacing will be 48 points * paragraph.setLineSpacing(new XDDFSpacingPoints(48.0)); - * </code></pre> + * </code> + * </pre> * - * @param linespacing the vertical line spacing + * @param linespacing + * the vertical line spacing */ public void setLineSpacing(XDDFSpacing linespacing) { if (linespacing != null || _p.isSetPPr()) { @@ -344,39 +361,46 @@ public class XDDFTextParagraph { } /** - * The amount of vertical white space before the paragraph. - * This may be specified in two different ways, percentage spacing or font points spacing: + * The amount of vertical white space before the paragraph. This may be + * specified in two different ways, percentage spacing or font points + * spacing: * <p> - * If spacing is a percentage of normal line height, result is instance of XDDFSpacingPercent. - * If spacing is expressed in points, result is instance of XDDFSpacingPoints. + * If spacing is a percentage of normal line height, result is instance of + * XDDFSpacingPercent. If spacing is expressed in points, result is instance + * of XDDFSpacingPoints. * </p> * * @return the vertical white space before the paragraph. */ public XDDFSpacing getSpaceBefore() { return findDefinedParagraphProperty(props -> props.isSetSpcBef(), props -> props.getSpcBef()) - .map(spacing -> extractSpacing(spacing)) - .orElse(null); + .map(spacing -> extractSpacing(spacing)).orElse(null); } /** - * Set the amount of vertical white space that will be present before the paragraph. - * This may be specified in two different ways, percentage spacing or font points spacing: + * Set the amount of vertical white space that will be present before the + * paragraph. This may be specified in two different ways, percentage + * spacing or font points spacing: * <p> - * If spacing is instance of XDDFSpacingPercent, then spacing is a percentage of normal line height. - * If spacing is instance of XDDFSpacingPoints, then spacing is expressed in points. + * If spacing is instance of XDDFSpacingPercent, then spacing is a + * percentage of normal line height. If spacing is instance of + * XDDFSpacingPoints, then spacing is expressed in points. * </p> * Examples: - * <pre><code> + * + * <pre> + * <code> * // The paragraph will be formatted to have a spacing before the paragraph text. * // The spacing will be 200% of the size of the largest text on each line * paragraph.setSpaceBefore(new XDDFSpacingPercent(200)); * * // The spacing will be a size of 48 points * paragraph.setSpaceBefore(new XDDFSpacingPoints(48.0)); - * </code></pre> + * </code> + * </pre> * - * @param spaceBefore the vertical white space before the paragraph. + * @param spaceBefore + * the vertical white space before the paragraph. */ public void setSpaceBefore(XDDFSpacing spaceBefore) { if (spaceBefore != null || _p.isSetPPr()) { @@ -385,39 +409,46 @@ public class XDDFTextParagraph { } /** - * The amount of vertical white space after the paragraph. - * This may be specified in two different ways, percentage spacing or font points spacing: + * The amount of vertical white space after the paragraph. This may be + * specified in two different ways, percentage spacing or font points + * spacing: * <p> - * If spacing is a percentage of normal line height, result is instance of XDDFSpacingPercent. - * If spacing is expressed in points, result is instance of XDDFSpacingPoints. + * If spacing is a percentage of normal line height, result is instance of + * XDDFSpacingPercent. If spacing is expressed in points, result is instance + * of XDDFSpacingPoints. * </p> * * @return the vertical white space after the paragraph. */ public XDDFSpacing getSpaceAfter() { return findDefinedParagraphProperty(props -> props.isSetSpcAft(), props -> props.getSpcAft()) - .map(spacing -> extractSpacing(spacing)) - .orElse(null); + .map(spacing -> extractSpacing(spacing)).orElse(null); } /** - * Set the amount of vertical white space that will be present after the paragraph. - * This may be specified in two different ways, percentage spacing or font points spacing: + * Set the amount of vertical white space that will be present after the + * paragraph. This may be specified in two different ways, percentage + * spacing or font points spacing: * <p> - * If spacing is instance of XDDFSpacingPercent, then spacing is a percentage of normal line height. - * If spacing is instance of XDDFSpacingPoints, then spacing is expressed in points. + * If spacing is instance of XDDFSpacingPercent, then spacing is a + * percentage of normal line height. If spacing is instance of + * XDDFSpacingPoints, then spacing is expressed in points. * </p> * Examples: - * <pre><code> + * + * <pre> + * <code> * // The paragraph will be formatted to have a spacing after the paragraph text. * // The spacing will be 200% of the size of the largest text on each line * paragraph.setSpaceAfter(new XDDFSpacingPercent(200)); * * // The spacing will be a size of 48 points * paragraph.setSpaceAfter(new XDDFSpacingPoints(48.0)); - * </code></pre> + * </code> + * </pre> * - * @param spaceAfter the vertical white space after the paragraph. + * @param spaceAfter + * the vertical white space after the paragraph. */ public void setSpaceAfter(XDDFSpacing spaceAfter) { if (spaceAfter != null || _p.isSetPPr()) { @@ -427,20 +458,19 @@ public class XDDFTextParagraph { /** * - * @return the color of bullet characters within a given paragraph. - * A <code>null</code> value means to use the text font color. + * @return the color of bullet characters within a given paragraph. A + * <code>null</code> value means to use the text font color. */ - public XDDFColor getBulletColor(){ - return findDefinedParagraphProperty( - props -> props.isSetBuClr() || props.isSetBuClrTx(), - props -> new XDDFParagraphBulletProperties(props).getBulletColor() - ).orElse(null); + public XDDFColor getBulletColor() { + return findDefinedParagraphProperty(props -> props.isSetBuClr() || props.isSetBuClrTx(), + props -> new XDDFParagraphBulletProperties(props).getBulletColor()).orElse(null); } /** * Set the color to be used on bullet characters within a given paragraph. * - * @param color the bullet color + * @param color + * the bullet color */ public void setBulletColor(XDDFColor color) { if (color != null || _p.isSetPPr()) { @@ -449,7 +479,8 @@ public class XDDFTextParagraph { } /** - * Specifies the color to be used on bullet characters has to follow text color within a given paragraph. + * Specifies the color to be used on bullet characters has to follow text + * color within a given paragraph. */ public void setBulletColorFollowText() { getOrCreateBulletProperties().setBulletColorFollowText(); @@ -457,20 +488,19 @@ public class XDDFTextParagraph { /** * - * @return the font of bullet characters within a given paragraph. - * A <code>null</code> value means to use the text font font. + * @return the font of bullet characters within a given paragraph. A + * <code>null</code> value means to use the text font font. */ - public XDDFFont getBulletFont(){ - return findDefinedParagraphProperty( - props -> props.isSetBuFont() || props.isSetBuFontTx(), - props -> new XDDFParagraphBulletProperties(props).getBulletFont() - ).orElse(null); + public XDDFFont getBulletFont() { + return findDefinedParagraphProperty(props -> props.isSetBuFont() || props.isSetBuFontTx(), + props -> new XDDFParagraphBulletProperties(props).getBulletFont()).orElse(null); } /** * Set the font to be used on bullet characters within a given paragraph. * - * @param font the bullet font + * @param font + * the bullet font */ public void setBulletFont(XDDFFont font) { if (font != null || _p.isSetPPr()) { @@ -479,40 +509,46 @@ public class XDDFTextParagraph { } /** - * Specifies the font to be used on bullet characters has to follow text font within a given paragraph. + * Specifies the font to be used on bullet characters has to follow text + * font within a given paragraph. */ public void setBulletFontFollowText() { getOrCreateBulletProperties().setBulletFontFollowText(); } /** - * Returns the bullet size that is to be used within a paragraph. - * This may be specified in three different ways, follows text size, percentage size and font points size: + * Returns the bullet size that is to be used within a paragraph. This may + * be specified in three different ways, follows text size, percentage size + * and font points size: * <p> - * If returned value is instance of XDDFBulletSizeFollowText, then bullet size is text size; - * If returned value is instance of XDDFBulletSizePercent, then bullet size is a percentage of the font size; - * If returned value is instance of XDDFBulletSizePoints, then bullet size is specified in points. + * If returned value is instance of XDDFBulletSizeFollowText, then bullet + * size is text size; If returned value is instance of + * XDDFBulletSizePercent, then bullet size is a percentage of the font size; + * If returned value is instance of XDDFBulletSizePoints, then bullet size + * is specified in points. * </p> * * @return the bullet size */ - public XDDFBulletSize getBulletSize(){ + public XDDFBulletSize getBulletSize() { return findDefinedParagraphProperty( - props -> props.isSetBuSzPct() || props.isSetBuSzPts() || props.isSetBuSzTx(), - props -> new XDDFParagraphBulletProperties(props).getBulletSize() - ).orElse(null); + props -> props.isSetBuSzPct() || props.isSetBuSzPts() || props.isSetBuSzTx(), + props -> new XDDFParagraphBulletProperties(props).getBulletSize()).orElse(null); } /** - * Sets the bullet size that is to be used within a paragraph. - * This may be specified in three different ways, follows text size, percentage size and font points size: + * Sets the bullet size that is to be used within a paragraph. This may be + * specified in three different ways, follows text size, percentage size and + * font points size: * <p> - * If given value is instance of XDDFBulletSizeFollowText, then bullet size is text size; - * If given value is instance of XDDFBulletSizePercent, then bullet size is a percentage of the font size; - * If given value is instance of XDDFBulletSizePoints, then bullet size is specified in points. + * If given value is instance of XDDFBulletSizeFollowText, then bullet size + * is text size; If given value is instance of XDDFBulletSizePercent, then + * bullet size is a percentage of the font size; If given value is instance + * of XDDFBulletSizePoints, then bullet size is specified in points. * </p> * - * @param size the bullet size specification + * @param size + * the bullet size specification */ public void setBulletSize(XDDFBulletSize size) { if (size != null || _p.isSetPPr()) { @@ -520,11 +556,10 @@ public class XDDFTextParagraph { } } - public XDDFBulletStyle getBulletStyle(){ + public XDDFBulletStyle getBulletStyle() { return findDefinedParagraphProperty( - props -> props.isSetBuAutoNum() || props.isSetBuBlip() || props.isSetBuChar() || props.isSetBuNone(), - props -> new XDDFParagraphBulletProperties(props).getBulletStyle() - ).orElse(null); + props -> props.isSetBuAutoNum() || props.isSetBuBlip() || props.isSetBuChar() || props.isSetBuNone(), + props -> new XDDFParagraphBulletProperties(props).getBulletStyle()).orElse(null); } public void setBulletStyle(XDDFBulletStyle style) { @@ -534,8 +569,7 @@ public class XDDFTextParagraph { } public boolean hasEastAsianLineBreak() { - return findDefinedParagraphProperty(props -> props.isSetEaLnBrk(), props -> props.getEaLnBrk()) - .orElse(false); + return findDefinedParagraphProperty(props -> props.isSetEaLnBrk(), props -> props.getEaLnBrk()).orElse(false); } public void setEastAsianLineBreak(Boolean value) { @@ -567,8 +601,7 @@ public class XDDFTextParagraph { } public boolean isRightToLeft() { - return findDefinedParagraphProperty(props -> props.isSetRtl(), props -> props.getRtl()) - .orElse(false); + return findDefinedParagraphProperty(props -> props.isSetRtl(), props -> props.getRtl()).orElse(false); } public void setRightToLeft(Boolean value) { @@ -641,6 +674,13 @@ public class XDDFTextParagraph { } } + public XDDFRunProperties addAfterLastRunProperties() { + if (!_p.isSetEndParaRPr()) { + _p.addNewEndParaRPr(); + } + return getAfterLastRunProperties(); + } + public XDDFRunProperties getAfterLastRunProperties() { if (_p.isSetEndParaRPr()) { return new XDDFRunProperties(_p.getEndParaRPr()); @@ -651,7 +691,9 @@ public class XDDFTextParagraph { public void setAfterLastRunProperties(XDDFRunProperties properties) { if (properties == null) { - _p.unsetEndParaRPr(); + if (_p.isSetEndParaRPr()) { + _p.unsetEndParaRPr(); + } } else { _p.setEndParaRPr(properties.getXmlObject()); }
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java?rev=1839369&r1=1839368&r2=1839369&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java Mon Aug 27 19:25:34 2018 @@ -22,8 +22,8 @@ import java.util.Locale; import java.util.Optional; import java.util.function.Function; -import org.apache.poi.POIXMLRelation; import org.apache.poi.common.usermodel.fonts.FontGroup; +import org.apache.poi.ooxml.POIXMLRelation; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackagePartName; import org.apache.poi.openxml4j.opc.PackageRelationship; @@ -88,9 +88,9 @@ public class XDDFTextRun { public String getText() { if (isLineBreak()) { return "\n"; - } else if (isField()) { + } else if (isField()) { return _tf.getT(); - } else { + } else { return _rtr.getT(); } } @@ -151,7 +151,8 @@ public class XDDFTextRun { /** * Specifies whether this run of text will be formatted as bold text. * - * @param bold whether this run of text will be formatted as bold text. + * @param bold + * whether this run of text will be formatted as bold text. */ public void setBold(Boolean bold) { getOrCreateProperties().setBold(bold); @@ -166,7 +167,8 @@ public class XDDFTextRun { } /** - * @param italic whether this run of text is formatted as italic text. + * @param italic + * whether this run of text is formatted as italic text. */ public void setItalic(Boolean italic) { getOrCreateProperties().setItalic(italic); @@ -181,7 +183,8 @@ public class XDDFTextRun { } /** - * @param strike which strike style this run of text is formatted with. + * @param strike + * which strike style this run of text is formatted with. */ public void setStrikeThrough(StrikeType strike) { getOrCreateProperties().setStrikeThrough(strike); @@ -206,7 +209,8 @@ public class XDDFTextRun { } /** - * @param underline which underline style this run of text is formatted with. + * @param underline + * which underline style this run of text is formatted with. */ public void setUnderline(UnderlineType underline) { getOrCreateProperties().setUnderline(underline); @@ -231,7 +235,8 @@ public class XDDFTextRun { } /** - * @param caps which caps style this run of text is formatted with. + * @param caps + * which caps style this run of text is formatted with. */ public void setCapitals(CapsType caps) { getOrCreateProperties().setCapitals(caps); @@ -256,7 +261,8 @@ public class XDDFTextRun { } /** - * @return whether a run of text will be formatted as a subscript text. Default is false. + * @return whether a run of text will be formatted as a subscript text. + * Default is false. */ public boolean isSubscript() { return findDefinedProperty(props -> props.isSetBaseline(), props -> props.getBaseline()) @@ -265,7 +271,8 @@ public class XDDFTextRun { } /** - * @return whether a run of text will be formatted as a superscript text. Default is false. + * @return whether a run of text will be formatted as a superscript text. + * Default is false. */ public boolean isSuperscript() { return findDefinedProperty(props -> props.isSetBaseline(), props -> props.getBaseline()) @@ -282,31 +289,35 @@ public class XDDFTextRun { * * @param offset */ - public void setBaseline(Double offset){ - getOrCreateProperties().setBaseline((int)(offset * 1000)); + public void setBaseline(Double offset) { + if (offset == null) { + getOrCreateProperties().setBaseline(null); + } else { + getOrCreateProperties().setBaseline((int) (offset * 1000)); + } } /** * Set whether the text in this run is formatted as superscript. - * <p> - * The size is specified using a percentage. - * </p> + * <p> + * The size is specified using a percentage. + * </p> * * @param offset */ - public void setSuperscript(Double offset){ + public void setSuperscript(Double offset) { setBaseline(offset == null ? null : Math.abs(offset)); } /** * Set whether the text in this run is formatted as subscript. - * <p> - * The size is specified using a percentage. - * </p> + * <p> + * The size is specified using a percentage. + * </p> * * @param offset */ - public void setSubscript(Double offset){ + public void setSubscript(Double offset) { setBaseline(offset == null ? null : -Math.abs(offset)); } @@ -331,7 +342,8 @@ public class XDDFTextRun { * <em>Note</em>: In order to get fonts to unset the property for a given font family use * {@link XDDFFont#unsetFontForGroup(FontGroup)} * - * @param fonts to set or unset on the run. + * @param fonts + * to set or unset on the run. */ public void setFonts(XDDFFont[] fonts) { getOrCreateProperties().setFonts(fonts); @@ -357,12 +369,14 @@ public class XDDFTextRun { } /** - * @param size font size in points. - * The value <code>null</code> unsets the size for this run. - * <dl> - * <dt>Minimum inclusive =</dt><dd>1</dd> - * <dt>Maximum inclusive =</dt><dd>400</dd> - * </dt> + * @param size + * font size in points. The value <code>null</code> unsets the + * size for this run. + * <dl> + * <dt>Minimum inclusive =</dt> + * <dd>1</dd> + * <dt>Maximum inclusive =</dt> + * <dd>400</dd></dt> * */ public void setFontSize(Double size) { @@ -371,7 +385,7 @@ public class XDDFTextRun { public Double getFontSize() { Integer size = findDefinedProperty(props -> props.isSetSz(), props -> props.getSz()) - .orElse(100 * XSSFFont.DEFAULT_FONT_SIZE); // default font size + .orElse(100 * XSSFFont.DEFAULT_FONT_SIZE); // default font size double scale = _parent.getParentBody().getBodyProperties().getAutoFit().getFontScale() / 10_000_000.0; return size * scale; } @@ -382,13 +396,15 @@ public class XDDFTextRun { * The value <code>null</code> unsets the kerning for this run. * </p> * - * @param kerning character kerning in points. - * <dl> - * <dt>Minimum inclusive =</dt><dd>0</dd> - * <dt>Maximum inclusive =</dt><dd>4000</dd> - * </dt> + * @param kerning + * character kerning in points. + * <dl> + * <dt>Minimum inclusive =</dt> + * <dd>0</dd> + * <dt>Maximum inclusive =</dt> + * <dd>4000</dd></dt> */ - public void setCharacterKerning(Double kerning){ + public void setCharacterKerning(Double kerning) { getOrCreateProperties().setCharacterKerning(kerning); } @@ -413,13 +429,15 @@ public class XDDFTextRun { * The value <code>null</code> unsets the spacing for this run. * </p> * - * @param spacing character spacing in points. - * <dl> - * <dt>Minimum inclusive =</dt><dd>-4000</dd> - * <dt>Maximum inclusive =</dt><dd>4000</dd> - * </dt> + * @param spacing + * character spacing in points. + * <dl> + * <dt>Minimum inclusive =</dt> + * <dd>-4000</dd> + * <dt>Maximum inclusive =</dt> + * <dd>4000</dd></dt> */ - public void setCharacterSpacing(Double spacing){ + public void setCharacterSpacing(Double spacing) { getOrCreateProperties().setCharacterSpacing(spacing); } Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java?rev=1839369&r1=1839368&r2=1839369&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java Mon Aug 27 19:25:34 2018 @@ -77,8 +77,10 @@ public class XSLFAutoShape extends XSLFT CTShape shape = (CTShape) getXmlObject(); CTTextBody txBody = shape.getTxBody(); if (txBody == null && create) { - txBody = shape.addNewTxBody(); - initTextBody(txBody); + XDDFTextBody body = new XDDFTextBody(this); + initTextBody(body); + shape.setTxBody(body.getXmlObject()); + txBody = shape.getTxBody(); } return txBody; } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org