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