tdf#130857 qt weld: Implement QtInstanceWidget::strip_mnemonic
[LibreOffice.git] / qadevOOo / tests / java / ifc / accessibility / _XAccessibleEventBroadcaster.java
blob80c52803a64fa4bdcc4c5fc0c1d172187b6767b5
1 /*
2 * This file is part of the LibreOffice project.
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 * This file incorporates work covered by the following license notice:
10 * Licensed to the Apache Software Foundation (ASF) under one or more
11 * contributor license agreements. See the NOTICE file distributed
12 * with this work for additional information regarding copyright
13 * ownership. The ASF licenses this file to you under the Apache
14 * License, Version 2.0 (the "License"); you may not use this file
15 * except in compliance with the License. You may obtain a copy of
16 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 package ifc.accessibility;
21 import lib.MultiMethodTest;
22 import lib.Status;
23 import lib.StatusException;
25 import com.sun.star.accessibility.AccessibleEventObject;
26 import com.sun.star.accessibility.XAccessible;
27 import com.sun.star.accessibility.XAccessibleContext;
28 import com.sun.star.accessibility.XAccessibleEventBroadcaster;
29 import com.sun.star.accessibility.XAccessibleEventListener;
30 import com.sun.star.lang.EventObject;
31 import com.sun.star.uno.UnoRuntime;
33 /**
34 * Testing <code>
35 * com.sun.star.accessibility.XAccessibleEventBroadcaster</code>
36 * interface methods :
37 * <ul>
38 * <li><code> addAccessibleEventListener()</code></li>
39 * <li><code> removeAccessibleEventListener()</code></li>
40 * </ul> <p>
42 * This test needs the following object relations :
43 * <ul>
44 * <li> <code>'EventProducer'</code> (of type
45 * <code>ifc.accessibility._XAccessibleEventBroadcaster.EventProducer</code>):
46 * this must be an implementation of the interface which could perform
47 * some actions for generating any kind of <code>AccessibleEvent</code></li>
48 * <ul> <p>
50 * @see com.sun.star.accessibility.XAccessibleEventBroadcaster
52 public class _XAccessibleEventBroadcaster extends MultiMethodTest {
54 public interface EventProducer {
55 void fireEvent();
58 public XAccessibleEventBroadcaster oObj = null;
59 public String EventMsg = "";
60 public boolean destroy = false;
63 /**
64 * Listener implementation which registers listener calls.
66 private class EvListener implements XAccessibleEventListener {
67 public AccessibleEventObject notifiedEvent = null ;
68 public void notifyEvent(AccessibleEventObject ev) {
69 log.println("Listener, Event : " + ev.EventId);
70 System.out.println("EventID: " + ev.EventId);
71 Object old=ev.OldValue;
72 if (old instanceof com.sun.star.accessibility.XAccessible) {
73 System.out.println("Old: "+((XAccessible)old).getAccessibleContext().getAccessibleName());
76 Object nev=ev.NewValue;
77 if (nev instanceof com.sun.star.accessibility.XAccessible) {
78 System.out.println("New: "+((XAccessible)nev).getAccessibleContext().getAccessibleName());
80 synchronized (this) {
81 notifiedEvent = ev;
85 public void disposing(EventObject ev) {}
88 /**
89 * Retrieves relation.
90 * @throws StatusException If the relation is not found.
92 @Override
93 public void before() {
94 prod = (EventProducer) tEnv.getObjRelation("EventProducer") ;
95 if (prod == null) {
96 throw new StatusException(Status.failed("Relation missed."));
98 EventMsg = (String) tEnv.getObjRelation("EventMsg");
99 Object dp = tEnv.getObjRelation("Destroy");
100 if (dp != null) {
101 destroy=true;
105 EventProducer prod = null ;
106 EvListener list = new EvListener();
109 * Adds two listeners and fires event by mean of object relation. <p>
110 * Has <b> OK </b> status if both listeners were called
112 public void _addEventListener() {
113 log.println("adding listener");
114 oObj.addAccessibleEventListener(list);
115 boolean isTransient = chkTransient(tEnv.getTestObject());
116 log.println("fire event");
117 prod.fireEvent() ;
119 waitForEventIdle();
121 boolean works = true;
123 AccessibleEventObject ne;
124 synchronized (list) {
125 ne = list.notifiedEvent;
127 if (ne == null) {
128 if (!isTransient) {
129 log.println("listener wasn't called");
130 works = false;
131 } else {
132 log.println("Object is Transient, listener isn't expected to be called");
134 oObj.removeAccessibleEventListener(list);
137 if (EventMsg != null) {
138 log.println(EventMsg);
139 tRes.tested("addEventListener()", Status.skipped(true) );
140 return;
143 tRes.tested("addEventListener()", works );
147 * Removes one of two listeners added before and fires event
148 * by mean of object relation.<p>
150 * Has <b> OK </b> status if the removed listener wasn't called.<p>
152 * The following method tests are to be completed successfully before:
153 * <ul>
154 * <li> <code>addEventListener()</code> : to have added listeners </li>
155 * </ul>
157 public void _removeEventListener() throws Exception {
158 requiredMethod("addEventListener()");
160 log.println("remove listener");
161 oObj.removeAccessibleEventListener(list);
163 synchronized (list) {
164 list.notifiedEvent = null;
167 log.println("fire event");
168 prod.fireEvent() ;
170 waitForEventIdle();
172 AccessibleEventObject ne;
173 synchronized (list) {
174 ne = list.notifiedEvent;
176 if (ne == null) {
177 log.println("listener wasn't called -- OK");
180 tRes.tested("removeEventListener()", list.notifiedEvent == null);
184 protected static boolean chkTransient(Object Testcase) {
185 boolean ret = false;
186 XAccessibleContext accCon = UnoRuntime.queryInterface(XAccessibleContext.class,Testcase);
187 if ((accCon.getAccessibleStateSet() &
188 com.sun.star.accessibility.AccessibleStateType.TRANSIENT) != 0){
189 if ((accCon.getAccessibleParent().getAccessibleContext().getAccessibleStateSet() &
190 com.sun.star.accessibility.AccessibleStateType.MANAGES_DESCENDANTS) == 0) {
191 throw new lib.StatusException(lib.Status.failed("Parent doesn't manage descendents"));
193 ret=true;
195 return ret;
199 * Forces environment recreation.
201 @Override
202 protected void after() {
203 if (destroy) disposeEnvironment();