1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski /* 25*b1cdbd2cSJim Jagielski This example shows a UNO component that inherits com.sun.star.lib.uno.helper.PropertySet in 26*b1cdbd2cSJim Jagielski order to provide implementations of these interfaces: 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski com.sun.star.beans.XPropertySet 29*b1cdbd2cSJim Jagielski com.sun.star.beans.XMultiPropertySet 30*b1cdbd2cSJim Jagielski com.sun.star.beans.XFastPropertySet 31*b1cdbd2cSJim Jagielski com.sun.star.lang.XComponent 32*b1cdbd2cSJim Jagielski com.sun.star.uno.XWeak 33*b1cdbd2cSJim Jagielski com.sun.star.lang.XTypeProvider 34*b1cdbd2cSJim Jagielski */ 35*b1cdbd2cSJim Jagielski import com.sun.star.lib.uno.helper.PropertySet; 36*b1cdbd2cSJim Jagielski import com.sun.star.comp.loader.FactoryHelper; 37*b1cdbd2cSJim Jagielski import com.sun.star.lang.XServiceInfo; 38*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 39*b1cdbd2cSJim Jagielski import com.sun.star.lang.XSingleServiceFactory; 40*b1cdbd2cSJim Jagielski import com.sun.star.registry.XRegistryKey; 41*b1cdbd2cSJim Jagielski import com.sun.star.uno.Any; 42*b1cdbd2cSJim Jagielski import com.sun.star.uno.Type; 43*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface; 44*b1cdbd2cSJim Jagielski import com.sun.star.lang.XTypeProvider; 45*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyAttribute; 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski /** 48*b1cdbd2cSJim Jagielski This component contains the followin properties: 49*b1cdbd2cSJim Jagielski * <table border> 50*b1cdbd2cSJim Jagielski * <tr> 51*b1cdbd2cSJim Jagielski * <th> Property Name </th> 52*b1cdbd2cSJim Jagielski * <th> Type Name </th> 53*b1cdbd2cSJim Jagielski * <th> PropertyAttribute </th> 54*b1cdbd2cSJim Jagielski * <tr><td>boolA</td><td>BOOLEAN</td><td> - </td</tr> 55*b1cdbd2cSJim Jagielski * <tr><td>charA</td><td>CHAR</td><td> - </td></tr> 56*b1cdbd2cSJim Jagielski * <tr><td>byteA</td><td>BYTE</td><td> - </td></tr> 57*b1cdbd2cSJim Jagielski * <tr><td>shortA</td><td>SHORT</td><td> - </td></tr> 58*b1cdbd2cSJim Jagielski * <tr><td>intA</td><td>LONG</td><td> - </td></tr> 59*b1cdbd2cSJim Jagielski * <tr><td>longA</td><td>HYPER</td><td> - </td></tr> 60*b1cdbd2cSJim Jagielski * <tr><td>floatA</td><td>FLOAT</td><td> - </td></tr> 61*b1cdbd2cSJim Jagielski * <tr><td>doubleA</td><td>DOUBLE</td><td> - </td></tr> 62*b1cdbd2cSJim Jagielski * <tr><td>stringA</td><td>STRING</td><td> - </td></tr> 63*b1cdbd2cSJim Jagielski * <tr><td>objectA</td><td>ANY</td><td> - </td></tr> 64*b1cdbd2cSJim Jagielski * <tr><td>anyA</td><td>ANY</td><td> - </td></tr> 65*b1cdbd2cSJim Jagielski * <tr><td>typeA</td><td>TYPE</td><td> - </td></tr> 66*b1cdbd2cSJim Jagielski * <tr><td>xinterfaceA</td><td>INTERFACE</td><td> - </td></tr> 67*b1cdbd2cSJim Jagielski * <tr><td>xtypeproviderA</td><td>INTERFACE</td><td> - </td></tr> 68*b1cdbd2cSJim Jagielski * <tr><td>arBoolA</td><td>[]boolean</td><td> - </td></tr> 69*b1cdbd2cSJim Jagielski * <tr><td>arCharA</td><td>[]char</td><td> - </td></tr> 70*b1cdbd2cSJim Jagielski * <tr><td>arByteA</td><td>[]byte</td><td> - </td></tr> 71*b1cdbd2cSJim Jagielski * <tr><td>arShortA</td><td>[]short</td><td> - </td></tr> 72*b1cdbd2cSJim Jagielski * <tr><td>arIntA</td><td>[]long</td><td> - </td></tr> 73*b1cdbd2cSJim Jagielski * <tr><td>arLongA</td><td>[]hyper</td><td> - </td></tr> 74*b1cdbd2cSJim Jagielski * <tr><td>arFloatA</td><td>[]float</td><td> - </td></tr> 75*b1cdbd2cSJim Jagielski * <tr><td>arDoubleA</td><td>[]double</td><td> - </td></tr> 76*b1cdbd2cSJim Jagielski * <tr><td>arStringA</td><td>[]string</td><td> - </td></tr> 77*b1cdbd2cSJim Jagielski * <tr><td>arObjectA</td><td>[]any</td><td> - </td></tr> 78*b1cdbd2cSJim Jagielski * <tr><td>arXinterfaceA</td><td>[]com.sun.star.uno.XInterface</td><td> - </td></tr> 79*b1cdbd2cSJim Jagielski * <tr><td>ar2BoolA</td><td>[][]boolean</td><td> - </td></tr> 80*b1cdbd2cSJim Jagielski * <tr><td>boolClassA</td><td>boolean</td><td> - </td></tr> 81*b1cdbd2cSJim Jagielski * <tr><td>charClassA</td><td>char</td><td> - </td></tr> 82*b1cdbd2cSJim Jagielski * <tr><td>byteClassA</td><td>byte</td><td> - </td></tr> 83*b1cdbd2cSJim Jagielski * <tr><td>shortClassA</td><td>short</td><td> - </td></tr> 84*b1cdbd2cSJim Jagielski * <tr><td>intClassA</td><td>long</td><td> - </td></tr> 85*b1cdbd2cSJim Jagielski * <tr><td>longClassA</td><td>hyper</td><td> - </td></tr> 86*b1cdbd2cSJim Jagielski * <tr><td>floatClassA</td><td>float</td><td> - </td></tr> 87*b1cdbd2cSJim Jagielski * <tr><td>doubleClassA</td><td>double</td><td> - </td></tr> 88*b1cdbd2cSJim Jagielski * <tr><td>roIntA</td><td>long</td><td>READONLY</td></tr> 89*b1cdbd2cSJim Jagielski * <tr><td>roIntClassA</td><td>long</td><td>READONLY</td></tr> 90*b1cdbd2cSJim Jagielski * <tr><td>roObjectA</td><td>any</td><td>READONLY</td></tr> 91*b1cdbd2cSJim Jagielski * <tr><td>roAnyA</td><td>any</td><td>READONLY</td></tr> 92*b1cdbd2cSJim Jagielski * <tr><td>bcBoolA</td><td>boolean</td><td>BOUND,CONSTRAINED</td></tr> 93*b1cdbd2cSJim Jagielski * <tr><td>bcBoolClassA</td><td>boolean</td><td>BOUND,CONSTRAINED</td></tr> 94*b1cdbd2cSJim Jagielski * <tr><td>bcObjectA</td><td>any</td><td>BOUND,CONSTRAINED</td></tr> 95*b1cdbd2cSJim Jagielski * <tr><td>bcAnyA</td><td>any</td><td>BOUND,CONSTRAINED</td></tr> 96*b1cdbd2cSJim Jagielski * <tr><td>mvIntA</td><td>long</td><td>MAYBEVOID</td></tr> 97*b1cdbd2cSJim Jagielski * <tr><td>mvObjectA</td><td>any</td><td>MAYBEVOID</td></tr> 98*b1cdbd2cSJim Jagielski * <tr><td>mvAnyA</td><td>any</td><td>MAYBEVOID</td></tr> 99*b1cdbd2cSJim Jagielski * <tr><td>mvXinterfaceA</td><td>any</td><td>MAYBEVOID</td></tr> 100*b1cdbd2cSJim Jagielski </table> 101*b1cdbd2cSJim Jagielski */ 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski public class PropTest extends PropertySet implements XServiceInfo 104*b1cdbd2cSJim Jagielski { 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski public boolean boolA; 107*b1cdbd2cSJim Jagielski public char charA; 108*b1cdbd2cSJim Jagielski public byte byteA; 109*b1cdbd2cSJim Jagielski public short shortA; 110*b1cdbd2cSJim Jagielski public int intA; 111*b1cdbd2cSJim Jagielski public long longA; 112*b1cdbd2cSJim Jagielski public float floatA; 113*b1cdbd2cSJim Jagielski public double doubleA; 114*b1cdbd2cSJim Jagielski public String stringA; // MAYBEVOID 115*b1cdbd2cSJim Jagielski public Object objectA; // MAYBEVOID 116*b1cdbd2cSJim Jagielski public Any anyA; // MAYBEVOID 117*b1cdbd2cSJim Jagielski public Type typeA;// MAYBEVOID 118*b1cdbd2cSJim Jagielski public XInterface xinterfaceA;// MAYBEVOID 119*b1cdbd2cSJim Jagielski public XTypeProvider xtypeproviderA;// MAYBEVOID 120*b1cdbd2cSJim Jagielski public boolean[] arBoolA; // MAYBEVOID 121*b1cdbd2cSJim Jagielski public char[] arCharA; // MAYBEVOID 122*b1cdbd2cSJim Jagielski public byte[] arByteA; // MAYBEVOID 123*b1cdbd2cSJim Jagielski public short[] arShortA; // MAYBEVOID 124*b1cdbd2cSJim Jagielski public int[] arIntA; // MAYBEVOID 125*b1cdbd2cSJim Jagielski public long[] arLongA; // MAYBEVOID 126*b1cdbd2cSJim Jagielski public float[] arFloatA; // MAYBEVOID 127*b1cdbd2cSJim Jagielski public double[] arDoubleA; // MAYBEVOID 128*b1cdbd2cSJim Jagielski public String[] arStringA; // MAYBEVOID 129*b1cdbd2cSJim Jagielski public Object[] arObjectA; // MAYBEVOID 130*b1cdbd2cSJim Jagielski public Any[] arAnyA; // MAYBEVOID 131*b1cdbd2cSJim Jagielski public XInterface[] arXinterfaceA; // MAYBEVOID 132*b1cdbd2cSJim Jagielski public boolean[][] ar2BoolA; // MAYBEVOID 133*b1cdbd2cSJim Jagielski public Boolean boolClassA; // MAYBEVOID 134*b1cdbd2cSJim Jagielski public Character charClassA; // MAYBEVOID 135*b1cdbd2cSJim Jagielski public Byte byteClassA; // MAYBEVOID 136*b1cdbd2cSJim Jagielski public Short shortClassA; // MAYBEVOID 137*b1cdbd2cSJim Jagielski public Integer intClassA; // MAYBEVOID 138*b1cdbd2cSJim Jagielski public Long longClassA; // MAYBEVOID 139*b1cdbd2cSJim Jagielski public Float floatClassA; // MAYBEVOID 140*b1cdbd2cSJim Jagielski public Double doubleClassA; // MAYBEVOID 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski // readonly 143*b1cdbd2cSJim Jagielski public int roIntA= 100; 144*b1cdbd2cSJim Jagielski public Integer roIntClassA= new Integer(100); 145*b1cdbd2cSJim Jagielski public Object roObjectA= new Integer(101); 146*b1cdbd2cSJim Jagielski public Any roAnyA= new Any( new Type(int.class), new Integer(102)); 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski // BOUND & CONSTRAINED 149*b1cdbd2cSJim Jagielski public boolean bcBoolA; 150*b1cdbd2cSJim Jagielski public Boolean bcBoolClassA; // MAYBEVOID 151*b1cdbd2cSJim Jagielski public Object bcObjectA; // MAYBEVOID 152*b1cdbd2cSJim Jagielski public Any bcAnyA; // MAYBEVOID 153*b1cdbd2cSJim Jagielski 154*b1cdbd2cSJim Jagielski // MAYBEVOID 155*b1cdbd2cSJim Jagielski public Integer mvIntA; 156*b1cdbd2cSJim Jagielski public Object mvObjectA; 157*b1cdbd2cSJim Jagielski public Any mvAnyA; 158*b1cdbd2cSJim Jagielski public XInterface mvXinterfaceA; 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski public static final String __serviceName="PropTest"; 161*b1cdbd2cSJim Jagielski PropTest()162*b1cdbd2cSJim Jagielski public PropTest() { 163*b1cdbd2cSJim Jagielski registerProperty("boolA", (short) 0); 164*b1cdbd2cSJim Jagielski registerProperty("charA", (short) 0); 165*b1cdbd2cSJim Jagielski registerProperty("byteA", (short) 0); 166*b1cdbd2cSJim Jagielski registerProperty("shortA", (short) 0); 167*b1cdbd2cSJim Jagielski registerProperty("intA", (short) 0); 168*b1cdbd2cSJim Jagielski registerProperty("longA", (short) 0); 169*b1cdbd2cSJim Jagielski registerProperty("floatA", (short) 0); 170*b1cdbd2cSJim Jagielski registerProperty("doubleA", (short) 0); 171*b1cdbd2cSJim Jagielski registerProperty("stringA", PropertyAttribute.MAYBEVOID); 172*b1cdbd2cSJim Jagielski registerProperty("objectA", PropertyAttribute.MAYBEVOID); 173*b1cdbd2cSJim Jagielski registerProperty("anyA", PropertyAttribute.MAYBEVOID); 174*b1cdbd2cSJim Jagielski registerProperty("typeA", PropertyAttribute.MAYBEVOID); 175*b1cdbd2cSJim Jagielski registerProperty("xinterfaceA", PropertyAttribute.MAYBEVOID); 176*b1cdbd2cSJim Jagielski registerProperty("xtypeproviderA", PropertyAttribute.MAYBEVOID); 177*b1cdbd2cSJim Jagielski registerProperty("arBoolA", PropertyAttribute.MAYBEVOID); 178*b1cdbd2cSJim Jagielski registerProperty("arCharA", PropertyAttribute.MAYBEVOID); 179*b1cdbd2cSJim Jagielski registerProperty("arByteA", PropertyAttribute.MAYBEVOID); 180*b1cdbd2cSJim Jagielski registerProperty("arShortA", PropertyAttribute.MAYBEVOID); 181*b1cdbd2cSJim Jagielski registerProperty("arIntA", PropertyAttribute.MAYBEVOID); 182*b1cdbd2cSJim Jagielski registerProperty("arLongA", PropertyAttribute.MAYBEVOID); 183*b1cdbd2cSJim Jagielski registerProperty("arFloatA", PropertyAttribute.MAYBEVOID); 184*b1cdbd2cSJim Jagielski registerProperty("arDoubleA", PropertyAttribute.MAYBEVOID); 185*b1cdbd2cSJim Jagielski registerProperty("arStringA", PropertyAttribute.MAYBEVOID); 186*b1cdbd2cSJim Jagielski registerProperty("arObjectA", PropertyAttribute.MAYBEVOID); 187*b1cdbd2cSJim Jagielski registerProperty("arAnyA", PropertyAttribute.MAYBEVOID); 188*b1cdbd2cSJim Jagielski registerProperty("arXinterfaceA", PropertyAttribute.MAYBEVOID); 189*b1cdbd2cSJim Jagielski registerProperty("ar2BoolA", PropertyAttribute.MAYBEVOID); 190*b1cdbd2cSJim Jagielski registerProperty("boolClassA", PropertyAttribute.MAYBEVOID); 191*b1cdbd2cSJim Jagielski registerProperty("charClassA", PropertyAttribute.MAYBEVOID); 192*b1cdbd2cSJim Jagielski registerProperty("byteClassA", PropertyAttribute.MAYBEVOID); 193*b1cdbd2cSJim Jagielski registerProperty("shortClassA", PropertyAttribute.MAYBEVOID); 194*b1cdbd2cSJim Jagielski registerProperty("intClassA", PropertyAttribute.MAYBEVOID); 195*b1cdbd2cSJim Jagielski registerProperty("longClassA", PropertyAttribute.MAYBEVOID); 196*b1cdbd2cSJim Jagielski registerProperty("floatClassA", PropertyAttribute.MAYBEVOID); 197*b1cdbd2cSJim Jagielski registerProperty("doubleClassA", PropertyAttribute.MAYBEVOID); 198*b1cdbd2cSJim Jagielski registerProperty("roIntA", PropertyAttribute.READONLY); 199*b1cdbd2cSJim Jagielski registerProperty("roIntClassA", PropertyAttribute.READONLY); 200*b1cdbd2cSJim Jagielski registerProperty("roObjectA", PropertyAttribute.READONLY); 201*b1cdbd2cSJim Jagielski registerProperty("roAnyA", PropertyAttribute.READONLY); 202*b1cdbd2cSJim Jagielski registerProperty("bcBoolA",(short) ( PropertyAttribute.BOUND | PropertyAttribute.CONSTRAINED)); 203*b1cdbd2cSJim Jagielski registerProperty("bcBoolClassA", (short) (PropertyAttribute.BOUND | PropertyAttribute.CONSTRAINED | PropertyAttribute.MAYBEVOID)); 204*b1cdbd2cSJim Jagielski registerProperty("bcObjectA", (short) (PropertyAttribute.BOUND | PropertyAttribute.CONSTRAINED | PropertyAttribute.MAYBEVOID)); 205*b1cdbd2cSJim Jagielski registerProperty("bcAnyA", (short) (PropertyAttribute.BOUND | PropertyAttribute.CONSTRAINED |PropertyAttribute.MAYBEVOID)); 206*b1cdbd2cSJim Jagielski registerProperty("mvIntA", PropertyAttribute.MAYBEVOID); 207*b1cdbd2cSJim Jagielski registerProperty("mvObjectA", PropertyAttribute.MAYBEVOID); 208*b1cdbd2cSJim Jagielski registerProperty("mvAnyA", PropertyAttribute.MAYBEVOID); 209*b1cdbd2cSJim Jagielski registerProperty("mvXinterfaceA", PropertyAttribute.MAYBEVOID); 210*b1cdbd2cSJim Jagielski } 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski // XServiceName getImplementationName( )214*b1cdbd2cSJim Jagielski public String getImplementationName( ) 215*b1cdbd2cSJim Jagielski { 216*b1cdbd2cSJim Jagielski return getClass().getName(); 217*b1cdbd2cSJim Jagielski } 218*b1cdbd2cSJim Jagielski 219*b1cdbd2cSJim Jagielski // XServiceName supportsService( String name )220*b1cdbd2cSJim Jagielski public boolean supportsService( /*IN*/String name ) 221*b1cdbd2cSJim Jagielski { 222*b1cdbd2cSJim Jagielski if (name.equals(__serviceName)) 223*b1cdbd2cSJim Jagielski return true; 224*b1cdbd2cSJim Jagielski return false; 225*b1cdbd2cSJim Jagielski } 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski //XServiceName getSupportedServiceNames( )228*b1cdbd2cSJim Jagielski public String[] getSupportedServiceNames( ) 229*b1cdbd2cSJim Jagielski { 230*b1cdbd2cSJim Jagielski String[] retValue= new String[]{__serviceName}; 231*b1cdbd2cSJim Jagielski return retValue; 232*b1cdbd2cSJim Jagielski } 233*b1cdbd2cSJim Jagielski __getServiceFactory(String implName, XMultiServiceFactory multiFactory, XRegistryKey regKey)234*b1cdbd2cSJim Jagielski public static XSingleServiceFactory __getServiceFactory(String implName, 235*b1cdbd2cSJim Jagielski XMultiServiceFactory multiFactory, 236*b1cdbd2cSJim Jagielski XRegistryKey regKey) 237*b1cdbd2cSJim Jagielski { 238*b1cdbd2cSJim Jagielski XSingleServiceFactory xSingleServiceFactory = null; 239*b1cdbd2cSJim Jagielski 240*b1cdbd2cSJim Jagielski if (implName.equals( PropTest.class.getName()) ) 241*b1cdbd2cSJim Jagielski xSingleServiceFactory = FactoryHelper.getServiceFactory( PropTest.class, 242*b1cdbd2cSJim Jagielski PropTest.__serviceName, 243*b1cdbd2cSJim Jagielski multiFactory, 244*b1cdbd2cSJim Jagielski regKey); 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski return xSingleServiceFactory; 247*b1cdbd2cSJim Jagielski } 248*b1cdbd2cSJim Jagielski 249*b1cdbd2cSJim Jagielski // This method not longer necessary since OOo 3.4 where the component registration 250*b1cdbd2cSJim Jagielski // was changed to passive component registration. For more details see 251*b1cdbd2cSJim Jagielski // http://wiki.services.openoffice.org/wiki/Passive_Component_Registration 252*b1cdbd2cSJim Jagielski 253*b1cdbd2cSJim Jagielski // public static boolean __writeRegistryServiceInfo(XRegistryKey regKey) 254*b1cdbd2cSJim Jagielski // { 255*b1cdbd2cSJim Jagielski // return FactoryHelper.writeRegistryServiceInfo( PropTest.class.getName(), 256*b1cdbd2cSJim Jagielski // PropTest.__serviceName, regKey); 257*b1cdbd2cSJim Jagielski // } 258*b1cdbd2cSJim Jagielski } 259