1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir package test.cppuhelper.propertysetmixin.comp; 29*cdf0e10cSrcweir 30*cdf0e10cSrcweir import com.sun.star.beans.Ambiguous; 31*cdf0e10cSrcweir import com.sun.star.beans.Defaulted; 32*cdf0e10cSrcweir import com.sun.star.beans.Optional; 33*cdf0e10cSrcweir import com.sun.star.beans.UnknownPropertyException; 34*cdf0e10cSrcweir import com.sun.star.beans.PropertyValue; 35*cdf0e10cSrcweir import com.sun.star.beans.PropertyVetoException; 36*cdf0e10cSrcweir import com.sun.star.beans.XFastPropertySet; 37*cdf0e10cSrcweir import com.sun.star.beans.XPropertyAccess; 38*cdf0e10cSrcweir import com.sun.star.beans.XPropertyChangeListener; 39*cdf0e10cSrcweir import com.sun.star.beans.XPropertySet; 40*cdf0e10cSrcweir import com.sun.star.beans.XPropertySetInfo; 41*cdf0e10cSrcweir import com.sun.star.beans.XVetoableChangeListener; 42*cdf0e10cSrcweir import com.sun.star.comp.loader.FactoryHelper; 43*cdf0e10cSrcweir import com.sun.star.lang.WrappedTargetException; 44*cdf0e10cSrcweir import com.sun.star.lang.XComponent; 45*cdf0e10cSrcweir import com.sun.star.lang.XEventListener; 46*cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory; 47*cdf0e10cSrcweir import com.sun.star.lang.XSingleServiceFactory; 48*cdf0e10cSrcweir import com.sun.star.lib.uno.helper.WeakBase; 49*cdf0e10cSrcweir import com.sun.star.lib.uno.helper.PropertySetMixin; 50*cdf0e10cSrcweir import com.sun.star.registry.XRegistryKey; 51*cdf0e10cSrcweir import com.sun.star.uno.Any; 52*cdf0e10cSrcweir import com.sun.star.uno.IQueryInterface; 53*cdf0e10cSrcweir import com.sun.star.uno.Type; 54*cdf0e10cSrcweir import com.sun.star.uno.XComponentContext; 55*cdf0e10cSrcweir import test.cppuhelper.propertysetmixin.XSupplier; 56*cdf0e10cSrcweir import test.cppuhelper.propertysetmixin.XTest3; 57*cdf0e10cSrcweir 58*cdf0e10cSrcweir public final class JavaSupplier extends WeakBase implements XSupplier { 59*cdf0e10cSrcweir public JavaSupplier(XComponentContext context) { 60*cdf0e10cSrcweir this.context = context; 61*cdf0e10cSrcweir } 62*cdf0e10cSrcweir 63*cdf0e10cSrcweir public XComponent getEmpty1() { return new Empty1(); } 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir public XComponent getEmpty2() { return new Empty2(); } 66*cdf0e10cSrcweir 67*cdf0e10cSrcweir public XTest3 getFull() { return new Full(); } 68*cdf0e10cSrcweir 69*cdf0e10cSrcweir public static XSingleServiceFactory __getServiceFactory( 70*cdf0e10cSrcweir String implName, XMultiServiceFactory multiFactory, XRegistryKey regKey) 71*cdf0e10cSrcweir { 72*cdf0e10cSrcweir return implName.equals(implementationName) 73*cdf0e10cSrcweir ? FactoryHelper.getServiceFactory( 74*cdf0e10cSrcweir JavaSupplier.class, serviceName, multiFactory, regKey) 75*cdf0e10cSrcweir : null; 76*cdf0e10cSrcweir } 77*cdf0e10cSrcweir 78*cdf0e10cSrcweir private static final String implementationName 79*cdf0e10cSrcweir = JavaSupplier.class.getName(); 80*cdf0e10cSrcweir private static final String serviceName 81*cdf0e10cSrcweir = "test.cppuhelper.propertysetmixin.JavaSupplier"; 82*cdf0e10cSrcweir 83*cdf0e10cSrcweir private final class Empty1 extends WeakBase implements XComponent { 84*cdf0e10cSrcweir public Empty1() {} 85*cdf0e10cSrcweir 86*cdf0e10cSrcweir public void dispose() { 87*cdf0e10cSrcweir prop.dispose(); 88*cdf0e10cSrcweir } 89*cdf0e10cSrcweir 90*cdf0e10cSrcweir public void addEventListener(XEventListener listener) {} 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir public void removeEventListener(XEventListener listener) {} 93*cdf0e10cSrcweir 94*cdf0e10cSrcweir private final PropertySetMixin prop = new PropertySetMixin( 95*cdf0e10cSrcweir context, this, new Type(XComponent.class), null); 96*cdf0e10cSrcweir } 97*cdf0e10cSrcweir 98*cdf0e10cSrcweir private final class Empty2 extends WeakBase 99*cdf0e10cSrcweir implements XComponent, XPropertySet, XFastPropertySet, XPropertyAccess 100*cdf0e10cSrcweir { 101*cdf0e10cSrcweir public Empty2() {} 102*cdf0e10cSrcweir 103*cdf0e10cSrcweir public void dispose() { 104*cdf0e10cSrcweir prop.dispose(); 105*cdf0e10cSrcweir } 106*cdf0e10cSrcweir 107*cdf0e10cSrcweir public void addEventListener(XEventListener listener) {} 108*cdf0e10cSrcweir 109*cdf0e10cSrcweir public void removeEventListener(XEventListener listener) {} 110*cdf0e10cSrcweir 111*cdf0e10cSrcweir public com.sun.star.beans.XPropertySetInfo getPropertySetInfo() { 112*cdf0e10cSrcweir return prop.getPropertySetInfo(); 113*cdf0e10cSrcweir } 114*cdf0e10cSrcweir 115*cdf0e10cSrcweir public void setPropertyValue(String propertyName, Object value) 116*cdf0e10cSrcweir throws UnknownPropertyException, PropertyVetoException, 117*cdf0e10cSrcweir com.sun.star.lang.IllegalArgumentException, WrappedTargetException 118*cdf0e10cSrcweir { 119*cdf0e10cSrcweir prop.setPropertyValue(propertyName, value); 120*cdf0e10cSrcweir } 121*cdf0e10cSrcweir 122*cdf0e10cSrcweir public Object getPropertyValue(String propertyName) 123*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 124*cdf0e10cSrcweir { 125*cdf0e10cSrcweir return prop.getPropertyValue(propertyName); 126*cdf0e10cSrcweir } 127*cdf0e10cSrcweir 128*cdf0e10cSrcweir public void addPropertyChangeListener( 129*cdf0e10cSrcweir String propertyName, XPropertyChangeListener listener) 130*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 131*cdf0e10cSrcweir { 132*cdf0e10cSrcweir prop.addPropertyChangeListener(propertyName, listener); 133*cdf0e10cSrcweir } 134*cdf0e10cSrcweir 135*cdf0e10cSrcweir public void removePropertyChangeListener( 136*cdf0e10cSrcweir String propertyName, XPropertyChangeListener listener) 137*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 138*cdf0e10cSrcweir { 139*cdf0e10cSrcweir prop.removePropertyChangeListener(propertyName, listener); 140*cdf0e10cSrcweir } 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir public void addVetoableChangeListener( 143*cdf0e10cSrcweir String propertyName, XVetoableChangeListener listener) 144*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 145*cdf0e10cSrcweir { 146*cdf0e10cSrcweir prop.addVetoableChangeListener(propertyName, listener); 147*cdf0e10cSrcweir } 148*cdf0e10cSrcweir 149*cdf0e10cSrcweir public void removeVetoableChangeListener( 150*cdf0e10cSrcweir String propertyName, XVetoableChangeListener listener) 151*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 152*cdf0e10cSrcweir { 153*cdf0e10cSrcweir prop.removeVetoableChangeListener(propertyName, listener); 154*cdf0e10cSrcweir } 155*cdf0e10cSrcweir 156*cdf0e10cSrcweir public void setFastPropertyValue(int handle, Object value) 157*cdf0e10cSrcweir throws UnknownPropertyException, PropertyVetoException, 158*cdf0e10cSrcweir com.sun.star.lang.IllegalArgumentException, WrappedTargetException 159*cdf0e10cSrcweir { 160*cdf0e10cSrcweir prop.setFastPropertyValue(handle, value); 161*cdf0e10cSrcweir } 162*cdf0e10cSrcweir 163*cdf0e10cSrcweir public Object getFastPropertyValue(int handle) 164*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 165*cdf0e10cSrcweir { 166*cdf0e10cSrcweir return prop.getFastPropertyValue(handle); 167*cdf0e10cSrcweir } 168*cdf0e10cSrcweir 169*cdf0e10cSrcweir public PropertyValue[] getPropertyValues() { 170*cdf0e10cSrcweir return prop.getPropertyValues(); 171*cdf0e10cSrcweir } 172*cdf0e10cSrcweir 173*cdf0e10cSrcweir public void setPropertyValues(PropertyValue[] props) 174*cdf0e10cSrcweir throws UnknownPropertyException, PropertyVetoException, 175*cdf0e10cSrcweir com.sun.star.lang.IllegalArgumentException, WrappedTargetException 176*cdf0e10cSrcweir { 177*cdf0e10cSrcweir prop.setPropertyValues(props); 178*cdf0e10cSrcweir } 179*cdf0e10cSrcweir 180*cdf0e10cSrcweir private final PropertySetMixin prop = new PropertySetMixin( 181*cdf0e10cSrcweir context, this, new Type(XComponent.class), null); 182*cdf0e10cSrcweir } 183*cdf0e10cSrcweir 184*cdf0e10cSrcweir private final class Full extends WeakBase 185*cdf0e10cSrcweir implements XTest3, XPropertySet, XFastPropertySet, XPropertyAccess 186*cdf0e10cSrcweir { 187*cdf0e10cSrcweir public Full() {} 188*cdf0e10cSrcweir 189*cdf0e10cSrcweir public synchronized int getFirst() { 190*cdf0e10cSrcweir return a1; 191*cdf0e10cSrcweir } 192*cdf0e10cSrcweir 193*cdf0e10cSrcweir public void setFirst(int value) { 194*cdf0e10cSrcweir prop.prepareSet("First", null); 195*cdf0e10cSrcweir synchronized (this) { 196*cdf0e10cSrcweir a1 = value; 197*cdf0e10cSrcweir } 198*cdf0e10cSrcweir } 199*cdf0e10cSrcweir 200*cdf0e10cSrcweir public synchronized Ambiguous getSecond() 201*cdf0e10cSrcweir throws UnknownPropertyException 202*cdf0e10cSrcweir { 203*cdf0e10cSrcweir return a2; 204*cdf0e10cSrcweir } 205*cdf0e10cSrcweir 206*cdf0e10cSrcweir public void setSecond(Ambiguous value) 207*cdf0e10cSrcweir throws PropertyVetoException, UnknownPropertyException 208*cdf0e10cSrcweir { 209*cdf0e10cSrcweir PropertySetMixin.BoundListeners l 210*cdf0e10cSrcweir = new PropertySetMixin.BoundListeners(); 211*cdf0e10cSrcweir prop.prepareSet( 212*cdf0e10cSrcweir "Second", Any.VOID, 213*cdf0e10cSrcweir (((Optional) ((Defaulted) value.Value).Value).IsPresent 214*cdf0e10cSrcweir ? ((Optional) ((Defaulted) value.Value).Value).Value 215*cdf0e10cSrcweir : Any.VOID), 216*cdf0e10cSrcweir l); 217*cdf0e10cSrcweir synchronized (this) { 218*cdf0e10cSrcweir a2 = value; 219*cdf0e10cSrcweir } 220*cdf0e10cSrcweir l.notifyListeners(); 221*cdf0e10cSrcweir } 222*cdf0e10cSrcweir 223*cdf0e10cSrcweir public int getThird() throws UnknownPropertyException { 224*cdf0e10cSrcweir throw new UnknownPropertyException("Third", this); 225*cdf0e10cSrcweir } 226*cdf0e10cSrcweir 227*cdf0e10cSrcweir public void setThird(int value) throws UnknownPropertyException { 228*cdf0e10cSrcweir throw new UnknownPropertyException("Third", this); 229*cdf0e10cSrcweir } 230*cdf0e10cSrcweir 231*cdf0e10cSrcweir public int getFourth() throws UnknownPropertyException { 232*cdf0e10cSrcweir throw new UnknownPropertyException("Fourth", this); 233*cdf0e10cSrcweir } 234*cdf0e10cSrcweir 235*cdf0e10cSrcweir public void setFourth(int value) throws UnknownPropertyException { 236*cdf0e10cSrcweir throw new UnknownPropertyException("Fourth", this); 237*cdf0e10cSrcweir } 238*cdf0e10cSrcweir 239*cdf0e10cSrcweir public com.sun.star.beans.XPropertySetInfo getPropertySetInfo() { 240*cdf0e10cSrcweir return prop.getPropertySetInfo(); 241*cdf0e10cSrcweir } 242*cdf0e10cSrcweir 243*cdf0e10cSrcweir public void setPropertyValue(String propertyName, Object value) 244*cdf0e10cSrcweir throws UnknownPropertyException, PropertyVetoException, 245*cdf0e10cSrcweir com.sun.star.lang.IllegalArgumentException, WrappedTargetException 246*cdf0e10cSrcweir { 247*cdf0e10cSrcweir prop.setPropertyValue(propertyName, value); 248*cdf0e10cSrcweir } 249*cdf0e10cSrcweir 250*cdf0e10cSrcweir public Object getPropertyValue(String propertyName) 251*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 252*cdf0e10cSrcweir { 253*cdf0e10cSrcweir return prop.getPropertyValue(propertyName); 254*cdf0e10cSrcweir } 255*cdf0e10cSrcweir 256*cdf0e10cSrcweir public void addPropertyChangeListener( 257*cdf0e10cSrcweir String propertyName, XPropertyChangeListener listener) 258*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 259*cdf0e10cSrcweir { 260*cdf0e10cSrcweir prop.addPropertyChangeListener(propertyName, listener); 261*cdf0e10cSrcweir } 262*cdf0e10cSrcweir 263*cdf0e10cSrcweir public void removePropertyChangeListener( 264*cdf0e10cSrcweir String propertyName, XPropertyChangeListener listener) 265*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 266*cdf0e10cSrcweir { 267*cdf0e10cSrcweir prop.removePropertyChangeListener(propertyName, listener); 268*cdf0e10cSrcweir } 269*cdf0e10cSrcweir 270*cdf0e10cSrcweir public void addVetoableChangeListener( 271*cdf0e10cSrcweir String propertyName, XVetoableChangeListener listener) 272*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 273*cdf0e10cSrcweir { 274*cdf0e10cSrcweir prop.addVetoableChangeListener(propertyName, listener); 275*cdf0e10cSrcweir } 276*cdf0e10cSrcweir 277*cdf0e10cSrcweir public void removeVetoableChangeListener( 278*cdf0e10cSrcweir String propertyName, XVetoableChangeListener listener) 279*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 280*cdf0e10cSrcweir { 281*cdf0e10cSrcweir prop.removeVetoableChangeListener(propertyName, listener); 282*cdf0e10cSrcweir } 283*cdf0e10cSrcweir 284*cdf0e10cSrcweir public void setFastPropertyValue(int handle, Object value) 285*cdf0e10cSrcweir throws UnknownPropertyException, PropertyVetoException, 286*cdf0e10cSrcweir com.sun.star.lang.IllegalArgumentException, WrappedTargetException 287*cdf0e10cSrcweir { 288*cdf0e10cSrcweir prop.setFastPropertyValue(handle, value); 289*cdf0e10cSrcweir } 290*cdf0e10cSrcweir 291*cdf0e10cSrcweir public Object getFastPropertyValue(int handle) 292*cdf0e10cSrcweir throws UnknownPropertyException, WrappedTargetException 293*cdf0e10cSrcweir { 294*cdf0e10cSrcweir return prop.getFastPropertyValue(handle); 295*cdf0e10cSrcweir } 296*cdf0e10cSrcweir 297*cdf0e10cSrcweir public PropertyValue[] getPropertyValues() { 298*cdf0e10cSrcweir return prop.getPropertyValues(); 299*cdf0e10cSrcweir } 300*cdf0e10cSrcweir 301*cdf0e10cSrcweir public void setPropertyValues(PropertyValue[] props) 302*cdf0e10cSrcweir throws UnknownPropertyException, PropertyVetoException, 303*cdf0e10cSrcweir com.sun.star.lang.IllegalArgumentException, WrappedTargetException 304*cdf0e10cSrcweir { 305*cdf0e10cSrcweir prop.setPropertyValues(props); 306*cdf0e10cSrcweir } 307*cdf0e10cSrcweir 308*cdf0e10cSrcweir private final PropertySetMixin prop = new PropertySetMixin( 309*cdf0e10cSrcweir context, this, new Type(XTest3.class), new String[] { "Third" }); 310*cdf0e10cSrcweir 311*cdf0e10cSrcweir private int a1 = 0; 312*cdf0e10cSrcweir private Ambiguous a2 = new Ambiguous( 313*cdf0e10cSrcweir new Defaulted(new Optional(), true), false); 314*cdf0e10cSrcweir } 315*cdf0e10cSrcweir 316*cdf0e10cSrcweir private final XComponentContext context; 317*cdf0e10cSrcweir } 318