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