1 /*************************************************************************
3 * $RCSfile: PropChgHelper.java,v $
7 * last change: $Author: hr $ $Date: 2003-06-30 15:40:24 $
9 * The Contents of this file are made available subject to the terms of
12 * Copyright (c) 2003 by Sun Microsystems, Inc.
13 * All rights reserved.
15 * Redistribution and use in source and binary forms, with or without
16 * modification, are permitted provided that the following conditions
18 * 1. Redistributions of source code must retain the above copyright
19 * notice, this list of conditions and the following disclaimer.
20 * 2. Redistributions in binary form must reproduce the above copyright
21 * notice, this list of conditions and the following disclaimer in the
22 * documentation and/or other materials provided with the distribution.
23 * 3. Neither the name of Sun Microsystems, Inc. nor the names of its
24 * contributors may be used to endorse or promote products derived
25 * from this software without specific prior written permission.
27 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
29 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
30 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
31 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
32 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
33 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
34 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
35 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
36 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
37 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 *************************************************************************/
41 import com
.sun
.star
.linguistic2
.XLinguServiceEventBroadcaster
;
42 import com
.sun
.star
.linguistic2
.XLinguServiceEventListener
;
43 import com
.sun
.star
.linguistic2
.LinguServiceEvent
;
44 import com
.sun
.star
.beans
.XPropertySet
;
45 import com
.sun
.star
.beans
.XPropertyChangeListener
;
46 import com
.sun
.star
.beans
.PropertyChangeEvent
;
47 import com
.sun
.star
.lang
.EventObject
;
48 import com
.sun
.star
.uno
.XInterface
;
50 import java
.util
.ArrayList
;
52 public class PropChgHelper
implements
53 XPropertyChangeListener
,
54 XLinguServiceEventBroadcaster
56 XInterface xEvtSource
;
58 XPropertySet xPropSet
;
59 ArrayList aLngSvcEvtListeners
;
62 XInterface xEvtSource
,
65 this.xEvtSource
= xEvtSource
;
66 this.aPropNames
= aPropNames
;
68 aLngSvcEvtListeners
= new ArrayList();
71 public XInterface
GetEvtSource()
76 public XPropertySet
GetPropSet()
81 public String
[] GetPropNames()
86 public void LaunchEvent( LinguServiceEvent aEvt
)
88 int nCnt
= aLngSvcEvtListeners
.size();
89 for (int i
= 0; i
< nCnt
; ++i
)
91 XLinguServiceEventListener xLstnr
=
92 (XLinguServiceEventListener
) aLngSvcEvtListeners
.get(i
);
94 xLstnr
.processLinguServiceEvent( aEvt
);
98 public void AddAsListenerTo( XPropertySet xPropertySet
)
100 // do not listen any longer to the old property set (if any)
103 // set new property set to be used and register as listener to it
104 xPropSet
= xPropertySet
;
105 if (xPropSet
!= null)
107 int nLen
= aPropNames
.length
;
108 for (int i
= 0; i
< nLen
; ++i
)
110 if (aPropNames
[i
].length() != 0)
113 xPropSet
.addPropertyChangeListener(
114 aPropNames
[i
], (XPropertyChangeListener
) this );
116 catch( Exception e
) {
123 public void RemoveAsListener()
125 if (xPropSet
!= null)
127 int nLen
= aPropNames
.length
;
128 for (int i
= 0; i
< nLen
; ++i
)
130 if (aPropNames
[i
].length() != 0)
133 xPropSet
.removePropertyChangeListener(
134 aPropNames
[i
], (XPropertyChangeListener
) this );
136 catch( Exception e
) {
145 // __________ interface methods __________
150 public void disposing( EventObject aSource
)
151 throws com
.sun
.star
.uno
.RuntimeException
153 if (aSource
.Source
== xPropSet
)
159 //************************
160 // XPropertyChangeListener
161 //************************
162 public void propertyChange( PropertyChangeEvent aEvt
)
163 throws com
.sun
.star
.uno
.RuntimeException
165 // will be overloaded in derived classes
168 //******************************
169 // XLinguServiceEventBroadcaster
170 //******************************
171 public boolean addLinguServiceEventListener(
172 XLinguServiceEventListener xListener
)
173 throws com
.sun
.star
.uno
.RuntimeException
175 boolean bRes
= false;
176 if (xListener
!= null)
178 bRes
= aLngSvcEvtListeners
.add( xListener
);
183 public boolean removeLinguServiceEventListener(
184 XLinguServiceEventListener xListener
)
185 throws com
.sun
.star
.uno
.RuntimeException
187 boolean bRes
= false;
188 if (xListener
!= null)
190 int nIdx
= aLngSvcEvtListeners
.indexOf( xListener
);
193 aLngSvcEvtListeners
.remove( nIdx
);