aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml/java
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2011-08-12 08:16:02 +0000
committerYegor Kozlov <yegor@apache.org>2011-08-12 08:16:02 +0000
commitf294be3aaf6978bc69311405e9f3bc1a6119a565 (patch)
tree6125c44cc79c12a9ef251b29e5cbd9e95b60f54a /src/ooxml/java
parentead63d1e9cf12436fd534d99a7b8786c0b63e7b1 (diff)
downloadpoi-f294be3aaf6978bc69311405e9f3bc1a6119a565.tar.gz
poi-f294be3aaf6978bc69311405e9f3bc1a6119a565.zip
more XSLF updates
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1157002 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/java')
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java2
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java4
-rwxr-xr-xsrc/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideMaster.java13
-rwxr-xr-xsrc/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTheme.java87
4 files changed, 104 insertions, 2 deletions
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 c546d93dfc..10a35dfeee 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
@@ -107,7 +107,7 @@ public class XSLFRelation extends POIXMLRelation {
"application/vnd.openxmlformats-officedocument.theme+xml",
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",
"/ppt/theme/theme#.xml",
- null
+ XSLFTheme.class
);
public static final XSLFRelation VML_DRAWING = 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 f864344d71..ff4e64d308 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
@@ -23,6 +23,7 @@ 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,8 +36,10 @@ import org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShapeNonVisua
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;
@@ -135,5 +138,4 @@ public final class XSLFSlide extends XSLFSheet {
public boolean getFollowMasterBackground(){
return !_slide.isSetShowMasterSp() || _slide.getShowMasterSp();
}
-
}
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideMaster.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideMaster.java
index d7c86407a2..a0229f9017 100755
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideMaster.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideMaster.java
@@ -52,6 +52,7 @@ import java.util.Map;
public class XSLFSlideMaster extends XSLFSheet {
private CTSlideMaster _slide;
private Map<String, XSLFSlideLayout> _layouts;
+ private XSLFTheme _theme;
XSLFSlideMaster() {
super();
@@ -87,4 +88,16 @@ import java.util.Map;
}
return _layouts.get(name);
}
+
+ public XSLFTheme getTheme(){
+ if(_theme == null){
+ for (POIXMLDocumentPart p : getRelations()) {
+ if (p instanceof XSLFTheme){
+ _theme = (XSLFTheme)p;
+ break;
+ }
+ }
+ }
+ return _theme;
+ }
} \ No newline at end of file
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTheme.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTheme.java
new file mode 100755
index 0000000000..d107b3a27f
--- /dev/null
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTheme.java
@@ -0,0 +1,87 @@
+/* ====================================================================
+ 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 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.poi.util.Internal;
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlOptions;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideLayout;
+import org.openxmlformats.schemas.presentationml.x2006.main.SldLayoutDocument;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideMaster;
+import org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTOfficeStyleSheet;
+import org.openxmlformats.schemas.officeDocument.x2006.relationships.STRelationshipId;
+
+import javax.xml.namespace.QName;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Map;
+import java.util.HashMap;
+
+@Beta
+public class XSLFTheme extends POIXMLDocumentPart {
+ private CTOfficeStyleSheet _theme;
+
+ XSLFTheme() {
+ super();
+ _theme = CTOfficeStyleSheet.Factory.newInstance();
+ }
+
+ public XSLFTheme(PackagePart part, PackageRelationship rel) throws IOException, XmlException {
+ super(part, rel);
+ ThemeDocument doc =
+ ThemeDocument.Factory.parse(getPackagePart().getInputStream());
+ _theme = doc.getTheme();
+ }
+
+
+ public String getName(){
+ return _theme.getName();
+ }
+
+ public void setName(String name){
+ _theme.setName(name);
+ }
+
+ /**
+ * While developing only!
+ */
+ @Internal
+ public CTOfficeStyleSheet getXmlObject() {
+ return _theme;
+ }
+
+ protected final void commit() throws IOException {
+ XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
+
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("http://schemas.openxmlformats.org/drawingml/2006/main", "a");
+ xmlOptions.setSaveSuggestedPrefixes(map);
+ xmlOptions.setSaveSyntheticDocumentElement(
+ new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "theme"));
+
+ PackagePart part = getPackagePart();
+ OutputStream out = part.getOutputStream();
+ getXmlObject().save(out, xmlOptions);
+ out.close();
+ }
+
+} \ No newline at end of file