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 000000000..430b1fad6 --- /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 b01ddc160..d4508f5ea 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 ead3387d2..7993d09c2 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 eee8b3db6..f0a8e9b8e 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()) {