3
* This file is part of jReality. jReality is open source software, made
4
* available under a BSD license:
6
* Copyright (c) 2003-2006, jReality Group: Charles Gunn, Tim Hoffmann, Markus
7
* Schmies, Steffen Weissmann.
11
* Redistribution and use in source and binary forms, with or without
12
* modification, are permitted provided that the following conditions are met:
14
* - Redistributions of source code must retain the above copyright notice, this
15
* list of conditions and the following disclaimer.
17
* - Redistributions in binary form must reproduce the above copyright notice,
18
* this list of conditions and the following disclaimer in the documentation
19
* and/or other materials provided with the distribution.
21
* - Neither the name of jReality nor the names of its contributors nor the
22
* names of their associated organizations may be used to endorse or promote
23
* products derived from this software without specific prior written
26
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
30
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36
* POSSIBILITY OF SUCH DAMAGE.
41
package opencog.spacetime.tools;
44
public final class PrimitiveDragEventMulticaster implements PrimitiveDragListener
46
private final PrimitiveDragListener a, b;
47
private PrimitiveDragEventMulticaster(PrimitiveDragListener a, PrimitiveDragListener b) {
48
this.a = a; this.b = b;
50
private PrimitiveDragListener remove(PrimitiveDragListener oldl) {
51
if(oldl == a) return b;
52
if(oldl == b) return a;
53
PrimitiveDragListener a2 = remove(a, oldl);
54
PrimitiveDragListener b2 = remove(b, oldl);
55
if(a2 == a && b2 == b) return this;
58
public static PrimitiveDragListener add(PrimitiveDragListener a, PrimitiveDragListener b)
60
final PrimitiveDragListener result;
61
if(a==null) result=b; else if(b==null) result=a;
62
else result=new PrimitiveDragEventMulticaster(a, b);
65
public static PrimitiveDragListener remove(PrimitiveDragListener l, PrimitiveDragListener oldl)
67
final PrimitiveDragListener result;
68
if(l==oldl||l==null) result=null;
69
else if(l instanceof PrimitiveDragEventMulticaster)
70
result=((PrimitiveDragEventMulticaster)l).remove(oldl);
75
public void primitiveDragStart(PrimitiveDragEvent e) {
76
a.primitiveDragStart(e); b.primitiveDragStart(e);
79
public void primitiveDragged(PrimitiveDragEvent e) {
80
a.primitiveDragged(e); b.primitiveDragged(e);
83
public void primitiveDragEnd(PrimitiveDragEvent e) {
84
a.primitiveDragEnd(e); b.primitiveDragEnd(e);