blob: 303cd8f06c58b9cff309bdbf1fc576c631bbfe93 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package org.openoffice.accessibility.misc;
import com.sun.star.lang.EventObject;
import com.sun.star.accessibility.AccessibleEventObject;
import com.sun.star.accessibility.XAccessibleEventBroadcaster;
import com.sun.star.accessibility.XAccessibleEventListener;
/**
*
*/
public class AccessibleEventMulticaster implements XAccessibleEventListener {
private final XAccessibleEventListener a;
private final XAccessibleEventListener b;
/** Creates a new instance of AccessibleEventMulticaster */
protected AccessibleEventMulticaster(XAccessibleEventListener a,
XAccessibleEventListener b) {
this.a = a;
this.b = b;
}
protected XAccessibleEventListener remove(XAccessibleEventListener l) {
if (l == a)
return b;
if (l == b)
return a;
XAccessibleEventListener a2 = remove(a, l);
XAccessibleEventListener b2 = remove(b, l);
if (a2 == a && b2 == b) {
return this; // not found
}
return add(a2, b2);
}
public void notifyEvent(AccessibleEventObject accessibleEventObject) {
a.notifyEvent(accessibleEventObject);
b.notifyEvent(accessibleEventObject);
}
public void disposing(EventObject eventObject) {
a.disposing(eventObject);
b.disposing(eventObject);
}
public static XAccessibleEventListener add(XAccessibleEventListener a, XAccessibleEventListener b) {
if (a == null)
return b;
if (b == null)
return a;
return new AccessibleEventMulticaster(a,b);
}
public static XAccessibleEventListener remove(XAccessibleEventListener l, XAccessibleEventListener oldl) {
if (l == oldl || l == null) {
return null;
} else if (l instanceof AccessibleEventMulticaster) {
return ((AccessibleEventMulticaster) l).remove(oldl);
} else {
return l;
}
}
}