poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ye...@apache.org
Subject svn commit: r1231481 - in /poi/trunk/src/ooxml: java/org/apache/poi/xslf/usermodel/ testcases/org/apache/poi/xslf/usermodel/
Date Sat, 14 Jan 2012 11:10:47 GMT
Author: yegor
Date: Sat Jan 14 11:10:46 2012
New Revision: 1231481

URL: http://svn.apache.org/viewvc?rev=1231481&view=rev
Log:
added common interface for containers of shapes in XSLF

Added:
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShapeContainer.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShapeContainer.java
Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java?rev=1231481&r1=1231480&r2=1231481&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java Sat Jan 14
11:10:46 2012
@@ -25,7 +25,6 @@ import org.apache.poi.openxml4j.opc.Targ
 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.drawin
 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 XSLF
     }
 
     /**
+     * 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 XSLF
         }
     }
 
+    /**
+     * 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

Added: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShapeContainer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShapeContainer.java?rev=1231481&view=auto
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShapeContainer.java (added)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShapeContainer.java Sat Jan
14 11:10:46 2012
@@ -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();
+}

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java?rev=1231481&r1=1231480&r2=1231481&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java Sat Jan 14 11:10:46
2012
@@ -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 
         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(){

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShapeContainer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShapeContainer.java?rev=1231481&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShapeContainer.java
(added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShapeContainer.java
Sat Jan 14 11:10:46 2012
@@ -0,0 +1,64 @@
+/*
+ *  ====================================================================
+ *    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;
+
+import junit.framework.TestCase;
+import org.apache.poi.xslf.XSLFTestDataSamples;
+
+import java.awt.*;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * test common operatrions on containers of shapes (sheets and groups of shapes)
+ *
+ * @author Yegor Kozlov
+ */
+public class TestXSLFShapeContainer extends TestCase {
+
+    public void verifyContainer(XSLFShapeContainer container) {
+        container.clear();
+        assertEquals(0, container.getShapes().length);
+
+        XSLFGroupShape shape1 = container.createGroup();
+        assertEquals(1, container.getShapes().length);
+
+        XSLFTextBox shape2 = container.createTextBox();
+        assertEquals(2, container.getShapes().length);
+
+        XSLFAutoShape shape3 = container.createAutoShape();
+        assertEquals(3, container.getShapes().length);
+
+        XSLFConnectorShape shape4 = container.createConnector();
+        assertEquals(4, container.getShapes().length);
+
+        container.clear();
+        assertEquals(0, container.getShapes().length);
+    }
+
+    public void testSheet() {
+        XMLSlideShow ppt = new XMLSlideShow();
+        XSLFSheet sheet = ppt.createSlide();
+        verifyContainer(sheet);
+
+
+        XSLFGroupShape group = sheet.createGroup();
+        verifyContainer(group);
+
+    }
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org


Mime
View raw message