org.apache.poi.xslf.usermodel
Class XSLFShape

java.lang.Object
  extended by org.apache.poi.xslf.usermodel.XSLFShape
All Implemented Interfaces:
Shape<XSLFShape,XSLFTextParagraph>
Direct Known Subclasses:
XSLFGraphicFrame, XSLFGroupShape, XSLFShadow, XSLFSimpleShape

@Beta
public abstract class XSLFShape
extends java.lang.Object
implements Shape<XSLFShape,XSLFTextParagraph>

Base super-class class for all shapes in PresentationML


Field Summary
protected static java.lang.String PML_NS
           
 
Constructor Summary
protected XSLFShape(org.apache.xmlbeans.XmlObject shape, XSLFSheet sheet)
           
 
Method Summary
 void draw(java.awt.Graphics2D graphics, java.awt.geom.Rectangle2D bounds)
           
protected  boolean fetchShapeProperty(PropertyFetcher<?> visitor)
          Walk up the inheritance tree and fetch shape properties.
protected  org.openxmlformats.schemas.presentationml.x2006.main.CTBackgroundProperties getBgPr()
           
protected  org.openxmlformats.schemas.drawingml.x2006.main.CTStyleMatrixReference getBgRef()
           
protected
<T extends org.apache.xmlbeans.XmlObject>
T
getChild(java.lang.Class<T> childClass, java.lang.String namespace, java.lang.String nodename)
          Return direct child objects of this shape
protected  org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps getCNvPr()
           
protected  org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder getCTPlaceholder()
           
protected  PaintStyle getFillPaint()
           
protected  org.openxmlformats.schemas.drawingml.x2006.main.CTGroupShapeProperties getGrpSpPr()
           
 XSLFShapeContainer getParent()
           
 Placeholder getPlaceholder()
           
 int getShapeId()
          Returns a unique identifier for this shape within the current document.
 java.lang.String getShapeName()
           
protected  org.apache.xmlbeans.XmlObject getShapeProperties()
          Return the shape specific (visual) properties
 XSLFSheet getSheet()
           
protected  org.openxmlformats.schemas.drawingml.x2006.main.CTShapeStyle getSpStyle()
           
 org.apache.xmlbeans.XmlObject getXmlObject()
           
protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTBlipFillProperties blipFill, PackagePart parentPart)
           
protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTGradientFillProperties gradFill, org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor phClr, XSLFTheme theme)
           
protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTSolidColorFillProperties solidFill, org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor phClr, XSLFTheme theme)
           
protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTStyleMatrixReference fillRef, XSLFTheme theme, boolean isLineStyle, boolean hasPlaceholder)
           
protected static PaintStyle selectPaint(XSLFPropertiesDelegate.XSLFFillProperties fp, org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor phClr, PackagePart parentPart, XSLFTheme theme, boolean hasPlaceholder)
          Convert shape fill into java.awt.Paint.
protected
<T extends org.apache.xmlbeans.XmlObject>
T
selectProperty(java.lang.Class<T> resultClass, java.lang.String xquery)
          As there's no xmlbeans hierarchy, but XSLF works with subclassing, not all child classes work with a CTShape object, but often contain the same properties.
 void setParent(XSLFShapeContainer parent)
           
protected  void setPlaceholder(Placeholder placeholder)
          Specifies that the corresponding shape should be represented by the generating application as a placeholder.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.poi.sl.usermodel.Shape
getAnchor
 

Field Detail

PML_NS

protected static final java.lang.String PML_NS
See Also:
Constant Field Values
Constructor Detail

XSLFShape

protected XSLFShape(org.apache.xmlbeans.XmlObject shape,
                    XSLFSheet sheet)
Method Detail

getXmlObject

public final org.apache.xmlbeans.XmlObject getXmlObject()
Returns:
the xml bean holding this shape's data

getSheet

public XSLFSheet getSheet()
Specified by:
getSheet in interface Shape<XSLFShape,XSLFTextParagraph>

getShapeName

public java.lang.String getShapeName()
Returns:
human-readable name of this shape, e.g. "Rectange 3"

getShapeId

public int getShapeId()
Returns a unique identifier for this shape within the current document. This ID may be used to assist in uniquely identifying this object so that it can be referred to by other parts of the document.

If multiple objects within the same document share the same id attribute value, then the document shall be considered non-conformant.

Returns:
unique id of this shape

setParent

public void setParent(XSLFShapeContainer parent)

getParent

public XSLFShapeContainer getParent()
Specified by:
getParent in interface Shape<XSLFShape,XSLFTextParagraph>

getFillPaint

protected PaintStyle getFillPaint()

getBgPr

protected org.openxmlformats.schemas.presentationml.x2006.main.CTBackgroundProperties getBgPr()

getBgRef

protected org.openxmlformats.schemas.drawingml.x2006.main.CTStyleMatrixReference getBgRef()

getGrpSpPr

protected org.openxmlformats.schemas.drawingml.x2006.main.CTGroupShapeProperties getGrpSpPr()

getCNvPr

protected org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps getCNvPr()

getSpStyle

protected org.openxmlformats.schemas.drawingml.x2006.main.CTShapeStyle getSpStyle()

getChild

protected <T extends org.apache.xmlbeans.XmlObject> T getChild(java.lang.Class<T> childClass,
                                                               java.lang.String namespace,
                                                               java.lang.String nodename)
Return direct child objects of this shape

Parameters:
childClass - the class to cast the properties to
namespace - the namespace - usually it is "http://schemas.openxmlformats.org/presentationml/2006/main"
nodename - the node name, without prefix
Returns:
the properties object or null if it can't be found

getCTPlaceholder

protected org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder getCTPlaceholder()

getPlaceholder

public Placeholder getPlaceholder()

setPlaceholder

protected void setPlaceholder(Placeholder placeholder)
Specifies that the corresponding shape should be represented by the generating application as a placeholder. When a shape is considered a placeholder by the generating application it can have special properties to alert the user that they may enter content into the shape. Different types of placeholders are allowed and can be specified by using the placeholder type attribute for this element

Parameters:
placeholder - The shape to use as placeholder or null if no placeholder should be set.

selectProperty

protected <T extends org.apache.xmlbeans.XmlObject> T selectProperty(java.lang.Class<T> resultClass,
                                                                     java.lang.String xquery)
As there's no xmlbeans hierarchy, but XSLF works with subclassing, not all child classes work with a CTShape object, but often contain the same properties. This method is the generalized form of selecting and casting those properties.

Parameters:
resultClass - the requested result class
xquery - the simple (xmlbean) xpath expression to the property
Returns:
the xml object at the xpath location, or null if not found

fetchShapeProperty

protected boolean fetchShapeProperty(PropertyFetcher<?> visitor)
Walk up the inheritance tree and fetch shape properties.

The following order of inheritance is assumed:

  1. slide
  2. slideLayout
  3. slideMaster
Currently themes and their defaults aren't correctly handled

Parameters:
visitor - the object that collects the desired property
Returns:
true if the property was fetched

selectPaint

protected static PaintStyle selectPaint(XSLFPropertiesDelegate.XSLFFillProperties fp,
                                        org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor phClr,
                                        PackagePart parentPart,
                                        XSLFTheme theme,
                                        boolean hasPlaceholder)
Convert shape fill into java.awt.Paint. The result is either Color or TexturePaint or GradientPaint or null

Parameters:
fp - a properties handler specific to the underlying shape properties
phClr - context color
parentPart - the parent package part. Any external references (images, etc.) are resolved relative to it.
theme - the theme for the shape/sheet
Returns:
the applied Paint or null if none was applied

selectPaint

protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTSolidColorFillProperties solidFill,
                                        org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor phClr,
                                        XSLFTheme theme)

selectPaint

protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTBlipFillProperties blipFill,
                                        PackagePart parentPart)

selectPaint

protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTGradientFillProperties gradFill,
                                        org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor phClr,
                                        XSLFTheme theme)

selectPaint

protected static PaintStyle selectPaint(org.openxmlformats.schemas.drawingml.x2006.main.CTStyleMatrixReference fillRef,
                                        XSLFTheme theme,
                                        boolean isLineStyle,
                                        boolean hasPlaceholder)

draw

public void draw(java.awt.Graphics2D graphics,
                 java.awt.geom.Rectangle2D bounds)
Specified by:
draw in interface Shape<XSLFShape,XSLFTextParagraph>

getShapeProperties

protected org.apache.xmlbeans.XmlObject getShapeProperties()
Return the shape specific (visual) properties

Returns:
the shape specific properties