]> source.dussan.org Git - poi.git/commitdiff
initial support for table styles in XSLF
authorYegor Kozlov <yegor@apache.org>
Sat, 10 Sep 2011 10:50:05 +0000 (10:50 +0000)
committerYegor Kozlov <yegor@apache.org>
Sat, 10 Sep 2011 10:50:05 +0000 (10:50 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1167491 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableStyle.java [new file with mode: 0644]
src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableStyles.java [new file with mode: 0644]
src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableStyles.java [new file with mode: 0644]

index 6682420486d6149d835e4ec63159514e42df5fe0..2491f68a78c8021ec832011c9c72bdaeecbc58c4 100644 (file)
@@ -64,9 +64,10 @@ public class XMLSlideShow  extends POIXMLDocument {
     private CTPresentation _presentation;
     private List<XSLFSlide> _slides;
     private Map<String, XSLFSlideMaster> _masters;
+    private List<XSLFPictureData> _pictures;
+    private XSLFTableStyles _tableStyles;
     private XSLFNotesMaster _notesMaster;
     private XSLFCommentAuthors _commentAuthors;
-    protected List<XSLFPictureData> _pictures;
 
     public XMLSlideShow() {
         this(empty());
@@ -124,6 +125,8 @@ public class XMLSlideShow  extends POIXMLDocument {
                 } else if (p instanceof XSLFSlideMaster) {
                     XSLFSlideMaster master = (XSLFSlideMaster)p;
                     _masters.put(p.getPackageRelationship().getId(), master);
+                }else if (p instanceof XSLFTableStyles){
+                    _tableStyles = (XSLFTableStyles)p;
                 } else if (p instanceof XSLFNotesMaster) {
                     _notesMaster = (XSLFNotesMaster)p;
                 } else if (p instanceof XSLFCommentAuthors) {
@@ -335,4 +338,8 @@ public class XMLSlideShow  extends POIXMLDocument {
         return imageNumber - 1;
     }
 
+    public XSLFTableStyles getTableStyles(){
+        return _tableStyles;
+    }
+
 }
index 0d691e44dd8dcf6d5e24d93394ec314e531e0e69..a1d1b51100ac44666f2482fd63c9d00b2bb0685e 100644 (file)
@@ -190,6 +190,13 @@ public class XSLFRelation extends POIXMLRelation {
                null
     );
 
+    public static final XSLFRelation TABLE_STYLES = new XSLFRelation(
+          "application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml",
+          "http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles",
+          "/ppt/tableStyles.xml",
+          XSLFTableStyles.class
+    );
+
    private XSLFRelation(String type, String rel, String defaultName, Class<? extends POIXMLDocumentPart> cls) {
       super(type, rel, defaultName, cls);
 
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableStyle.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableStyle.java
new file mode 100644 (file)
index 0000000..3184031
--- /dev/null
@@ -0,0 +1,47 @@
+/*\r
+ *  ====================================================================\r
+ *    Licensed to the Apache Software Foundation (ASF) under one or more\r
+ *    contributor license agreements.  See the NOTICE file distributed with\r
+ *    this work for additional information regarding copyright ownership.\r
+ *    The ASF licenses this file to You under the Apache License, Version 2.0\r
+ *    (the "License"); you may not use this file except in compliance with\r
+ *    the License.  You may obtain a copy of the License at\r
+ *\r
+ *        http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ *    Unless required by applicable law or agreed to in writing, software\r
+ *    distributed under the License is distributed on an "AS IS" BASIS,\r
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ *    See the License for the specific language governing permissions and\r
+ *    limitations under the License.\r
+ * ====================================================================\r
+ */\r
+\r
+package org.apache.poi.xslf.usermodel;\r
+\r
+import org.openxmlformats.schemas.drawingml.x2006.main.CTTableStyle;\r
+\r
+/**\r
+ * Represents a table in a .pptx presentation\r
+ *\r
+ * @author Yegor Kozlov\r
+ */\r
+public class XSLFTableStyle {\r
+    private CTTableStyle _tblStyle;\r
+\r
+    /*package*/ XSLFTableStyle(CTTableStyle style){\r
+        _tblStyle = style;\r
+    }\r
+\r
+    public CTTableStyle getXmlObject(){\r
+        return _tblStyle;\r
+    }\r
+\r
+    public String getStyleName(){\r
+        return _tblStyle.getStyleName();\r
+    }\r
+\r
+    public String getStyleId(){\r
+        return _tblStyle.getStyleId();\r
+    }\r
+}
\ No newline at end of file
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableStyles.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableStyles.java
new file mode 100644 (file)
index 0000000..154f25e
--- /dev/null
@@ -0,0 +1,63 @@
+/* ====================================================================
+   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 org.apache.poi.POIXMLDocumentPart;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.util.Beta;
+import org.apache.xmlbeans.XmlException;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTTableStyle;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTTableStyleList;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Collections;
+
+@Beta
+public class XSLFTableStyles extends POIXMLDocumentPart implements Iterable<XSLFTableStyle>{
+    private CTTableStyleList _tblStyleLst;
+    private List<XSLFTableStyle> _styles;
+
+    public XSLFTableStyles(){
+        super();
+    }
+
+    public XSLFTableStyles(PackagePart part, PackageRelationship rel) throws IOException, XmlException {
+        super(part, rel);
+
+        _tblStyleLst = CTTableStyleList.Factory.parse(getPackagePart().getInputStream());
+        _styles = new ArrayList<XSLFTableStyle>(_tblStyleLst.sizeOfTblStyleArray());
+        for(CTTableStyle c : _tblStyleLst.getTblStyleList()){
+            _styles.add(new XSLFTableStyle(c));
+        }
+    }
+
+    public CTTableStyleList getXmlObject(){
+        return _tblStyleLst;
+    }
+
+    public Iterator<XSLFTableStyle> iterator(){
+        return _styles.iterator();
+    }
+
+    public List<XSLFTableStyle> getStyles(){
+        return Collections.unmodifiableList(_styles);
+    }
+}
\ No newline at end of file
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableStyles.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableStyles.java
new file mode 100644 (file)
index 0000000..73b488b
--- /dev/null
@@ -0,0 +1,42 @@
+/* ====================================================================\r
+   Licensed to the Apache Software Foundation (ASF) under one or more\r
+   contributor license agreements.  See the NOTICE file distributed with\r
+   this work for additional information regarding copyright ownership.\r
+   The ASF licenses this file to You under the Apache License, Version 2.0\r
+   (the "License"); you may not use this file except in compliance with\r
+   the License.  You may obtain a copy of the License at\r
+\r
+       http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+   Unless required by applicable law or agreed to in writing, software\r
+   distributed under the License is distributed on an "AS IS" BASIS,\r
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+   See the License for the specific language governing permissions and\r
+   limitations under the License.\r
+==================================================================== */\r
+package org.apache.poi.xslf.usermodel;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import java.awt.*;\r
+import java.awt.geom.Ellipse2D;\r
+import java.awt.geom.GeneralPath;\r
+import java.util.*;\r
+import java.util.List;\r
+\r
+import org.apache.poi.xslf.XSLFTestDataSamples;\r
+import org.openxmlformats.schemas.presentationml.x2006.main.CTGraphicalObjectFrame;\r
+\r
+/**\r
+ * @author Yegor Kozlov\r
+ */\r
+public class TestXSLFTableStyles extends TestCase {\r
+\r
+    public void testRead(){\r
+        XMLSlideShow  ppt = new XMLSlideShow();\r
+        XSLFTableStyles tblStyles = ppt.getTableStyles();\r
+        assertNotNull(tblStyles);\r
+\r
+        assertEquals(10, tblStyles.getStyles().size());\r
+    }\r
+}
\ No newline at end of file