diff options
author | Yegor Kozlov <yegor@apache.org> | 2012-01-14 11:10:46 +0000 |
---|---|---|
committer | Yegor Kozlov <yegor@apache.org> | 2012-01-14 11:10:46 +0000 |
commit | c15348c0650396c55da3bfa86789b57283fb4dd1 (patch) | |
tree | d6db9b8c534f6e29b63d933cecb610edb7150fb0 /src/ooxml/java/org/apache/poi/xslf | |
parent | 5588a1c1368b92ea4891bf908dd5bd0ff60ad519 (diff) | |
download | poi-c15348c0650396c55da3bfa86789b57283fb4dd1.tar.gz poi-c15348c0650396c55da3bfa86789b57283fb4dd1.zip |
added common interface for containers of shapes in XSLF
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1231481 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/java/org/apache/poi/xslf')
3 files changed, 119 insertions, 4 deletions
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java index 920cf8beaf..2ad699b408 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java @@ -25,7 +25,6 @@ import org.apache.poi.openxml4j.opc.TargetMode; import org.apache.poi.util.Beta;
import org.apache.poi.util.Units;
import org.apache.xmlbeans.XmlObject;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTBlip;
import org.openxmlformats.schemas.drawingml.x2006.main.CTGroupShapeProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTGroupTransform2D;
import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;
@@ -34,12 +33,12 @@ import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D; import org.openxmlformats.schemas.presentationml.x2006.main.CTConnector;
import org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShape;
import org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShapeNonVisual;
-import org.openxmlformats.schemas.presentationml.x2006.main.CTPicture;
import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
+import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;
@@ -49,7 +48,7 @@ import java.util.regex.Pattern; * @author Yegor Kozlov
*/
@Beta
-public class XSLFGroupShape extends XSLFShape {
+public class XSLFGroupShape extends XSLFShape implements XSLFShapeContainer {
private final CTGroupShape _shape;
private final XSLFSheet _sheet;
private final List<XSLFShape> _shapes;
@@ -146,6 +145,15 @@ public class XSLFGroupShape extends XSLFShape { }
/**
+ * Returns an iterator over the shapes in this sheet
+ *
+ * @return an iterator over the shapes in this sheet
+ */
+ public Iterator<XSLFShape> iterator(){
+ return _shapes.iterator();
+ }
+
+ /**
* Remove the specified shape from this group
*/
public boolean removeShape(XSLFShape xShape) {
@@ -325,4 +333,14 @@ public class XSLFGroupShape extends XSLFShape { }
}
+ /**
+ * Removes all of the elements from this container (optional operation).
+ * The container will be empty after this call returns.
+ */
+ public void clear() {
+ for(XSLFShape shape : getShapes()){
+ removeShape(shape);
+ }
+ }
+
}
\ No newline at end of file diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShapeContainer.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShapeContainer.java new file mode 100644 index 0000000000..bcb6afbc78 --- /dev/null +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShapeContainer.java @@ -0,0 +1,87 @@ +/* + * ==================================================================== + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ==================================================================== + */ + +package org.apache.poi.xslf.usermodel; + +/** + * Common interface for shape containers, e.g. sheets or groups of shapes + */ +public interface XSLFShapeContainer extends Iterable<XSLFShape> { + + /** + * create a new shape with a predefined geometry and add it to this shape container + */ + XSLFAutoShape createAutoShape(); + + /** + * create a new shape with a custom geometry + */ + XSLFFreeformShape createFreeform(); + + /** + * create a text box + */ + XSLFTextBox createTextBox(); + + /** + * + * create a connector + */ + XSLFConnectorShape createConnector(); + + /** + * create a group of shapes belonging to this container + */ + XSLFGroupShape createGroup(); + + /** + * create a picture belonging to this container + * + * @param pictureIndex + * @return + */ + XSLFPictureShape createPicture(int pictureIndex); + + /** + * Returns an array containing all of the elements in this container in proper + * sequence (from first to last element). + * + * @return an array containing all of the elements in this container in proper + * sequence + */ + XSLFShape[] getShapes(); + + /** + * Removes the specified shape from this sheet, if it is present + * (optional operation). If this sheet does not contain the element, + * it is unchanged. + * + * @param xShape shape to be removed from this sheet, if present + * @return <tt>true</tt> if this sheet contained the specified element + * @throws IllegalArgumentException if the type of the specified shape + * is incompatible with this sheet (optional) + */ + boolean removeShape(XSLFShape xShape) ; + + /** + * Removes all of the elements from this container (optional operation). + * The container will be empty after this call returns. + */ + void clear(); +} diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java index 0c64947b9c..63d3e8f37c 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java @@ -48,7 +48,7 @@ import java.util.Map; import java.util.regex.Pattern; @Beta -public abstract class XSLFSheet extends POIXMLDocumentPart implements Iterable<XSLFShape> { +public abstract class XSLFSheet extends POIXMLDocumentPart implements XSLFShapeContainer { private XSLFCommonSlideData _commonSlideData; private XSLFDrawing _drawing; private List<XSLFShape> _shapes; @@ -241,6 +241,16 @@ public abstract class XSLFSheet extends POIXMLDocumentPart implements Iterable<X return getShapeList().remove(xShape); } + /** + * Removes all of the elements from this container (optional operation). + * The container will be empty after this call returns. + */ + public void clear() { + for(XSLFShape shape : getShapes()){ + removeShape(shape); + } + } + protected abstract String getRootElementName(); protected CTGroupShape getSpTree(){ |