#58206 - provide a mechanism to find slide layouts by name
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1694340 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a674e638d5
commit
e5069da22a
@ -476,6 +476,24 @@ public class XMLSlideShow extends POIXMLDocument implements SlideShow {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scan the master slides for the first slide layout with the given name.
|
||||||
|
*
|
||||||
|
* @param name The layout name (case-insensitive). Cannot be null.
|
||||||
|
* @return the first layout found or null on failure
|
||||||
|
*/
|
||||||
|
public XSLFSlideLayout findLayout(String name) {
|
||||||
|
for (XSLFSlideMaster master : getSlideMasters()) {
|
||||||
|
XSLFSlideLayout layout = master.getLayout(name);
|
||||||
|
if (layout != null) {
|
||||||
|
return layout;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public XSLFTableStyles getTableStyles(){
|
public XSLFTableStyles getTableStyles(){
|
||||||
return _tableStyles;
|
return _tableStyles;
|
||||||
}
|
}
|
||||||
|
@ -108,6 +108,13 @@ import org.openxmlformats.schemas.presentationml.x2006.main.SldMasterDocument;
|
|||||||
return getLayouts().values().toArray(new XSLFSlideLayout[_layouts.size()]);
|
return getLayouts().values().toArray(new XSLFSlideLayout[_layouts.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the slide layout by type.
|
||||||
|
*
|
||||||
|
* @param type The layout type. Cannot be null.
|
||||||
|
*
|
||||||
|
* @return the layout found or null on failure
|
||||||
|
*/
|
||||||
public XSLFSlideLayout getLayout(SlideLayout type){
|
public XSLFSlideLayout getLayout(SlideLayout type){
|
||||||
for(XSLFSlideLayout layout : getLayouts().values()){
|
for(XSLFSlideLayout layout : getLayouts().values()){
|
||||||
if(layout.getType() == type) {
|
if(layout.getType() == type) {
|
||||||
@ -117,6 +124,18 @@ import org.openxmlformats.schemas.presentationml.x2006.main.SldMasterDocument;
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the slide layout by name.
|
||||||
|
*
|
||||||
|
* @param name The layout name (case-insensitive). Cannot be null.
|
||||||
|
*
|
||||||
|
* @return the layout found or null on failure
|
||||||
|
*/
|
||||||
|
public XSLFSlideLayout getLayout(String name) {
|
||||||
|
return getLayouts().get(name.toLowerCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XSLFTheme getTheme(){
|
public XSLFTheme getTheme(){
|
||||||
if(_theme == null){
|
if(_theme == null){
|
||||||
|
@ -16,9 +16,12 @@
|
|||||||
==================================================================== */
|
==================================================================== */
|
||||||
package org.apache.poi.xslf.usermodel;
|
package org.apache.poi.xslf.usermodel;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertSame;
|
||||||
|
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.POIXMLDocumentPart;
|
import org.apache.poi.POIXMLDocumentPart;
|
||||||
@ -30,7 +33,7 @@ import org.junit.Test;
|
|||||||
*/
|
*/
|
||||||
public class TestXSLFSlideShow {
|
public class TestXSLFSlideShow {
|
||||||
@Test
|
@Test
|
||||||
public void testCreateSlide(){
|
public void testCreateSlide() throws IOException {
|
||||||
XMLSlideShow ppt = new XMLSlideShow();
|
XMLSlideShow ppt = new XMLSlideShow();
|
||||||
assertEquals(0, ppt.getSlides().size());
|
assertEquals(0, ppt.getSlides().size());
|
||||||
|
|
||||||
@ -50,13 +53,16 @@ public class TestXSLFSlideShow {
|
|||||||
assertSame(slide2, ppt.getSlides().get(0));
|
assertSame(slide2, ppt.getSlides().get(0));
|
||||||
assertSame(slide1, ppt.getSlides().get(1));
|
assertSame(slide1, ppt.getSlides().get(1));
|
||||||
|
|
||||||
ppt = XSLFTestDataSamples.writeOutAndReadBack(ppt);
|
XMLSlideShow ppt2 = XSLFTestDataSamples.writeOutAndReadBack(ppt);
|
||||||
assertEquals(2, ppt.getSlides().size());
|
assertEquals(2, ppt2.getSlides().size());
|
||||||
rels = ppt.getSlides().get(0).getRelations();
|
rels = ppt2.getSlides().get(0).getRelations();
|
||||||
|
|
||||||
|
ppt2.close();
|
||||||
|
ppt.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRemoveSlide(){
|
public void testRemoveSlide() throws IOException {
|
||||||
XMLSlideShow ppt = new XMLSlideShow();
|
XMLSlideShow ppt = new XMLSlideShow();
|
||||||
assertEquals(0, ppt.getSlides().size());
|
assertEquals(0, ppt.getSlides().size());
|
||||||
|
|
||||||
@ -73,12 +79,15 @@ public class TestXSLFSlideShow {
|
|||||||
assertEquals(1, ppt.getSlides().size());
|
assertEquals(1, ppt.getSlides().size());
|
||||||
assertSame(slide2, ppt.getSlides().get(0));
|
assertSame(slide2, ppt.getSlides().get(0));
|
||||||
|
|
||||||
ppt = XSLFTestDataSamples.writeOutAndReadBack(ppt);
|
XMLSlideShow ppt2 = XSLFTestDataSamples.writeOutAndReadBack(ppt);
|
||||||
assertEquals(1, ppt.getSlides().size());
|
assertEquals(1, ppt2.getSlides().size());
|
||||||
|
|
||||||
|
ppt2.close();
|
||||||
|
ppt.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDimension(){
|
public void testDimension() throws IOException {
|
||||||
XMLSlideShow ppt = new XMLSlideShow();
|
XMLSlideShow ppt = new XMLSlideShow();
|
||||||
Dimension sz = ppt.getPageSize();
|
Dimension sz = ppt.getPageSize();
|
||||||
assertEquals(720, sz.width);
|
assertEquals(720, sz.width);
|
||||||
@ -87,20 +96,22 @@ public class TestXSLFSlideShow {
|
|||||||
sz = ppt.getPageSize();
|
sz = ppt.getPageSize();
|
||||||
assertEquals(792, sz.width);
|
assertEquals(792, sz.width);
|
||||||
assertEquals(612, sz.height);
|
assertEquals(612, sz.height);
|
||||||
|
ppt.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSlideMasters(){
|
public void testSlideMasters() throws IOException {
|
||||||
XMLSlideShow ppt = new XMLSlideShow();
|
XMLSlideShow ppt = new XMLSlideShow();
|
||||||
List<XSLFSlideMaster> masters = ppt.getSlideMasters();
|
List<XSLFSlideMaster> masters = ppt.getSlideMasters();
|
||||||
assertEquals(1, masters.size());
|
assertEquals(1, masters.size());
|
||||||
|
|
||||||
XSLFSlide slide = ppt.createSlide();
|
XSLFSlide slide = ppt.createSlide();
|
||||||
assertSame(masters.get(0), slide.getSlideMaster());
|
assertSame(masters.get(0), slide.getSlideMaster());
|
||||||
|
ppt.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSlideLayout(){
|
public void testSlideLayout() throws IOException {
|
||||||
XMLSlideShow ppt = new XMLSlideShow();
|
XMLSlideShow ppt = new XMLSlideShow();
|
||||||
List<XSLFSlideMaster> masters = ppt.getSlideMasters();
|
List<XSLFSlideMaster> masters = ppt.getSlideMasters();
|
||||||
assertEquals(1, masters.size());
|
assertEquals(1, masters.size());
|
||||||
@ -110,5 +121,29 @@ public class TestXSLFSlideShow {
|
|||||||
assertNotNull(layout);
|
assertNotNull(layout);
|
||||||
|
|
||||||
assertSame(masters.get(0), layout.getSlideMaster());
|
assertSame(masters.get(0), layout.getSlideMaster());
|
||||||
|
ppt.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSlideLayoutNames() throws IOException {
|
||||||
|
final String names[] = {
|
||||||
|
"Blank", "Title Only", "Section Header", "Picture with Caption", "Title and Content"
|
||||||
|
, "Title Slide", "Title and Vertical Text", "Vertical Title and Text", "Comparison"
|
||||||
|
, "Two Content", "Content with Caption"
|
||||||
|
};
|
||||||
|
XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("layouts.pptx");
|
||||||
|
for (String name : names) {
|
||||||
|
assertNotNull(ppt.findLayout(name));
|
||||||
|
}
|
||||||
|
final SlideLayout layTypes[] = {
|
||||||
|
SlideLayout.BLANK, SlideLayout.TITLE_ONLY, SlideLayout.SECTION_HEADER
|
||||||
|
, SlideLayout.PIC_TX, SlideLayout.TITLE_AND_CONTENT, SlideLayout.TITLE
|
||||||
|
, SlideLayout.VERT_TX, SlideLayout.VERT_TITLE_AND_TX, SlideLayout.TWO_TX_TWO_OBJ
|
||||||
|
, SlideLayout.TWO_OBJ, SlideLayout.OBJ_TX
|
||||||
|
};
|
||||||
|
for (SlideLayout sl : layTypes){
|
||||||
|
assertNotNull(ppt.getSlideMasters().get(0).getLayout(sl));
|
||||||
|
}
|
||||||
|
ppt.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user