]> source.dussan.org Git - poi.git/commitdiff
Add XSLF access to slide comments, and fix some code comments
authorNick Burch <nick@apache.org>
Sun, 4 Sep 2011 20:45:10 +0000 (20:45 +0000)
committerNick Burch <nick@apache.org>
Sun, 4 Sep 2011 20:45:10 +0000 (20:45 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1165108 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComments.java [new file with mode: 0644]
src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java
src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java

diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComments.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComments.java
new file mode 100644 (file)
index 0000000..430b1fa
--- /dev/null
@@ -0,0 +1,62 @@
+/* ====================================================================
+   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.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.presentationml.x2006.main.CTCommentList;
+import org.openxmlformats.schemas.presentationml.x2006.main.CmLstDocument;
+
+@Beta
+public class XSLFComments extends POIXMLDocumentPart {
+    private final CTCommentList _comments;
+    
+    /**
+     * Create a new set of slide comments
+     */
+    XSLFComments() {
+       super();
+       CmLstDocument doc = CmLstDocument.Factory.newInstance();
+       _comments = doc.addNewCmLst();
+    }
+
+    /**
+     * Construct a SpreadsheetML slide comments from a package part
+     *
+     * @param part the package part holding the comments data,
+     * the content type must be <code>application/vnd.openxmlformats-officedocument.comments+xml</code>
+     * @param rel  the package relationship holding this comments,
+     * the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments
+     */
+    XSLFComments(PackagePart part, PackageRelationship rel) throws IOException, XmlException {
+        super(part, rel);
+
+        CmLstDocument doc =
+           CmLstDocument.Factory.parse(getPackagePart().getInputStream());
+        _comments = doc.getCmLst();
+    }
+    
+    public CTCommentList getCTCommentsList() {
+       return _comments;
+    }
+}
index b01ddc160febc20dad61152cc8a34d739b809111..d4508f5eab107ac6086c038303716a8e327f4ff0 100644 (file)
@@ -31,7 +31,7 @@ public final class XSLFNotes extends XSLFSheet {
    private CTNotesSlide _notes;
 
     /**
-     * Create a new slide
+     * Create a new notes
      */
     XSLFNotes() {
         super();
@@ -40,12 +40,12 @@ public final class XSLFNotes extends XSLFSheet {
     }
 
     /**
-     * Construct a SpreadsheetML drawing from a package part
+     * Construct a SpreadsheetML notes 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
+     * @param part the package part holding the notes data,
+     * the content type must be <code>application/vnd.openxmlformats-officedocument.notes+xml</code>
+     * @param rel  the package relationship holding this notes,
+     * the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/notes
      */
     XSLFNotes(PackagePart part, PackageRelationship rel) throws IOException, XmlException {
         super(part, rel);
index ead3387d26dc86d235cb66d2b79e2b5f6d2a9e61..7993d09c26d2bfbe8b23c4344fecf5a2e597827d 100644 (file)
@@ -108,7 +108,8 @@ public class XSLFRelation extends POIXMLRelation {
    public static final XSLFRelation COMMENTS = new XSLFRelation(
          "application/vnd.openxmlformats-officedocument.presentationml.comments+xml",
          "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",
-         null, null
+         "/ppt/comments/comment#.xml",
+         XSLFComments.class
    );
    
     public static final XSLFRelation HYPERLINK = new XSLFRelation(
index eee8b3db603342c63fa0e10b55d1ef35fecb2b36..f0a8e9b8e34501bf80b0c363748ab7f1126e4f56 100644 (file)
@@ -38,6 +38,7 @@ import org.openxmlformats.schemas.presentationml.x2006.main.SldDocument;
 public final class XSLFSlide extends XSLFSheet {
    private final CTSlide _slide;
    private XSLFSlideLayout _layout;
+   private XSLFComments _comments;
    private XSLFNotes _notes;
 
     /**
@@ -50,12 +51,12 @@ public final class XSLFSlide extends XSLFSheet {
     }
 
     /**
-     * Construct a SpreadsheetML drawing from a package part
+     * Construct a SpreadsheetML slide 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
+     * @param part the package part holding the slide data,
+     * the content type must be <code>application/vnd.openxmlformats-officedocument.slide+xml</code>
+     * @param rel  the package relationship holding this slide,
+     * the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide
      */
     XSLFSlide(PackagePart part, PackageRelationship rel) throws IOException, XmlException {
         super(part, rel);
@@ -125,6 +126,22 @@ public final class XSLFSlide extends XSLFSheet {
         return _layout;
     }
     
+    public XSLFComments getComments() {
+       if(_comments == null) {
+          for (POIXMLDocumentPart p : getRelations()) {
+             if (p instanceof XSLFComments) {
+                _comments = (XSLFComments)p;
+             }
+          }
+       }
+       if(_comments == null) {
+          // This slide lacks comments
+          // Not all have them, sorry...
+          return null;
+       }
+       return _comments;
+    }
+
     public XSLFNotes getNotes() {
        if(_notes == null) {
           for (POIXMLDocumentPart p : getRelations()) {