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
index 0000000000..430b1fad6c
--- /dev/null
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComments.java
@@ -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 application/vnd.openxmlformats-officedocument.comments+xml
+ * @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;
+ }
+}
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java
index b01ddc160f..d4508f5eab 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java
@@ -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 application/vnd.openxmlformats-officedocument.drawing+xml
- * @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 application/vnd.openxmlformats-officedocument.notes+xml
+ * @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);
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
index ead3387d26..7993d09c26 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
@@ -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(
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
index eee8b3db60..f0a8e9b8e3 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
@@ -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 application/vnd.openxmlformats-officedocument.drawing+xml
- * @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 application/vnd.openxmlformats-officedocument.slide+xml
+ * @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()) {