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