1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski // __________ Imports __________ 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 27*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent; 28*b1cdbd2cSJim Jagielski import com.sun.star.lang.XServiceInfo; 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski import com.sun.star.awt.Size; 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet; 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPage; 35*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPages; 36*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XDrawPagesSupplier; 37*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XMasterPageTarget; 38*b1cdbd2cSJim Jagielski import com.sun.star.drawing.XMasterPagesSupplier; 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim Jagielski import com.sun.star.presentation.XPresentationPage; 41*b1cdbd2cSJim Jagielski import com.sun.star.presentation.XHandoutMasterSupplier; 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski public class PageHelper 45*b1cdbd2cSJim Jagielski { 46*b1cdbd2cSJim Jagielski // __________ static helper methods __________ 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski // __________ draw pages __________ 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski /** get the page count for standard pages 51*b1cdbd2cSJim Jagielski */ getDrawPageCount( XComponent xComponent )52*b1cdbd2cSJim Jagielski static public int getDrawPageCount( XComponent xComponent ) 53*b1cdbd2cSJim Jagielski { 54*b1cdbd2cSJim Jagielski XDrawPagesSupplier xDrawPagesSupplier = 55*b1cdbd2cSJim Jagielski (XDrawPagesSupplier)UnoRuntime.queryInterface( 56*b1cdbd2cSJim Jagielski XDrawPagesSupplier.class, xComponent ); 57*b1cdbd2cSJim Jagielski XDrawPages xDrawPages = xDrawPagesSupplier.getDrawPages(); 58*b1cdbd2cSJim Jagielski return xDrawPages.getCount(); 59*b1cdbd2cSJim Jagielski } 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski /** get draw page by index 62*b1cdbd2cSJim Jagielski */ getDrawPageByIndex( XComponent xComponent, int nIndex )63*b1cdbd2cSJim Jagielski static public XDrawPage getDrawPageByIndex( XComponent xComponent, int nIndex ) 64*b1cdbd2cSJim Jagielski throws com.sun.star.lang.IndexOutOfBoundsException, 65*b1cdbd2cSJim Jagielski com.sun.star.lang.WrappedTargetException 66*b1cdbd2cSJim Jagielski { 67*b1cdbd2cSJim Jagielski XDrawPagesSupplier xDrawPagesSupplier = 68*b1cdbd2cSJim Jagielski (XDrawPagesSupplier)UnoRuntime.queryInterface( 69*b1cdbd2cSJim Jagielski XDrawPagesSupplier.class, xComponent ); 70*b1cdbd2cSJim Jagielski XDrawPages xDrawPages = xDrawPagesSupplier.getDrawPages(); 71*b1cdbd2cSJim Jagielski return (XDrawPage)UnoRuntime.queryInterface(XDrawPage.class, xDrawPages.getByIndex( nIndex )); 72*b1cdbd2cSJim Jagielski } 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski /** creates and inserts a draw page into the giving position, 75*b1cdbd2cSJim Jagielski the method returns the new created page 76*b1cdbd2cSJim Jagielski */ insertNewDrawPageByIndex( XComponent xComponent, int nIndex )77*b1cdbd2cSJim Jagielski static public XDrawPage insertNewDrawPageByIndex( XComponent xComponent, int nIndex ) 78*b1cdbd2cSJim Jagielski throws Exception 79*b1cdbd2cSJim Jagielski { 80*b1cdbd2cSJim Jagielski XDrawPagesSupplier xDrawPagesSupplier = 81*b1cdbd2cSJim Jagielski (XDrawPagesSupplier)UnoRuntime.queryInterface( 82*b1cdbd2cSJim Jagielski XDrawPagesSupplier.class, xComponent ); 83*b1cdbd2cSJim Jagielski XDrawPages xDrawPages = xDrawPagesSupplier.getDrawPages(); 84*b1cdbd2cSJim Jagielski return xDrawPages.insertNewByIndex( nIndex ); 85*b1cdbd2cSJim Jagielski } 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski /** removes the given page 88*b1cdbd2cSJim Jagielski */ removeDrawPage( XComponent xComponent, XDrawPage xDrawPage )89*b1cdbd2cSJim Jagielski static public void removeDrawPage( XComponent xComponent, XDrawPage xDrawPage ) 90*b1cdbd2cSJim Jagielski { 91*b1cdbd2cSJim Jagielski XDrawPagesSupplier xDrawPagesSupplier = 92*b1cdbd2cSJim Jagielski (XDrawPagesSupplier)UnoRuntime.queryInterface( 93*b1cdbd2cSJim Jagielski XDrawPagesSupplier.class, xComponent ); 94*b1cdbd2cSJim Jagielski XDrawPages xDrawPages = xDrawPagesSupplier.getDrawPages(); 95*b1cdbd2cSJim Jagielski xDrawPages.remove( xDrawPage ); 96*b1cdbd2cSJim Jagielski } 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski /** get size of the given page 99*b1cdbd2cSJim Jagielski */ getPageSize( XDrawPage xDrawPage )100*b1cdbd2cSJim Jagielski static public Size getPageSize( XDrawPage xDrawPage ) 101*b1cdbd2cSJim Jagielski throws com.sun.star.beans.UnknownPropertyException, 102*b1cdbd2cSJim Jagielski com.sun.star.lang.WrappedTargetException 103*b1cdbd2cSJim Jagielski { 104*b1cdbd2cSJim Jagielski XPropertySet xPageProperties = (XPropertySet) 105*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface( XPropertySet.class, xDrawPage ); 106*b1cdbd2cSJim Jagielski return new Size( 107*b1cdbd2cSJim Jagielski ((Integer)xPageProperties.getPropertyValue( "Width" )).intValue(), 108*b1cdbd2cSJim Jagielski ((Integer)xPageProperties.getPropertyValue( "Height" )).intValue() ); 109*b1cdbd2cSJim Jagielski } 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski // __________ master pages __________ 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski /** get the page count for master pages 114*b1cdbd2cSJim Jagielski */ getMasterPageCount( XComponent xComponent )115*b1cdbd2cSJim Jagielski static public int getMasterPageCount( XComponent xComponent ) 116*b1cdbd2cSJim Jagielski { 117*b1cdbd2cSJim Jagielski XMasterPagesSupplier xMasterPagesSupplier = 118*b1cdbd2cSJim Jagielski (XMasterPagesSupplier)UnoRuntime.queryInterface( 119*b1cdbd2cSJim Jagielski XMasterPagesSupplier.class, xComponent ); 120*b1cdbd2cSJim Jagielski XDrawPages xDrawPages = xMasterPagesSupplier.getMasterPages(); 121*b1cdbd2cSJim Jagielski return xDrawPages.getCount(); 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski /** get master page by index 125*b1cdbd2cSJim Jagielski */ getMasterPageByIndex( XComponent xComponent, int nIndex )126*b1cdbd2cSJim Jagielski static public XDrawPage getMasterPageByIndex( XComponent xComponent, int nIndex ) 127*b1cdbd2cSJim Jagielski throws com.sun.star.lang.IndexOutOfBoundsException, 128*b1cdbd2cSJim Jagielski com.sun.star.lang.WrappedTargetException 129*b1cdbd2cSJim Jagielski { 130*b1cdbd2cSJim Jagielski XMasterPagesSupplier xMasterPagesSupplier = 131*b1cdbd2cSJim Jagielski (XMasterPagesSupplier)UnoRuntime.queryInterface( 132*b1cdbd2cSJim Jagielski XMasterPagesSupplier.class, xComponent ); 133*b1cdbd2cSJim Jagielski XDrawPages xDrawPages = xMasterPagesSupplier.getMasterPages(); 134*b1cdbd2cSJim Jagielski return (XDrawPage)UnoRuntime.queryInterface(XDrawPage.class, xDrawPages.getByIndex( nIndex )); 135*b1cdbd2cSJim Jagielski } 136*b1cdbd2cSJim Jagielski 137*b1cdbd2cSJim Jagielski /** creates and inserts a new master page into the giving position, 138*b1cdbd2cSJim Jagielski the method returns the new created page 139*b1cdbd2cSJim Jagielski */ insertNewMasterPageByIndex( XComponent xComponent, int nIndex )140*b1cdbd2cSJim Jagielski static public XDrawPage insertNewMasterPageByIndex( XComponent xComponent, int nIndex ) 141*b1cdbd2cSJim Jagielski { 142*b1cdbd2cSJim Jagielski XMasterPagesSupplier xMasterPagesSupplier = 143*b1cdbd2cSJim Jagielski (XMasterPagesSupplier)UnoRuntime.queryInterface( 144*b1cdbd2cSJim Jagielski XMasterPagesSupplier.class, xComponent ); 145*b1cdbd2cSJim Jagielski XDrawPages xDrawPages = xMasterPagesSupplier.getMasterPages(); 146*b1cdbd2cSJim Jagielski return xDrawPages.insertNewByIndex( nIndex ); 147*b1cdbd2cSJim Jagielski } 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski /** removes the given page 150*b1cdbd2cSJim Jagielski */ removeMasterPage( XComponent xComponent, XDrawPage xDrawPage )151*b1cdbd2cSJim Jagielski static public void removeMasterPage( XComponent xComponent, XDrawPage xDrawPage ) 152*b1cdbd2cSJim Jagielski { 153*b1cdbd2cSJim Jagielski XMasterPagesSupplier xMasterPagesSupplier = 154*b1cdbd2cSJim Jagielski (XMasterPagesSupplier)UnoRuntime.queryInterface( 155*b1cdbd2cSJim Jagielski XMasterPagesSupplier.class, xComponent ); 156*b1cdbd2cSJim Jagielski XDrawPages xDrawPages = xMasterPagesSupplier.getMasterPages(); 157*b1cdbd2cSJim Jagielski xDrawPages.remove( xDrawPage ); 158*b1cdbd2cSJim Jagielski } 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski /** return the corresponding masterpage for the giving drawpage 161*b1cdbd2cSJim Jagielski */ getMasterPage( XDrawPage xDrawPage )162*b1cdbd2cSJim Jagielski static public XDrawPage getMasterPage( XDrawPage xDrawPage ) 163*b1cdbd2cSJim Jagielski { 164*b1cdbd2cSJim Jagielski XMasterPageTarget xMasterPageTarget = 165*b1cdbd2cSJim Jagielski (XMasterPageTarget)UnoRuntime.queryInterface( 166*b1cdbd2cSJim Jagielski XMasterPageTarget.class, xDrawPage ); 167*b1cdbd2cSJim Jagielski return xMasterPageTarget.getMasterPage(); 168*b1cdbd2cSJim Jagielski } 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski /** sets given masterpage at the drawpage 171*b1cdbd2cSJim Jagielski */ setMasterPage( XDrawPage xDrawPage, XDrawPage xMasterPage )172*b1cdbd2cSJim Jagielski static public void setMasterPage( XDrawPage xDrawPage, XDrawPage xMasterPage ) 173*b1cdbd2cSJim Jagielski { 174*b1cdbd2cSJim Jagielski XMasterPageTarget xMasterPageTarget = 175*b1cdbd2cSJim Jagielski (XMasterPageTarget)UnoRuntime.queryInterface( 176*b1cdbd2cSJim Jagielski XMasterPageTarget.class, xDrawPage ); 177*b1cdbd2cSJim Jagielski xMasterPageTarget.setMasterPage( xMasterPage ); 178*b1cdbd2cSJim Jagielski } 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski // __________ presentation pages __________ 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski /** test if a Presentation Document is supported. 183*b1cdbd2cSJim Jagielski This is important, because only presentation documents 184*b1cdbd2cSJim Jagielski have notes and handout pages 185*b1cdbd2cSJim Jagielski */ isImpressDocument( XComponent xComponent )186*b1cdbd2cSJim Jagielski static public boolean isImpressDocument( XComponent xComponent ) 187*b1cdbd2cSJim Jagielski { 188*b1cdbd2cSJim Jagielski XServiceInfo xInfo = (XServiceInfo)UnoRuntime.queryInterface( 189*b1cdbd2cSJim Jagielski XServiceInfo.class, xComponent ); 190*b1cdbd2cSJim Jagielski return xInfo.supportsService( "com.sun.star.presentation.PresentationDocument" ); 191*b1cdbd2cSJim Jagielski } 192*b1cdbd2cSJim Jagielski 193*b1cdbd2cSJim Jagielski /** in impress documents each normal draw page has a corresponding notes page 194*b1cdbd2cSJim Jagielski */ getNotesPage( XDrawPage xDrawPage )195*b1cdbd2cSJim Jagielski static public XDrawPage getNotesPage( XDrawPage xDrawPage ) 196*b1cdbd2cSJim Jagielski { 197*b1cdbd2cSJim Jagielski XPresentationPage aPresentationPage = 198*b1cdbd2cSJim Jagielski (XPresentationPage)UnoRuntime.queryInterface( 199*b1cdbd2cSJim Jagielski XPresentationPage.class, xDrawPage ); 200*b1cdbd2cSJim Jagielski return aPresentationPage.getNotesPage(); 201*b1cdbd2cSJim Jagielski } 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski /** in impress each documents has one handout page 204*b1cdbd2cSJim Jagielski */ getHandoutMasterPage( XComponent xComponent )205*b1cdbd2cSJim Jagielski static public XDrawPage getHandoutMasterPage( XComponent xComponent ) 206*b1cdbd2cSJim Jagielski { 207*b1cdbd2cSJim Jagielski XHandoutMasterSupplier aHandoutMasterSupplier = 208*b1cdbd2cSJim Jagielski (XHandoutMasterSupplier)UnoRuntime.queryInterface( 209*b1cdbd2cSJim Jagielski XHandoutMasterSupplier.class, xComponent ); 210*b1cdbd2cSJim Jagielski return aHandoutMasterSupplier.getHandoutMasterPage(); 211*b1cdbd2cSJim Jagielski } 212*b1cdbd2cSJim Jagielski } 213