You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2011/09/04 22:29:17 UTC

svn commit: r1165105 - in /poi/trunk/src/ooxml: java/org/apache/poi/xslf/usermodel/ testcases/org/apache/poi/xslf/usermodel/

Author: nick
Date: Sun Sep  4 20:29:17 2011
New Revision: 1165105

URL: http://svn.apache.org/viewvc?rev=1165105&view=rev
Log:
Basic XSLF support for slide notes

Added:
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java
Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java?rev=1165105&r1=1165104&r2=1165105&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java Sun Sep  4 20:29:17 2011
@@ -16,23 +16,32 @@
 ==================================================================== */
 package org.apache.poi.xslf.usermodel;
 
+import java.awt.Dimension;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
 import org.apache.poi.POIXMLDocument;
 import org.apache.poi.POIXMLDocumentPart;
 import org.apache.poi.POIXMLException;
-import org.apache.poi.xslf.XSLFSlideShow;
 import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.PackagePartName;
 import org.apache.poi.openxml4j.opc.TargetMode;
-import org.apache.poi.sl.usermodel.Slide;
-import org.apache.poi.sl.usermodel.SlideShow;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
 import org.apache.poi.util.PackageHelper;
 import org.apache.poi.util.Units;
+import org.apache.poi.xslf.XSLFSlideShow;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlOptions;
 import org.openxmlformats.schemas.officeDocument.x2006.relationships.STRelationshipId;
@@ -42,17 +51,6 @@ import org.openxmlformats.schemas.presen
 import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideSize;
 import org.openxmlformats.schemas.presentationml.x2006.main.PresentationDocument;
 
-import java.awt.*;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Pattern;
-
 /**
  * High level representation of a ooxml slideshow.
  * This is the first object most users will construct whether
@@ -61,12 +59,12 @@ import java.util.regex.Pattern;
  */
 @Beta
 public class XMLSlideShow  extends POIXMLDocument {
-
     private static POILogger _logger = POILogFactory.getLogger(XMLSlideShow.class);
 
     private CTPresentation _presentation;
     private List<XSLFSlide> _slides;
     private Map<String, XSLFSlideMaster> _masters;
+    private XSLFNotesMaster _notesMaster;
     protected List<XSLFPictureData> _pictures;
 
     public XMLSlideShow() {
@@ -122,9 +120,11 @@ public class XMLSlideShow  extends POIXM
             for (POIXMLDocumentPart p : getRelations()) {
                 if (p instanceof XSLFSlide) {
                     shIdMap.put(p.getPackageRelationship().getId(), (XSLFSlide) p);
-                } else if (p instanceof XSLFSlideMaster){
+                } else if (p instanceof XSLFSlideMaster) {
                     XSLFSlideMaster master = (XSLFSlideMaster)p;
                     _masters.put(p.getPackageRelationship().getId(), master);
+                } else if (p instanceof XSLFNotesMaster) {
+                    _notesMaster = (XSLFNotesMaster)p;
                 }
             }
 
@@ -218,6 +218,10 @@ public class XMLSlideShow  extends POIXM
         _slides.add(slide);
         return slide;
     }
+    
+    public XSLFNotesMaster getNotesMaster() {
+        return _notesMaster; 
+    }
 
     public XSLFSlideMaster[] getSlideMasters() {
         return _masters.values().toArray(new XSLFSlideMaster[_masters.size()]);

Added: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java?rev=1165105&view=auto
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java (added)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java Sun Sep  4 20:29:17 2011
@@ -0,0 +1,78 @@
+/* ====================================================================
+   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 java.io.IOException;
+
+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.presentationml.x2006.main.CTCommonSlideData;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTNotesSlide;
+import org.openxmlformats.schemas.presentationml.x2006.main.NotesDocument;
+
+@Beta
+public final class XSLFNotes extends XSLFSheet {
+   private CTNotesSlide _notes;
+
+    /**
+     * Create a new slide
+     */
+    XSLFNotes() {
+        super();
+        _notes = prototype();
+        setCommonSlideData(_notes.getCSld());
+    }
+
+    /**
+     * Construct a SpreadsheetML drawing from a package part
+     *
+     * @param part the package part holding the drawing data,
+     * the content type must be <code>application/vnd.openxmlformats-officedocument.drawing+xml</code>
+     * @param rel  the package relationship holding this drawing,
+     * the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing
+     */
+    XSLFNotes(PackagePart part, PackageRelationship rel) throws IOException, XmlException {
+        super(part, rel);
+
+        NotesDocument doc =
+            NotesDocument.Factory.parse(getPackagePart().getInputStream());
+        _notes = doc.getNotes();
+        setCommonSlideData(_notes.getCSld());
+    }
+
+
+    private static CTNotesSlide prototype(){
+        CTNotesSlide ctNotes = CTNotesSlide.Factory.newInstance();
+        CTCommonSlideData cSld = ctNotes.addNewCSld();
+
+        // TODO What else is needed for a mininum notes?
+
+        return ctNotes;
+    }
+
+    @Override
+    public CTNotesSlide getXmlObject() {
+       return _notes;
+    }
+
+    @Override
+    protected String getRootElementName(){
+        return "notes";        
+    }
+}

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java?rev=1165105&r1=1165104&r2=1165105&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java Sun Sep  4 20:29:17 2011
@@ -73,7 +73,8 @@ public class XSLFRelation extends POIXML
    public static final XSLFRelation NOTES = new XSLFRelation(
            "application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml",
            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide", 
-           null, null
+           "/ppt/notesSlides/notesSlide#.xml",
+           XSLFNotes.class
    );
    
    public static final XSLFRelation SLIDE = new XSLFRelation(

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java?rev=1165105&r1=1165104&r2=1165105&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java Sun Sep  4 20:29:17 2011
@@ -16,14 +16,12 @@
 ==================================================================== */
 package org.apache.poi.xslf.usermodel;
 
+import java.io.IOException;
+
 import org.apache.poi.POIXMLDocumentPart;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.PackageRelationship;
-import org.apache.poi.openxml4j.opc.PackagePartName;
-import org.apache.poi.openxml4j.opc.TargetMode;
-import org.apache.poi.sl.usermodel.Slide;
 import org.apache.poi.util.Beta;
-import org.apache.poi.util.IOUtils;
 import org.apache.xmlbeans.XmlException;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTGroupShapeProperties;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTGroupTransform2D;
@@ -35,18 +33,12 @@ import org.openxmlformats.schemas.presen
 import org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShapeNonVisual;
 import org.openxmlformats.schemas.presentationml.x2006.main.CTSlide;
 import org.openxmlformats.schemas.presentationml.x2006.main.SldDocument;
-import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideMasterIdListEntry;
-import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideLayoutIdListEntry;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.List;
-import java.util.regex.Pattern;
 
 @Beta
 public final class XSLFSlide extends XSLFSheet {
-	private final CTSlide _slide;
-    private XSLFSlideLayout _layout;
+   private final CTSlide _slide;
+   private XSLFSlideLayout _layout;
+   private XSLFNotes _notes;
 
     /**
      * Create a new slide
@@ -54,6 +46,7 @@ public final class XSLFSlide extends XSL
     XSLFSlide() {
         super();
         _slide = prototype();
+        setCommonSlideData(_slide.getCSld());
     }
 
     /**
@@ -131,6 +124,22 @@ public final class XSLFSlide extends XSL
         }
         return _layout;
     }
+    
+    public XSLFNotes getNotes() {
+       if(_notes == null) {
+          for (POIXMLDocumentPart p : getRelations()) {
+             if (p instanceof XSLFNotes){
+                _notes = (XSLFNotes)p;
+             }
+          }
+       }
+       if(_notes == null) {
+          // This slide lacks notes
+          // Not al have them, sorry...
+          return null;
+       }
+       return _notes;
+    }
 
     public void setFollowMasterBackground(boolean value){
         _slide.setShowMasterSp(value);    

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java?rev=1165105&r1=1165104&r2=1165105&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java Sun Sep  4 20:29:17 2011
@@ -83,12 +83,11 @@ public class TestXMLSlideShow extends Te
 
       // Now get those objects
       assertNotNull(xml.getSlides()[0]);
-      assertNotNull(xml.getSlides()[0]);
+      assertNotNull(xml.getSlides()[1]);
 
       // And check they have notes as expected
-      // TODO
-//    assertNotNull(xml.getNotes(slides[0]));
-//    assertNotNull(xml.getNotes(slides[1]));
+      assertNotNull(xml.getSlides()[0].getNotes());
+      assertNotNull(xml.getSlides()[1].getNotes());
 
       // Next up look for the slide master
       CTSlideMasterIdListEntry[] masters = new CTSlideMasterIdListEntry[
@@ -103,8 +102,9 @@ public class TestXMLSlideShow extends Te
       CTNotesMasterIdListEntry notesMaster =
          xml.getCTPresentation().getNotesMasterIdLst().getNotesMasterId();
       assertNotNull(notesMaster);
-      // TODO Get the wrapper
-	}
+
+      assertNotNull(xml.getNotesMaster());
+   }
 	
    public void testMetadataBasics() throws Exception {
       XMLSlideShow xml = new XMLSlideShow(pack);



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