1*ef39d40dSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*ef39d40dSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*ef39d40dSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*ef39d40dSAndrew Rist  * distributed with this work for additional information
6*ef39d40dSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*ef39d40dSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*ef39d40dSAndrew Rist  * "License"); you may not use this file except in compliance
9*ef39d40dSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*ef39d40dSAndrew Rist  *
11*ef39d40dSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*ef39d40dSAndrew Rist  *
13*ef39d40dSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*ef39d40dSAndrew Rist  * software distributed under the License is distributed on an
15*ef39d40dSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*ef39d40dSAndrew Rist  * KIND, either express or implied.  See the License for the
17*ef39d40dSAndrew Rist  * specific language governing permissions and limitations
18*ef39d40dSAndrew Rist  * under the License.
19*ef39d40dSAndrew Rist  *
20*ef39d40dSAndrew Rist  *************************************************************/
21*ef39d40dSAndrew Rist 
22*ef39d40dSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir package ifc.awt;
25cdf0e10cSrcweir 
26cdf0e10cSrcweir import com.sun.star.awt.FocusEvent;
27cdf0e10cSrcweir import com.sun.star.awt.KeyEvent;
28cdf0e10cSrcweir import com.sun.star.awt.MouseEvent;
29cdf0e10cSrcweir import com.sun.star.awt.PaintEvent;
30cdf0e10cSrcweir import com.sun.star.awt.Point;
31cdf0e10cSrcweir import com.sun.star.awt.PosSize;
32cdf0e10cSrcweir import com.sun.star.awt.Rectangle;
33cdf0e10cSrcweir import com.sun.star.awt.Size;
34cdf0e10cSrcweir import com.sun.star.awt.WindowEvent;
35cdf0e10cSrcweir import com.sun.star.awt.XFocusListener;
36cdf0e10cSrcweir import com.sun.star.awt.XKeyListener;
37cdf0e10cSrcweir import com.sun.star.awt.XMouseListener;
38cdf0e10cSrcweir import com.sun.star.awt.XMouseMotionListener;
39cdf0e10cSrcweir import com.sun.star.awt.XPaintListener;
40cdf0e10cSrcweir import com.sun.star.awt.XWindow;
41cdf0e10cSrcweir import com.sun.star.awt.XWindowListener;
42cdf0e10cSrcweir import com.sun.star.drawing.XControlShape;
43cdf0e10cSrcweir import com.sun.star.lang.EventObject;
44cdf0e10cSrcweir import lib.MultiMethodTest;
45cdf0e10cSrcweir import util.ValueComparer;
46cdf0e10cSrcweir 
47cdf0e10cSrcweir /**
48cdf0e10cSrcweir * Testing <code>com.sun.star.awt.XWindow</code>
49cdf0e10cSrcweir * interface methods :
50cdf0e10cSrcweir * <ul>
51cdf0e10cSrcweir *  <li><code> setPosSize()</code></li>
52cdf0e10cSrcweir *  <li><code> getPosSize()</code></li>
53cdf0e10cSrcweir *  <li><code> setVisible()</code></li>
54cdf0e10cSrcweir *  <li><code> setEnable()</code></li>
55cdf0e10cSrcweir *  <li><code> setFocus()</code></li>
56cdf0e10cSrcweir *  <li><code> addWindowListener()</code></li>
57cdf0e10cSrcweir *  <li><code> removeWindowListener()</code></li>
58cdf0e10cSrcweir *  <li><code> addFocusListener()</code></li>
59cdf0e10cSrcweir *  <li><code> removeFocusListener()</code></li>
60cdf0e10cSrcweir *  <li><code> addKeyListener()</code></li>
61cdf0e10cSrcweir *  <li><code> removeKeyListener()</code></li>
62cdf0e10cSrcweir *  <li><code> addMouseListener()</code></li>
63cdf0e10cSrcweir *  <li><code> removeMouseListener()</code></li>
64cdf0e10cSrcweir *  <li><code> addMouseMotionListener()</code></li>
65cdf0e10cSrcweir *  <li><code> removeMouseMotionListener()</code></li>
66cdf0e10cSrcweir *  <li><code> addPaintListener()</code></li>
67cdf0e10cSrcweir *  <li><code> removePaintListener()</code></li>
68cdf0e10cSrcweir * </ul> <p>
69cdf0e10cSrcweir * This test needs the following object relations :
70cdf0e10cSrcweir * <ul>
71cdf0e10cSrcweir *  <li> <code>'XWindow.AnotherWindow'</code> (of type <code>XWindow</code>):
72cdf0e10cSrcweir *   Some another window which can gain focus so the tested one
73cdf0e10cSrcweir *   must lost it. </li>
74cdf0e10cSrcweir *  <li> <code>'XWindow.ControlShape'</code> <b>optional</b>
75cdf0e10cSrcweir *   (of type <code>XControlShape</code>):
76cdf0e10cSrcweir *   Some shapes cann't change their size within fixed ControlShape
77cdf0e10cSrcweir *   and their size could be changed only if size of container
78cdf0e10cSrcweir *   ControlShape is changed. For such shapes this relation should
79cdf0e10cSrcweir *   be passed for proper <code>addWindowListener</code> test. </li>
80cdf0e10cSrcweir * </ul> <p>
81cdf0e10cSrcweir * Test is <b> NOT </b> multithread compilant. <p>
82cdf0e10cSrcweir * @see com.sun.star.awt.XWindow
83cdf0e10cSrcweir */
84cdf0e10cSrcweir public class _XWindow extends MultiMethodTest {
85cdf0e10cSrcweir     public XWindow oObj = null;
86cdf0e10cSrcweir     private Rectangle posSize = null ;
87cdf0e10cSrcweir     private XWindow win = null;
88cdf0e10cSrcweir 
89cdf0e10cSrcweir     /**
90cdf0e10cSrcweir     * Test calls the method. <p>
91cdf0e10cSrcweir     * Has <b> OK </b> status if the method does not return null.
92cdf0e10cSrcweir     */
_getPosSize()93cdf0e10cSrcweir     public void _getPosSize() {
94cdf0e10cSrcweir         posSize = oObj.getPosSize() ;
95cdf0e10cSrcweir         tRes.tested("getPosSize()", posSize != null) ;
96cdf0e10cSrcweir     }
97cdf0e10cSrcweir 
98cdf0e10cSrcweir     /**
99cdf0e10cSrcweir     * After defining Rectangle structure to be set, test calls the method. <p>
100cdf0e10cSrcweir     * Has <b> OK </b> status if structure obtained using getPosSize() is
101cdf0e10cSrcweir     * equal to structure previously set using setPosSize(). <p>
102cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
103cdf0e10cSrcweir     * <ul>
104cdf0e10cSrcweir     *  <li> <code> getPosSize() </code> :  returns the outer bounds of
105cdf0e10cSrcweir     *  the window </li>
106cdf0e10cSrcweir     * </ul>
107cdf0e10cSrcweir     */
_setPosSize()108cdf0e10cSrcweir     public void _setPosSize() {
109cdf0e10cSrcweir         Rectangle newRec = new Rectangle();
110cdf0e10cSrcweir 
111cdf0e10cSrcweir         requiredMethod("getPosSize()");
112cdf0e10cSrcweir         newRec.X = posSize.X + 1;
113cdf0e10cSrcweir         newRec.Y = posSize.Y + 1;
114cdf0e10cSrcweir         newRec.Width = posSize.Width - 3;
115cdf0e10cSrcweir         newRec.Height = posSize.Height - 3;
116cdf0e10cSrcweir         oObj.setPosSize(newRec.X, newRec.Y, newRec.Width, newRec.Height,
117cdf0e10cSrcweir             PosSize.POSSIZE);
118cdf0e10cSrcweir         Rectangle gPS = oObj.getPosSize();
119cdf0e10cSrcweir         log.println("Was : (" + posSize.X + ", " + posSize.Y + ", " +
120cdf0e10cSrcweir             posSize.Width + ", " + posSize.Height + "), ");
121cdf0e10cSrcweir         log.println("Set : (" + newRec.X + ", " + newRec.Y + ", " +
122cdf0e10cSrcweir             newRec.Width + ", " + newRec.Height + "), ");
123cdf0e10cSrcweir         log.println("Get : (" + gPS.X + ", " + gPS.Y + ", " +
124cdf0e10cSrcweir             gPS.Width + ", " + gPS.Height + "). ");
125cdf0e10cSrcweir         tRes.tested("setPosSize()", ValueComparer.equalValue(newRec, gPS) );
126cdf0e10cSrcweir     }
127cdf0e10cSrcweir 
128cdf0e10cSrcweir     /**
129cdf0e10cSrcweir     * At first object relation 'XWindow.AnotherWindow' is obtained.
130cdf0e10cSrcweir     * Then test calls the methods of two 'XWindow' objects several times to be
131cdf0e10cSrcweir     * sure that the focus has changed. <p>
132cdf0e10cSrcweir     * Has <b> OK </b> status if the method successfully returns
133cdf0e10cSrcweir     * and no exceptions were thrown.
134cdf0e10cSrcweir     */
_setFocus()135cdf0e10cSrcweir     public void _setFocus() {
136cdf0e10cSrcweir         win = (XWindow) tEnv.getObjRelation("XWindow.AnotherWindow");
137cdf0e10cSrcweir         oObj.setFocus();
138cdf0e10cSrcweir         win.setFocus();
139cdf0e10cSrcweir         oObj.setFocus();
140cdf0e10cSrcweir         tRes.tested("setFocus()", true);
141cdf0e10cSrcweir     }
142cdf0e10cSrcweir 
143cdf0e10cSrcweir     /**
144cdf0e10cSrcweir     * Test calls the method twice with two parameters: 'true' and 'false'. <p>
145cdf0e10cSrcweir     * Has <b> OK </b> status if the method successfully returns
146cdf0e10cSrcweir     * and no exceptions were thrown.
147cdf0e10cSrcweir     */
_setVisible()148cdf0e10cSrcweir     public void _setVisible() {
149cdf0e10cSrcweir         oObj.setVisible(false);
150cdf0e10cSrcweir         oObj.setVisible(true);
151cdf0e10cSrcweir         tRes.tested("setVisible()", true);
152cdf0e10cSrcweir     }
153cdf0e10cSrcweir 
154cdf0e10cSrcweir     /**
155cdf0e10cSrcweir     * Test calls the method twice with two parameters: 'true' and 'false'. <p>
156cdf0e10cSrcweir     * Has <b> OK </b> status if the method successfully returns
157cdf0e10cSrcweir     * and no exceptions were thrown.
158cdf0e10cSrcweir     */
_setEnable()159cdf0e10cSrcweir     public void _setEnable() {
160cdf0e10cSrcweir         oObj.setEnable(false);
161cdf0e10cSrcweir         oObj.setEnable(true);
162cdf0e10cSrcweir         tRes.tested("setEnable()", true);
163cdf0e10cSrcweir     }
164cdf0e10cSrcweir 
165cdf0e10cSrcweir 
166cdf0e10cSrcweir     /**
167cdf0e10cSrcweir     * A class we use to test addWindowListener() and
168cdf0e10cSrcweir     * removeWindowListener()
169cdf0e10cSrcweir     */
170cdf0e10cSrcweir     public class TestWindowListener implements XWindowListener {
171cdf0e10cSrcweir         public boolean resized = false ;
172cdf0e10cSrcweir         public boolean moved = false ;
173cdf0e10cSrcweir         public boolean hidden = false ;
174cdf0e10cSrcweir         public boolean shown = false ;
175cdf0e10cSrcweir 
init()176cdf0e10cSrcweir         public void init() {
177cdf0e10cSrcweir             resized = false ;
178cdf0e10cSrcweir             moved = false ;
179cdf0e10cSrcweir             hidden = false ;
180cdf0e10cSrcweir             shown = false ;
181cdf0e10cSrcweir         }
182cdf0e10cSrcweir 
windowResized(WindowEvent e)183cdf0e10cSrcweir         public void windowResized(WindowEvent e) {
184cdf0e10cSrcweir             resized = true ;
185cdf0e10cSrcweir         }
windowMoved(WindowEvent e)186cdf0e10cSrcweir         public void windowMoved(WindowEvent e) {
187cdf0e10cSrcweir             moved = true ;
188cdf0e10cSrcweir         }
windowHidden(EventObject e)189cdf0e10cSrcweir         public void windowHidden(EventObject e) {
190cdf0e10cSrcweir             hidden = true ;
191cdf0e10cSrcweir         }
windowShown(EventObject e)192cdf0e10cSrcweir         public void windowShown(EventObject e) {
193cdf0e10cSrcweir             shown = true ;
194cdf0e10cSrcweir         }
disposing(EventObject e)195cdf0e10cSrcweir         public void disposing(EventObject e) {}
196cdf0e10cSrcweir 
197cdf0e10cSrcweir     }
198cdf0e10cSrcweir 
199cdf0e10cSrcweir     private TestWindowListener wListener = new TestWindowListener() ;
200cdf0e10cSrcweir 
201cdf0e10cSrcweir 
202cdf0e10cSrcweir     /**
203cdf0e10cSrcweir     * Test calls the method. Then we check if listener's methods were called
204cdf0e10cSrcweir     * when we move, resize, hide and show the window. The resizing is
205cdf0e10cSrcweir     * performed depending on 'XWindow.ControlShape' existance. If this
206cdf0e10cSrcweir     * relation exists then the size and position of container control
207cdf0e10cSrcweir     * shape is changed, else the position and size of window itself is
208cdf0e10cSrcweir     * chaged<p>
209cdf0e10cSrcweir     *
210cdf0e10cSrcweir     * Has <b> OK </b> status if methods of wListener were called when
211cdf0e10cSrcweir     * corresponding events occured. <p>
212cdf0e10cSrcweir     *
213cdf0e10cSrcweir     * The following method tests are to be executed before :
214cdf0e10cSrcweir     * <ul>
215cdf0e10cSrcweir     *  <li> <code> setPosSize() </code>: sets the outer bounds of the
216cdf0e10cSrcweir     *  window</li>
217cdf0e10cSrcweir     *  <li> <code> setVisible() </code>: shows or hides the window
218cdf0e10cSrcweir     *  depending on the parameter</li>
219cdf0e10cSrcweir     * </ul>
220cdf0e10cSrcweir     */
_addWindowListener()221cdf0e10cSrcweir     public void _addWindowListener() {
222cdf0e10cSrcweir         executeMethod("setPosSize()");
223cdf0e10cSrcweir         executeMethod("setVisible()");
224cdf0e10cSrcweir         boolean result = true ;
225cdf0e10cSrcweir 
226cdf0e10cSrcweir         oObj.addWindowListener(wListener);
227cdf0e10cSrcweir 
228cdf0e10cSrcweir         // testing wListener.windowMoved()
229cdf0e10cSrcweir         XControlShape ctrlShape = (XControlShape)
230cdf0e10cSrcweir             tEnv.getObjRelation("XWindow.ControlShape");
231cdf0e10cSrcweir         log.println("change object position and size...");
232cdf0e10cSrcweir 
233cdf0e10cSrcweir         if (ctrlShape != null) {
234cdf0e10cSrcweir             try {
235cdf0e10cSrcweir                 Size sz = ctrlShape.getSize();
236cdf0e10cSrcweir                 sz.Height += 100;
237cdf0e10cSrcweir                 ctrlShape.setSize(sz);
238cdf0e10cSrcweir                 Point pos = ctrlShape.getPosition();
239cdf0e10cSrcweir                 pos.X += 100 ;
240cdf0e10cSrcweir                 ctrlShape.setPosition(pos);
241cdf0e10cSrcweir             } catch (com.sun.star.beans.PropertyVetoException e) {
242cdf0e10cSrcweir                 log.println("Couldn't change size or position: ");
243cdf0e10cSrcweir                 e.printStackTrace(log);
244cdf0e10cSrcweir             }
245cdf0e10cSrcweir         } else {
246cdf0e10cSrcweir             oObj.setPosSize(posSize.X + 2, 0, 0, 0, PosSize.X);
247cdf0e10cSrcweir             oObj.setPosSize(0, 0, 100, 100, PosSize.WIDTH);
248cdf0e10cSrcweir         }
249cdf0e10cSrcweir 
250cdf0e10cSrcweir         shortWait();
251cdf0e10cSrcweir         boolean res = wListener.resized && wListener.moved &&
252cdf0e10cSrcweir             !wListener.hidden && !wListener.shown;
253cdf0e10cSrcweir         result &= res;
254cdf0e10cSrcweir         if (!res) {
255cdf0e10cSrcweir             log.println("\twindowHidden()  wasn't called: " + !wListener.hidden);
256cdf0e10cSrcweir             log.println("\twindowShown()   wasn't called: " + !wListener.shown);
257cdf0e10cSrcweir             log.println("\twindowResized()    was called: " + wListener.resized);
258cdf0e10cSrcweir             log.println("\twindowMoved()      was called: " + wListener.moved);
259cdf0e10cSrcweir         } else {
260cdf0e10cSrcweir             log.println("windowMoved() and windowResized() was called");
261cdf0e10cSrcweir         }
262cdf0e10cSrcweir 
263cdf0e10cSrcweir         // testing wListener.windowHidden()
264cdf0e10cSrcweir         wListener.init();
265cdf0e10cSrcweir         shortWait();
266cdf0e10cSrcweir         log.println("set object invisible...");
267cdf0e10cSrcweir         oObj.setVisible(false);
268cdf0e10cSrcweir         shortWait();
269cdf0e10cSrcweir         res = wListener.hidden && !wListener.resized
270cdf0e10cSrcweir                         && !wListener.moved && !wListener.shown;
271cdf0e10cSrcweir         result &= res;
272cdf0e10cSrcweir         if (!res) {
273cdf0e10cSrcweir             log.println("\twindowHidden()     was called: " + wListener.hidden);
274cdf0e10cSrcweir             log.println("\twindowShown()   wasn't called: " + !wListener.shown);
275cdf0e10cSrcweir             log.println("\twindowResized() wasn't called: " + !wListener.resized);
276cdf0e10cSrcweir             log.println("\twindowMoved()   wasn't called: " + !wListener.moved);
277cdf0e10cSrcweir         } else {
278cdf0e10cSrcweir             log.println("windowHidden() was called");
279cdf0e10cSrcweir         }
280cdf0e10cSrcweir 
281cdf0e10cSrcweir         // testing wListener.windowShown()
282cdf0e10cSrcweir         wListener.init() ;
283cdf0e10cSrcweir         shortWait();
284cdf0e10cSrcweir         log.println("set object visible...");
285cdf0e10cSrcweir         oObj.setVisible(true) ;
286cdf0e10cSrcweir         shortWait();
287cdf0e10cSrcweir         res = wListener.shown && !wListener.resized &&
288cdf0e10cSrcweir                 !wListener.hidden && !wListener.moved;
289cdf0e10cSrcweir         result &= res;
290cdf0e10cSrcweir         if (!res) {
291cdf0e10cSrcweir             log.println("\twindowHidden()  wasn't called: " + !wListener.hidden);
292cdf0e10cSrcweir             log.println("\twindowShown()      was called: " + wListener.shown);
293cdf0e10cSrcweir             log.println("\twindowResized() wasn't called: " + !wListener.resized);
294cdf0e10cSrcweir             log.println("\twindowMoved()   wasn't called: " + !wListener.moved);
295cdf0e10cSrcweir         } else {
296cdf0e10cSrcweir             log.println("windowShown() was called");
297cdf0e10cSrcweir         }
298cdf0e10cSrcweir 
299cdf0e10cSrcweir         tRes.tested("addWindowListener()", result) ;
300cdf0e10cSrcweir     }
301cdf0e10cSrcweir 
302cdf0e10cSrcweir 
303cdf0e10cSrcweir     /**
304cdf0e10cSrcweir     * Test calls the method. Then we change window and check that listener's
305cdf0e10cSrcweir     * methods were not called. <p>
306cdf0e10cSrcweir     * Has <b> OK </b> status if listener does not react on window events.<p>
307cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
308cdf0e10cSrcweir     * <ul>
309cdf0e10cSrcweir     *  <li> <code> addWindowListener() </code>: adds window listener to the
310cdf0e10cSrcweir     *  object </li>
311cdf0e10cSrcweir     * </ul>
312cdf0e10cSrcweir     */
_removeWindowListener()313cdf0e10cSrcweir     public void _removeWindowListener() {
314cdf0e10cSrcweir         requiredMethod("addWindowListener()");
315cdf0e10cSrcweir         oObj.removeWindowListener(wListener);
316cdf0e10cSrcweir         wListener.init();
317cdf0e10cSrcweir         oObj.setPosSize(posSize.X, posSize.Y,
318cdf0e10cSrcweir             posSize.Width , posSize.Height, PosSize.POSSIZE);
319cdf0e10cSrcweir         oObj.setVisible(false);
320cdf0e10cSrcweir         oObj.setVisible(true);
321cdf0e10cSrcweir         boolean res = !(wListener.resized || wListener.moved
322cdf0e10cSrcweir             || wListener.hidden || wListener.shown);
323cdf0e10cSrcweir 
324cdf0e10cSrcweir         tRes.tested("removeWindowListener()", res);
325cdf0e10cSrcweir     }
326cdf0e10cSrcweir 
327cdf0e10cSrcweir     /**
328cdf0e10cSrcweir     * A class we use to test addFocusListener() and
329cdf0e10cSrcweir     * removeFocusListener()
330cdf0e10cSrcweir     */
331cdf0e10cSrcweir     public class TestFocusListener implements XFocusListener {
332cdf0e10cSrcweir         public boolean gained = false ;
333cdf0e10cSrcweir         public boolean lost = false ;
334cdf0e10cSrcweir 
focusGained(FocusEvent e)335cdf0e10cSrcweir         public void focusGained(FocusEvent e) {
336cdf0e10cSrcweir             gained = true ;
337cdf0e10cSrcweir         }
focusLost(FocusEvent e)338cdf0e10cSrcweir         public void focusLost(FocusEvent e) {
339cdf0e10cSrcweir             lost = true ;
340cdf0e10cSrcweir         }
init()341cdf0e10cSrcweir         public void init() {
342cdf0e10cSrcweir             gained = false;
343cdf0e10cSrcweir             lost = false;
344cdf0e10cSrcweir         }
disposing(EventObject e)345cdf0e10cSrcweir         public void disposing(EventObject e) {}
346cdf0e10cSrcweir 
347cdf0e10cSrcweir     }
348cdf0e10cSrcweir 
349cdf0e10cSrcweir     private TestFocusListener fListener = new TestFocusListener();
350cdf0e10cSrcweir 
351cdf0e10cSrcweir     /**
352cdf0e10cSrcweir     * Test calls the method. Then we change focus and check that listener's
353cdf0e10cSrcweir     * methods were called. <p>
354cdf0e10cSrcweir     * Has <b> OK </b> status if methods of fListener were called when
355cdf0e10cSrcweir     * corresponding events occured. <p>
356cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
357cdf0e10cSrcweir     * <ul>
358cdf0e10cSrcweir     *  <li> <code> setFocus() </code>: sets the focus to the window </li>
359cdf0e10cSrcweir     * </ul>
360cdf0e10cSrcweir     */
_addFocusListener()361cdf0e10cSrcweir     public void _addFocusListener() {
362cdf0e10cSrcweir         boolean result = true ;
363cdf0e10cSrcweir 
364cdf0e10cSrcweir         requiredMethod("setFocus()");
365cdf0e10cSrcweir         oObj.addFocusListener(fListener) ;
366cdf0e10cSrcweir 
367cdf0e10cSrcweir         // testing fListener.lost()
368cdf0e10cSrcweir         oObj.setFocus();
369cdf0e10cSrcweir         shortWait();
370cdf0e10cSrcweir         win.setFocus();
371cdf0e10cSrcweir         shortWait();
372cdf0e10cSrcweir         result &= fListener.lost;
373cdf0e10cSrcweir         if (!fListener.lost) {
374cdf0e10cSrcweir             log.println("Lost focus was not notified about") ;
375cdf0e10cSrcweir         }
376cdf0e10cSrcweir 
377cdf0e10cSrcweir         // testing fListener.gained()
378cdf0e10cSrcweir         oObj.setFocus() ;
379cdf0e10cSrcweir         shortWait();
380cdf0e10cSrcweir         result &= fListener.gained;
381cdf0e10cSrcweir         if (!fListener.gained) {
382cdf0e10cSrcweir             log.println("Gained focus was not notified about") ;
383cdf0e10cSrcweir         }
384cdf0e10cSrcweir 
385cdf0e10cSrcweir         tRes.tested("addFocusListener()", result) ;
386cdf0e10cSrcweir     }
387cdf0e10cSrcweir 
388cdf0e10cSrcweir     /**
389cdf0e10cSrcweir     * Test calls the method. Then we change focus and check that listener's
390cdf0e10cSrcweir     * methods were not called. <p>
391cdf0e10cSrcweir     * Has <b> OK </b> status if listener does not react on focus changing. <p>
392cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
393cdf0e10cSrcweir     * <ul>
394cdf0e10cSrcweir     *  <li> <code> addFocusListener() </code> : adds focus listener to
395cdf0e10cSrcweir     * the object </li>
396cdf0e10cSrcweir     * </ul>
397cdf0e10cSrcweir     */
_removeFocusListener()398cdf0e10cSrcweir     public void _removeFocusListener() {
399cdf0e10cSrcweir         requiredMethod("addFocusListener()");
400cdf0e10cSrcweir         oObj.removeFocusListener(fListener);
401cdf0e10cSrcweir         fListener.init();
402cdf0e10cSrcweir         oObj.setFocus();
403cdf0e10cSrcweir         win.setFocus();
404cdf0e10cSrcweir         oObj.setFocus();
405cdf0e10cSrcweir         boolean res = !(fListener.gained || fListener.lost);
406cdf0e10cSrcweir         tRes.tested("removeFocusListener()", res);
407cdf0e10cSrcweir     }
408cdf0e10cSrcweir 
409cdf0e10cSrcweir     /**
410cdf0e10cSrcweir     * A class we use to test addKeyListener() and
411cdf0e10cSrcweir     * removeKeyListener()
412cdf0e10cSrcweir     */
413cdf0e10cSrcweir     public class TestKeyListener implements XKeyListener {
414cdf0e10cSrcweir         public boolean pressed = false;
415cdf0e10cSrcweir         public boolean released = false;
keyPressed(KeyEvent e)416cdf0e10cSrcweir         public void keyPressed(KeyEvent e) { pressed = true; }
keyReleased(KeyEvent e)417cdf0e10cSrcweir         public void keyReleased(KeyEvent e) { released = true; }
disposing(EventObject e)418cdf0e10cSrcweir         public void disposing(EventObject e) {}
init()419cdf0e10cSrcweir         public void init() { pressed = false; released = false; }
420cdf0e10cSrcweir     }
421cdf0e10cSrcweir 
422cdf0e10cSrcweir     private TestKeyListener kListener = new TestKeyListener();
423cdf0e10cSrcweir 
424cdf0e10cSrcweir     /**
425cdf0e10cSrcweir     * Test calls the method. <p>
426cdf0e10cSrcweir     * Has <b> OK </b> status if no exceptions were thrown. <p>
427cdf0e10cSrcweir     */
_addKeyListener()428cdf0e10cSrcweir     public void _addKeyListener() {
429cdf0e10cSrcweir         oObj.addKeyListener(kListener);
430cdf0e10cSrcweir         tRes.tested("addKeyListener()", true);
431cdf0e10cSrcweir     }
432cdf0e10cSrcweir 
433cdf0e10cSrcweir     /**
434cdf0e10cSrcweir     * Test calls the method. <p>
435cdf0e10cSrcweir     * Has <b> OK </b> status if no exceptions were thrown. <p>
436cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
437cdf0e10cSrcweir     * <ul>
438cdf0e10cSrcweir     *  <li> <code> addKeyListener() </code> : adds key listener to
439cdf0e10cSrcweir     *  the object </li>
440cdf0e10cSrcweir     * </ul>
441cdf0e10cSrcweir     */
_removeKeyListener()442cdf0e10cSrcweir     public void _removeKeyListener() {
443cdf0e10cSrcweir         requiredMethod("addKeyListener()");
444cdf0e10cSrcweir         oObj.removeKeyListener(kListener);
445cdf0e10cSrcweir         tRes.tested("removeKeyListener()", true);
446cdf0e10cSrcweir     }
447cdf0e10cSrcweir 
448cdf0e10cSrcweir     /**
449cdf0e10cSrcweir     * A class we use to test addMouseListener() and
450cdf0e10cSrcweir     * removeMouseListener()
451cdf0e10cSrcweir     */
452cdf0e10cSrcweir     public class TestMouseListener implements XMouseListener {
453cdf0e10cSrcweir         public boolean pressed = false;
454cdf0e10cSrcweir         public boolean released = false;
455cdf0e10cSrcweir         public boolean entered = false;
456cdf0e10cSrcweir         public boolean exited = false;
457cdf0e10cSrcweir 
mousePressed(MouseEvent e)458cdf0e10cSrcweir         public void mousePressed(MouseEvent e) {
459cdf0e10cSrcweir             pressed = true;
460cdf0e10cSrcweir         }
461cdf0e10cSrcweir 
mouseReleased(MouseEvent e)462cdf0e10cSrcweir         public void mouseReleased(MouseEvent e) {
463cdf0e10cSrcweir             released = true;
464cdf0e10cSrcweir         }
465cdf0e10cSrcweir 
mouseEntered(MouseEvent e)466cdf0e10cSrcweir         public void mouseEntered(MouseEvent e) {
467cdf0e10cSrcweir             entered = true;
468cdf0e10cSrcweir         }
469cdf0e10cSrcweir 
mouseExited(MouseEvent e)470cdf0e10cSrcweir         public void mouseExited(MouseEvent e) {
471cdf0e10cSrcweir             exited = true;
472cdf0e10cSrcweir         }
473cdf0e10cSrcweir 
disposing(EventObject e)474cdf0e10cSrcweir         public void disposing(EventObject e) {}
475cdf0e10cSrcweir 
init()476cdf0e10cSrcweir         public void init() {
477cdf0e10cSrcweir             pressed = false;
478cdf0e10cSrcweir             released = false;
479cdf0e10cSrcweir             exited = false;
480cdf0e10cSrcweir             entered = false;
481cdf0e10cSrcweir         }
482cdf0e10cSrcweir 
483cdf0e10cSrcweir     }
484cdf0e10cSrcweir 
485cdf0e10cSrcweir     private TestMouseListener mListener = new TestMouseListener();
486cdf0e10cSrcweir 
487cdf0e10cSrcweir     /**
488cdf0e10cSrcweir     * Test calls the method. <p>
489cdf0e10cSrcweir     * Has <b> OK </b> status if no exceptions were thrown. <p>
490cdf0e10cSrcweir     */
_addMouseListener()491cdf0e10cSrcweir     public void _addMouseListener() {
492cdf0e10cSrcweir         oObj.addMouseListener(mListener);
493cdf0e10cSrcweir         tRes.tested("addMouseListener()", true);
494cdf0e10cSrcweir     }
495cdf0e10cSrcweir 
496cdf0e10cSrcweir     /**
497cdf0e10cSrcweir     * Test calls the method. <p>
498cdf0e10cSrcweir     * Has <b> OK </b> status if no exceptions were thrown. <p>
499cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
500cdf0e10cSrcweir     * <ul>
501cdf0e10cSrcweir     *  <li> <code> addMouseListener() </code> : adds mouse listener to
502cdf0e10cSrcweir     * the object</li>
503cdf0e10cSrcweir     * </ul>
504cdf0e10cSrcweir     */
_removeMouseListener()505cdf0e10cSrcweir     public void _removeMouseListener() {
506cdf0e10cSrcweir         requiredMethod("addMouseListener()");
507cdf0e10cSrcweir         oObj.removeMouseListener(mListener);
508cdf0e10cSrcweir         tRes.tested("removeMouseListener()", true);
509cdf0e10cSrcweir     }
510cdf0e10cSrcweir 
511cdf0e10cSrcweir     /**
512cdf0e10cSrcweir     * A class we use to test addMouseMotionListener() and
513cdf0e10cSrcweir     * removeMouseMotionListener()
514cdf0e10cSrcweir     */
515cdf0e10cSrcweir     public class TestMouseMotionListener implements XMouseMotionListener {
516cdf0e10cSrcweir         public boolean dragged = false;
517cdf0e10cSrcweir         public boolean moved = false;
518cdf0e10cSrcweir 
mouseDragged(MouseEvent e)519cdf0e10cSrcweir         public void mouseDragged(MouseEvent e) {
520cdf0e10cSrcweir             dragged = true;
521cdf0e10cSrcweir         }
522cdf0e10cSrcweir 
mouseMoved(MouseEvent e)523cdf0e10cSrcweir         public void mouseMoved(MouseEvent e) {
524cdf0e10cSrcweir             moved = true;
525cdf0e10cSrcweir         }
526cdf0e10cSrcweir 
disposing(EventObject e)527cdf0e10cSrcweir         public void disposing(EventObject e) {}
528cdf0e10cSrcweir 
init()529cdf0e10cSrcweir         public void init() {
530cdf0e10cSrcweir             dragged = false;
531cdf0e10cSrcweir             moved = false;
532cdf0e10cSrcweir         }
533cdf0e10cSrcweir 
534cdf0e10cSrcweir     }
535cdf0e10cSrcweir 
536cdf0e10cSrcweir     private TestMouseMotionListener mmListener = new TestMouseMotionListener();
537cdf0e10cSrcweir 
538cdf0e10cSrcweir     /**
539cdf0e10cSrcweir     * Test calls the method. <p>
540cdf0e10cSrcweir     * Has <b> OK </b> status if no exceptions were thrown. <p>
541cdf0e10cSrcweir     */
_addMouseMotionListener()542cdf0e10cSrcweir     public void _addMouseMotionListener() {
543cdf0e10cSrcweir         oObj.addMouseMotionListener(mmListener);
544cdf0e10cSrcweir         tRes.tested("addMouseMotionListener()", true);
545cdf0e10cSrcweir     }
546cdf0e10cSrcweir 
547cdf0e10cSrcweir     /**
548cdf0e10cSrcweir     * Test calls the method. <p>
549cdf0e10cSrcweir     * Has <b> OK </b> status if no exceptions were thrown. <p>
550cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
551cdf0e10cSrcweir     * <ul>
552cdf0e10cSrcweir     *  <li> <code> addMouseMotionListener() </code> : adds mouse motion
553cdf0e10cSrcweir     * listener to the object</li>
554cdf0e10cSrcweir     * </ul>
555cdf0e10cSrcweir     */
_removeMouseMotionListener()556cdf0e10cSrcweir     public void _removeMouseMotionListener() {
557cdf0e10cSrcweir         requiredMethod("addMouseMotionListener()");
558cdf0e10cSrcweir         oObj.removeMouseMotionListener(mmListener);
559cdf0e10cSrcweir         tRes.tested("removeMouseMotionListener()", true);
560cdf0e10cSrcweir     }
561cdf0e10cSrcweir 
562cdf0e10cSrcweir     /**
563cdf0e10cSrcweir     * A class we use to test addPaintListener() and
564cdf0e10cSrcweir     * removePaintListener()
565cdf0e10cSrcweir     */
566cdf0e10cSrcweir     public class TestPaintListener implements XPaintListener {
567cdf0e10cSrcweir         public boolean paint = false;
568cdf0e10cSrcweir 
windowPaint(PaintEvent e)569cdf0e10cSrcweir         public void windowPaint(PaintEvent e) {
570cdf0e10cSrcweir             paint = true;
571cdf0e10cSrcweir         }
572cdf0e10cSrcweir 
disposing(EventObject e)573cdf0e10cSrcweir         public void disposing(EventObject e) {}
574cdf0e10cSrcweir 
init()575cdf0e10cSrcweir         public void init() {
576cdf0e10cSrcweir             paint = false;
577cdf0e10cSrcweir         }
578cdf0e10cSrcweir 
579cdf0e10cSrcweir     }
580cdf0e10cSrcweir 
581cdf0e10cSrcweir     private TestPaintListener pListener = new TestPaintListener();
582cdf0e10cSrcweir 
583cdf0e10cSrcweir     /**
584cdf0e10cSrcweir     * Test calls the method. <p>
585cdf0e10cSrcweir     * Has <b> OK </b> status if no exceptions were thrown. <p>
586cdf0e10cSrcweir     */
_addPaintListener()587cdf0e10cSrcweir     public void _addPaintListener() {
588cdf0e10cSrcweir         oObj.addPaintListener(pListener);
589cdf0e10cSrcweir         tRes.tested("addPaintListener()", true);
590cdf0e10cSrcweir     }
591cdf0e10cSrcweir 
592cdf0e10cSrcweir     /**
593cdf0e10cSrcweir     * Test calls the method. <p>
594cdf0e10cSrcweir     * Has <b> OK </b> status if no exceptions were thrown. <p>
595cdf0e10cSrcweir     * The following method tests are to be completed successfully before :
596cdf0e10cSrcweir     * <ul>
597cdf0e10cSrcweir     *  <li> <code> addPaintListener() </code> : adds paint listener to
598cdf0e10cSrcweir     * the object </li>
599cdf0e10cSrcweir     * </ul>
600cdf0e10cSrcweir     */
_removePaintListener()601cdf0e10cSrcweir     public void _removePaintListener() {
602cdf0e10cSrcweir         requiredMethod("addPaintListener()");
603cdf0e10cSrcweir         oObj.removePaintListener(pListener);
604cdf0e10cSrcweir         tRes.tested("removePaintListener()", true);
605cdf0e10cSrcweir     }
606cdf0e10cSrcweir 
607cdf0e10cSrcweir     /**
608cdf0e10cSrcweir     * Sleeps for 0.2 sec. to allow StarOffice to react on <code>
609cdf0e10cSrcweir     * reset</code> call.
610cdf0e10cSrcweir     */
shortWait()611cdf0e10cSrcweir     private void shortWait() {
612cdf0e10cSrcweir         try {
613cdf0e10cSrcweir             Thread.sleep(2000) ;
614cdf0e10cSrcweir         } catch (InterruptedException e) {
615cdf0e10cSrcweir             log.println("While waiting :" + e) ;
616cdf0e10cSrcweir         }
617cdf0e10cSrcweir     }
618cdf0e10cSrcweir 
619cdf0e10cSrcweir }
620cdf0e10cSrcweir 
621