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 // Example DataPilot source component 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski // helper class to hold the settings 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski class ExampleSettings 29*b1cdbd2cSJim Jagielski { 30*b1cdbd2cSJim Jagielski static public final int nDimensionCount = 6; 31*b1cdbd2cSJim Jagielski static public final int nValueDimension = 4; 32*b1cdbd2cSJim Jagielski static public final int nDataDimension = 5; 33*b1cdbd2cSJim Jagielski static public final String [] aDimensionNames = { 34*b1cdbd2cSJim Jagielski "ones", "tens", "hundreds", "thousands", "value", "" }; 35*b1cdbd2cSJim Jagielski getMemberName( int nMember )36*b1cdbd2cSJim Jagielski static public final String getMemberName( int nMember ) 37*b1cdbd2cSJim Jagielski { 38*b1cdbd2cSJim Jagielski return String.valueOf( nMember ); 39*b1cdbd2cSJim Jagielski } 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski public int nMemberCount = 3; 42*b1cdbd2cSJim Jagielski public java.util.List aColDimensions = new java.util.ArrayList(); 43*b1cdbd2cSJim Jagielski public java.util.List aRowDimensions = new java.util.ArrayList(); 44*b1cdbd2cSJim Jagielski } 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski // XPropertySetInfo implementation for getPropertySetInfo 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski class ExamplePropertySetInfo implements com.sun.star.beans.XPropertySetInfo 49*b1cdbd2cSJim Jagielski { 50*b1cdbd2cSJim Jagielski private com.sun.star.beans.Property[] aProperties; 51*b1cdbd2cSJim Jagielski ExamplePropertySetInfo( com.sun.star.beans.Property[] aProps )52*b1cdbd2cSJim Jagielski public ExamplePropertySetInfo( com.sun.star.beans.Property[] aProps ) 53*b1cdbd2cSJim Jagielski { 54*b1cdbd2cSJim Jagielski aProperties = aProps; 55*b1cdbd2cSJim Jagielski } 56*b1cdbd2cSJim Jagielski getProperties()57*b1cdbd2cSJim Jagielski public com.sun.star.beans.Property[] getProperties() 58*b1cdbd2cSJim Jagielski { 59*b1cdbd2cSJim Jagielski return aProperties; 60*b1cdbd2cSJim Jagielski } 61*b1cdbd2cSJim Jagielski getPropertyByName( String aName )62*b1cdbd2cSJim Jagielski public com.sun.star.beans.Property getPropertyByName( String aName ) 63*b1cdbd2cSJim Jagielski throws com.sun.star.beans.UnknownPropertyException 64*b1cdbd2cSJim Jagielski { 65*b1cdbd2cSJim Jagielski for ( int i=0; i<aProperties.length; i++ ) 66*b1cdbd2cSJim Jagielski if ( aProperties[i].Name.equals( aName ) ) 67*b1cdbd2cSJim Jagielski return aProperties[i]; 68*b1cdbd2cSJim Jagielski throw new com.sun.star.beans.UnknownPropertyException(); 69*b1cdbd2cSJim Jagielski } 70*b1cdbd2cSJim Jagielski hasPropertyByName( String aName )71*b1cdbd2cSJim Jagielski public boolean hasPropertyByName( String aName ) 72*b1cdbd2cSJim Jagielski { 73*b1cdbd2cSJim Jagielski for ( int i=0; i<aProperties.length; i++ ) 74*b1cdbd2cSJim Jagielski if ( aProperties[i].Name.equals( aName ) ) 75*b1cdbd2cSJim Jagielski return true; 76*b1cdbd2cSJim Jagielski return false; 77*b1cdbd2cSJim Jagielski } 78*b1cdbd2cSJim Jagielski } 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski // implementation of com.sun.star.sheet.DataPilotSourceMember 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski class ExampleMember implements com.sun.star.container.XNamed, 83*b1cdbd2cSJim Jagielski com.sun.star.beans.XPropertySet 84*b1cdbd2cSJim Jagielski { 85*b1cdbd2cSJim Jagielski private ExampleSettings aSettings; 86*b1cdbd2cSJim Jagielski private int nDimension; 87*b1cdbd2cSJim Jagielski private int nMember; 88*b1cdbd2cSJim Jagielski ExampleMember( ExampleSettings aSet, int nDim, int nMbr )89*b1cdbd2cSJim Jagielski public ExampleMember( ExampleSettings aSet, int nDim, int nMbr ) 90*b1cdbd2cSJim Jagielski { 91*b1cdbd2cSJim Jagielski aSettings = aSet; 92*b1cdbd2cSJim Jagielski nDimension = nDim; 93*b1cdbd2cSJim Jagielski nMember = nMbr; 94*b1cdbd2cSJim Jagielski } 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski // XNamed 97*b1cdbd2cSJim Jagielski getName()98*b1cdbd2cSJim Jagielski public String getName() 99*b1cdbd2cSJim Jagielski { 100*b1cdbd2cSJim Jagielski return ExampleSettings.getMemberName( nMember ); 101*b1cdbd2cSJim Jagielski } 102*b1cdbd2cSJim Jagielski setName( String aName )103*b1cdbd2cSJim Jagielski public void setName( String aName ) 104*b1cdbd2cSJim Jagielski { 105*b1cdbd2cSJim Jagielski // ignored 106*b1cdbd2cSJim Jagielski } 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski // XPropertySet 109*b1cdbd2cSJim Jagielski getPropertySetInfo()110*b1cdbd2cSJim Jagielski public com.sun.star.beans.XPropertySetInfo getPropertySetInfo() 111*b1cdbd2cSJim Jagielski { 112*b1cdbd2cSJim Jagielski return new ExamplePropertySetInfo( new com.sun.star.beans.Property[] { 113*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "IsVisible", -1, 114*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( Boolean.class ), (short) 0), 115*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "ShowDetails", -1, 116*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( Boolean.class ), (short) 0) }); 117*b1cdbd2cSJim Jagielski } 118*b1cdbd2cSJim Jagielski setPropertyValue( String aPropertyName, Object aValue )119*b1cdbd2cSJim Jagielski public void setPropertyValue( String aPropertyName, Object aValue ) 120*b1cdbd2cSJim Jagielski throws com.sun.star.beans.UnknownPropertyException 121*b1cdbd2cSJim Jagielski { 122*b1cdbd2cSJim Jagielski if ( aPropertyName.equals( "IsVisible" ) || 123*b1cdbd2cSJim Jagielski aPropertyName.equals( "ShowDetails" ) ) 124*b1cdbd2cSJim Jagielski { 125*b1cdbd2cSJim Jagielski // ignored 126*b1cdbd2cSJim Jagielski } 127*b1cdbd2cSJim Jagielski else 128*b1cdbd2cSJim Jagielski throw new com.sun.star.beans.UnknownPropertyException(); 129*b1cdbd2cSJim Jagielski } 130*b1cdbd2cSJim Jagielski getPropertyValue( String aPropertyName )131*b1cdbd2cSJim Jagielski public Object getPropertyValue( String aPropertyName ) 132*b1cdbd2cSJim Jagielski throws com.sun.star.beans.UnknownPropertyException 133*b1cdbd2cSJim Jagielski { 134*b1cdbd2cSJim Jagielski if ( aPropertyName.equals( "IsVisible" ) || 135*b1cdbd2cSJim Jagielski aPropertyName.equals( "ShowDetails" ) ) 136*b1cdbd2cSJim Jagielski { 137*b1cdbd2cSJim Jagielski return new Boolean( true ); // always true 138*b1cdbd2cSJim Jagielski } 139*b1cdbd2cSJim Jagielski else 140*b1cdbd2cSJim Jagielski throw new com.sun.star.beans.UnknownPropertyException(); 141*b1cdbd2cSJim Jagielski } 142*b1cdbd2cSJim Jagielski addPropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener)143*b1cdbd2cSJim Jagielski public void addPropertyChangeListener( 144*b1cdbd2cSJim Jagielski String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener) 145*b1cdbd2cSJim Jagielski { 146*b1cdbd2cSJim Jagielski } removePropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener)147*b1cdbd2cSJim Jagielski public void removePropertyChangeListener( 148*b1cdbd2cSJim Jagielski String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener) 149*b1cdbd2cSJim Jagielski { 150*b1cdbd2cSJim Jagielski } addVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)151*b1cdbd2cSJim Jagielski public void addVetoableChangeListener( 152*b1cdbd2cSJim Jagielski String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener) 153*b1cdbd2cSJim Jagielski { 154*b1cdbd2cSJim Jagielski } removeVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)155*b1cdbd2cSJim Jagielski public void removeVetoableChangeListener( 156*b1cdbd2cSJim Jagielski String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener) 157*b1cdbd2cSJim Jagielski { 158*b1cdbd2cSJim Jagielski } 159*b1cdbd2cSJim Jagielski } 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski // implementation of com.sun.star.sheet.DataPilotSourceMembers 162*b1cdbd2cSJim Jagielski 163*b1cdbd2cSJim Jagielski class ExampleMembers implements com.sun.star.container.XNameAccess 164*b1cdbd2cSJim Jagielski { 165*b1cdbd2cSJim Jagielski private ExampleSettings aSettings; 166*b1cdbd2cSJim Jagielski private int nDimension; 167*b1cdbd2cSJim Jagielski private ExampleMember[] aMembers; 168*b1cdbd2cSJim Jagielski ExampleMembers( ExampleSettings aSet, int nDim )169*b1cdbd2cSJim Jagielski public ExampleMembers( ExampleSettings aSet, int nDim ) 170*b1cdbd2cSJim Jagielski { 171*b1cdbd2cSJim Jagielski aSettings = aSet; 172*b1cdbd2cSJim Jagielski nDimension = nDim; 173*b1cdbd2cSJim Jagielski aMembers = new ExampleMember[ aSettings.nMemberCount ]; 174*b1cdbd2cSJim Jagielski } 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski // XNameAccess 177*b1cdbd2cSJim Jagielski getElementType()178*b1cdbd2cSJim Jagielski public com.sun.star.uno.Type getElementType() 179*b1cdbd2cSJim Jagielski { 180*b1cdbd2cSJim Jagielski return new com.sun.star.uno.Type( com.sun.star.container.XNamed.class ); 181*b1cdbd2cSJim Jagielski } 182*b1cdbd2cSJim Jagielski hasElements()183*b1cdbd2cSJim Jagielski public boolean hasElements() 184*b1cdbd2cSJim Jagielski { 185*b1cdbd2cSJim Jagielski return true; // always has elements 186*b1cdbd2cSJim Jagielski } 187*b1cdbd2cSJim Jagielski getByName( String aName )188*b1cdbd2cSJim Jagielski public Object getByName( String aName ) 189*b1cdbd2cSJim Jagielski throws com.sun.star.container.NoSuchElementException 190*b1cdbd2cSJim Jagielski { 191*b1cdbd2cSJim Jagielski int nCount = aSettings.nMemberCount; 192*b1cdbd2cSJim Jagielski for ( int i=0; i<nCount; i++ ) 193*b1cdbd2cSJim Jagielski if ( aName.equals( ExampleSettings.getMemberName( i ) ) ) 194*b1cdbd2cSJim Jagielski { 195*b1cdbd2cSJim Jagielski if ( aMembers[i] == null ) 196*b1cdbd2cSJim Jagielski aMembers[i] = new ExampleMember( aSettings, nDimension, i ); 197*b1cdbd2cSJim Jagielski return aMembers[i]; 198*b1cdbd2cSJim Jagielski } 199*b1cdbd2cSJim Jagielski throw new com.sun.star.container.NoSuchElementException(); 200*b1cdbd2cSJim Jagielski } 201*b1cdbd2cSJim Jagielski getElementNames()202*b1cdbd2cSJim Jagielski public String[] getElementNames() 203*b1cdbd2cSJim Jagielski { 204*b1cdbd2cSJim Jagielski int nCount = aSettings.nMemberCount; 205*b1cdbd2cSJim Jagielski String [] aNames = new String[ nCount ]; 206*b1cdbd2cSJim Jagielski for ( int i=0; i<nCount; i++ ) 207*b1cdbd2cSJim Jagielski aNames[i] = ExampleSettings.getMemberName( i ); 208*b1cdbd2cSJim Jagielski return aNames; 209*b1cdbd2cSJim Jagielski } 210*b1cdbd2cSJim Jagielski hasByName( String aName )211*b1cdbd2cSJim Jagielski public boolean hasByName( String aName ) 212*b1cdbd2cSJim Jagielski { 213*b1cdbd2cSJim Jagielski int nCount = aSettings.nMemberCount; 214*b1cdbd2cSJim Jagielski for ( int i=0; i<nCount; i++ ) 215*b1cdbd2cSJim Jagielski if ( aName.equals( ExampleSettings.getMemberName( i ) ) ) 216*b1cdbd2cSJim Jagielski return true; 217*b1cdbd2cSJim Jagielski return false; 218*b1cdbd2cSJim Jagielski } 219*b1cdbd2cSJim Jagielski } 220*b1cdbd2cSJim Jagielski 221*b1cdbd2cSJim Jagielski // implementation of com.sun.star.sheet.DataPilotSourceLevel 222*b1cdbd2cSJim Jagielski 223*b1cdbd2cSJim Jagielski class ExampleLevel implements 224*b1cdbd2cSJim Jagielski com.sun.star.container.XNamed, 225*b1cdbd2cSJim Jagielski com.sun.star.sheet.XMembersSupplier, 226*b1cdbd2cSJim Jagielski com.sun.star.sheet.XDataPilotMemberResults, 227*b1cdbd2cSJim Jagielski com.sun.star.beans.XPropertySet 228*b1cdbd2cSJim Jagielski { 229*b1cdbd2cSJim Jagielski private ExampleSettings aSettings; 230*b1cdbd2cSJim Jagielski private int nDimension; 231*b1cdbd2cSJim Jagielski private ExampleMembers aMembers; 232*b1cdbd2cSJim Jagielski ExampleLevel( ExampleSettings aSet, int nDim )233*b1cdbd2cSJim Jagielski public ExampleLevel( ExampleSettings aSet, int nDim ) 234*b1cdbd2cSJim Jagielski { 235*b1cdbd2cSJim Jagielski aSettings = aSet; 236*b1cdbd2cSJim Jagielski nDimension = nDim; 237*b1cdbd2cSJim Jagielski } 238*b1cdbd2cSJim Jagielski 239*b1cdbd2cSJim Jagielski // XNamed 240*b1cdbd2cSJim Jagielski getName()241*b1cdbd2cSJim Jagielski public String getName() 242*b1cdbd2cSJim Jagielski { 243*b1cdbd2cSJim Jagielski return ExampleSettings.aDimensionNames[ nDimension ]; 244*b1cdbd2cSJim Jagielski } 245*b1cdbd2cSJim Jagielski setName( String aName )246*b1cdbd2cSJim Jagielski public void setName( String aName ) 247*b1cdbd2cSJim Jagielski { 248*b1cdbd2cSJim Jagielski // ignored 249*b1cdbd2cSJim Jagielski } 250*b1cdbd2cSJim Jagielski 251*b1cdbd2cSJim Jagielski // XMembersSupplier 252*b1cdbd2cSJim Jagielski getMembers()253*b1cdbd2cSJim Jagielski public com.sun.star.container.XNameAccess getMembers() 254*b1cdbd2cSJim Jagielski { 255*b1cdbd2cSJim Jagielski if ( aMembers == null ) 256*b1cdbd2cSJim Jagielski aMembers = new ExampleMembers( aSettings, nDimension ); 257*b1cdbd2cSJim Jagielski return aMembers; 258*b1cdbd2cSJim Jagielski } 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim Jagielski // XDataPilotMemberResults 261*b1cdbd2cSJim Jagielski getResults()262*b1cdbd2cSJim Jagielski public com.sun.star.sheet.MemberResult[] getResults() 263*b1cdbd2cSJim Jagielski { 264*b1cdbd2cSJim Jagielski int nDimensions = 0; 265*b1cdbd2cSJim Jagielski int nPosition = aSettings.aColDimensions.indexOf( new Integer(nDimension)); 266*b1cdbd2cSJim Jagielski if ( nPosition >= 0 ) 267*b1cdbd2cSJim Jagielski nDimensions = aSettings.aColDimensions.size(); 268*b1cdbd2cSJim Jagielski else 269*b1cdbd2cSJim Jagielski { 270*b1cdbd2cSJim Jagielski nPosition = aSettings.aRowDimensions.indexOf( new Integer(nDimension)); 271*b1cdbd2cSJim Jagielski if ( nPosition >= 0 ) 272*b1cdbd2cSJim Jagielski nDimensions = aSettings.aRowDimensions.size(); 273*b1cdbd2cSJim Jagielski } 274*b1cdbd2cSJim Jagielski 275*b1cdbd2cSJim Jagielski if ( nPosition < 0 ) 276*b1cdbd2cSJim Jagielski return new com.sun.star.sheet.MemberResult[0]; 277*b1cdbd2cSJim Jagielski 278*b1cdbd2cSJim Jagielski int nMembers = aSettings.nMemberCount; 279*b1cdbd2cSJim Jagielski int nRepeat = 1; 280*b1cdbd2cSJim Jagielski int nFill = 1; 281*b1cdbd2cSJim Jagielski for ( int i=0; i<nDimensions; i++ ) 282*b1cdbd2cSJim Jagielski { 283*b1cdbd2cSJim Jagielski if ( i < nPosition ) 284*b1cdbd2cSJim Jagielski nRepeat *= nMembers; 285*b1cdbd2cSJim Jagielski else if ( i > nPosition ) 286*b1cdbd2cSJim Jagielski nFill *= nMembers; 287*b1cdbd2cSJim Jagielski } 288*b1cdbd2cSJim Jagielski int nSize = nRepeat * nMembers * nFill; 289*b1cdbd2cSJim Jagielski 290*b1cdbd2cSJim Jagielski com.sun.star.sheet.MemberResult[] aResults = 291*b1cdbd2cSJim Jagielski new com.sun.star.sheet.MemberResult[nSize]; 292*b1cdbd2cSJim Jagielski int nResultPos = 0; 293*b1cdbd2cSJim Jagielski for (int nOuter=0; nOuter<nRepeat; nOuter++) 294*b1cdbd2cSJim Jagielski { 295*b1cdbd2cSJim Jagielski for (int nMember=0; nMember<nMembers; nMember++) 296*b1cdbd2cSJim Jagielski { 297*b1cdbd2cSJim Jagielski aResults[nResultPos] = new com.sun.star.sheet.MemberResult(); 298*b1cdbd2cSJim Jagielski aResults[nResultPos].Name = ExampleSettings.getMemberName(nMember); 299*b1cdbd2cSJim Jagielski aResults[nResultPos].Caption = aResults[nResultPos].Name; 300*b1cdbd2cSJim Jagielski aResults[nResultPos].Flags = 301*b1cdbd2cSJim Jagielski com.sun.star.sheet.MemberResultFlags.HASMEMBER; 302*b1cdbd2cSJim Jagielski ++nResultPos; 303*b1cdbd2cSJim Jagielski 304*b1cdbd2cSJim Jagielski for (int nInner=1; nInner<nFill; nInner++) 305*b1cdbd2cSJim Jagielski { 306*b1cdbd2cSJim Jagielski aResults[nResultPos] = new com.sun.star.sheet.MemberResult(); 307*b1cdbd2cSJim Jagielski aResults[nResultPos].Flags = 308*b1cdbd2cSJim Jagielski com.sun.star.sheet.MemberResultFlags.CONTINUE; 309*b1cdbd2cSJim Jagielski ++nResultPos; 310*b1cdbd2cSJim Jagielski } 311*b1cdbd2cSJim Jagielski } 312*b1cdbd2cSJim Jagielski } 313*b1cdbd2cSJim Jagielski return aResults; 314*b1cdbd2cSJim Jagielski } 315*b1cdbd2cSJim Jagielski 316*b1cdbd2cSJim Jagielski // XPropertySet 317*b1cdbd2cSJim Jagielski getPropertySetInfo()318*b1cdbd2cSJim Jagielski public com.sun.star.beans.XPropertySetInfo getPropertySetInfo() 319*b1cdbd2cSJim Jagielski { 320*b1cdbd2cSJim Jagielski return new ExamplePropertySetInfo( new com.sun.star.beans.Property[] { 321*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "SubTotals", -1, 322*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( 323*b1cdbd2cSJim Jagielski com.sun.star.sheet.GeneralFunction[].class ), 324*b1cdbd2cSJim Jagielski (short) 0 ), 325*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "ShowEmpty", -1, 326*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( Boolean.class ), 327*b1cdbd2cSJim Jagielski (short) 0 ) } ); 328*b1cdbd2cSJim Jagielski } 329*b1cdbd2cSJim Jagielski setPropertyValue( String aPropertyName, Object aValue )330*b1cdbd2cSJim Jagielski public void setPropertyValue( String aPropertyName, Object aValue ) 331*b1cdbd2cSJim Jagielski throws com.sun.star.beans.UnknownPropertyException 332*b1cdbd2cSJim Jagielski { 333*b1cdbd2cSJim Jagielski if ( aPropertyName.equals( "SubTotals" ) || 334*b1cdbd2cSJim Jagielski aPropertyName.equals( "ShowEmpty" ) ) 335*b1cdbd2cSJim Jagielski { 336*b1cdbd2cSJim Jagielski // ignored 337*b1cdbd2cSJim Jagielski } 338*b1cdbd2cSJim Jagielski else 339*b1cdbd2cSJim Jagielski throw new com.sun.star.beans.UnknownPropertyException(); 340*b1cdbd2cSJim Jagielski } 341*b1cdbd2cSJim Jagielski getPropertyValue( String aPropertyName )342*b1cdbd2cSJim Jagielski public Object getPropertyValue( String aPropertyName ) 343*b1cdbd2cSJim Jagielski throws com.sun.star.beans.UnknownPropertyException 344*b1cdbd2cSJim Jagielski { 345*b1cdbd2cSJim Jagielski if ( aPropertyName.equals( "SubTotals" ) ) 346*b1cdbd2cSJim Jagielski return new com.sun.star.sheet.GeneralFunction[0]; 347*b1cdbd2cSJim Jagielski else if ( aPropertyName.equals( "ShowEmpty" ) ) 348*b1cdbd2cSJim Jagielski return new Boolean( true ); 349*b1cdbd2cSJim Jagielski else 350*b1cdbd2cSJim Jagielski throw new com.sun.star.beans.UnknownPropertyException(); 351*b1cdbd2cSJim Jagielski } 352*b1cdbd2cSJim Jagielski addPropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener)353*b1cdbd2cSJim Jagielski public void addPropertyChangeListener( 354*b1cdbd2cSJim Jagielski String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener) 355*b1cdbd2cSJim Jagielski { 356*b1cdbd2cSJim Jagielski } removePropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener)357*b1cdbd2cSJim Jagielski public void removePropertyChangeListener( 358*b1cdbd2cSJim Jagielski String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener) 359*b1cdbd2cSJim Jagielski { 360*b1cdbd2cSJim Jagielski } addVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)361*b1cdbd2cSJim Jagielski public void addVetoableChangeListener( 362*b1cdbd2cSJim Jagielski String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener) 363*b1cdbd2cSJim Jagielski { 364*b1cdbd2cSJim Jagielski } removeVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)365*b1cdbd2cSJim Jagielski public void removeVetoableChangeListener( 366*b1cdbd2cSJim Jagielski String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener) 367*b1cdbd2cSJim Jagielski { 368*b1cdbd2cSJim Jagielski } 369*b1cdbd2cSJim Jagielski } 370*b1cdbd2cSJim Jagielski 371*b1cdbd2cSJim Jagielski // implementation of com.sun.star.sheet.DataPilotSourceLevels 372*b1cdbd2cSJim Jagielski 373*b1cdbd2cSJim Jagielski class ExampleLevels implements com.sun.star.container.XNameAccess 374*b1cdbd2cSJim Jagielski { 375*b1cdbd2cSJim Jagielski private ExampleSettings aSettings; 376*b1cdbd2cSJim Jagielski private int nDimension; 377*b1cdbd2cSJim Jagielski private ExampleLevel aLevel; 378*b1cdbd2cSJim Jagielski ExampleLevels( ExampleSettings aSet, int nDim )379*b1cdbd2cSJim Jagielski public ExampleLevels( ExampleSettings aSet, int nDim ) 380*b1cdbd2cSJim Jagielski { 381*b1cdbd2cSJim Jagielski aSettings = aSet; 382*b1cdbd2cSJim Jagielski nDimension = nDim; 383*b1cdbd2cSJim Jagielski } 384*b1cdbd2cSJim Jagielski 385*b1cdbd2cSJim Jagielski // XNameAccess 386*b1cdbd2cSJim Jagielski getElementType()387*b1cdbd2cSJim Jagielski public com.sun.star.uno.Type getElementType() 388*b1cdbd2cSJim Jagielski { 389*b1cdbd2cSJim Jagielski return new com.sun.star.uno.Type( com.sun.star.container.XNamed.class ); 390*b1cdbd2cSJim Jagielski } 391*b1cdbd2cSJim Jagielski hasElements()392*b1cdbd2cSJim Jagielski public boolean hasElements() 393*b1cdbd2cSJim Jagielski { 394*b1cdbd2cSJim Jagielski return true; // always has elements 395*b1cdbd2cSJim Jagielski } 396*b1cdbd2cSJim Jagielski getByName( String aName )397*b1cdbd2cSJim Jagielski public Object getByName( String aName ) 398*b1cdbd2cSJim Jagielski throws com.sun.star.container.NoSuchElementException 399*b1cdbd2cSJim Jagielski { 400*b1cdbd2cSJim Jagielski // there's only one level with the same name as the dimension / hierarchy 401*b1cdbd2cSJim Jagielski if ( aName.equals( ExampleSettings.aDimensionNames[nDimension] ) ) 402*b1cdbd2cSJim Jagielski { 403*b1cdbd2cSJim Jagielski if ( aLevel == null ) 404*b1cdbd2cSJim Jagielski aLevel = new ExampleLevel( aSettings, nDimension ); 405*b1cdbd2cSJim Jagielski return aLevel; 406*b1cdbd2cSJim Jagielski } 407*b1cdbd2cSJim Jagielski throw new com.sun.star.container.NoSuchElementException(); 408*b1cdbd2cSJim Jagielski } 409*b1cdbd2cSJim Jagielski getElementNames()410*b1cdbd2cSJim Jagielski public String[] getElementNames() 411*b1cdbd2cSJim Jagielski { 412*b1cdbd2cSJim Jagielski String [] aNames = new String[ 1 ]; 413*b1cdbd2cSJim Jagielski aNames[0] = ExampleSettings.aDimensionNames[nDimension]; 414*b1cdbd2cSJim Jagielski return aNames; 415*b1cdbd2cSJim Jagielski } 416*b1cdbd2cSJim Jagielski hasByName( String aName )417*b1cdbd2cSJim Jagielski public boolean hasByName( String aName ) 418*b1cdbd2cSJim Jagielski { 419*b1cdbd2cSJim Jagielski return aName.equals( ExampleSettings.aDimensionNames[nDimension] ); 420*b1cdbd2cSJim Jagielski } 421*b1cdbd2cSJim Jagielski } 422*b1cdbd2cSJim Jagielski 423*b1cdbd2cSJim Jagielski // implementation of com.sun.star.sheet.DataPilotSourceHierarchy 424*b1cdbd2cSJim Jagielski 425*b1cdbd2cSJim Jagielski class ExampleHierarchy implements com.sun.star.container.XNamed, 426*b1cdbd2cSJim Jagielski com.sun.star.sheet.XLevelsSupplier 427*b1cdbd2cSJim Jagielski { 428*b1cdbd2cSJim Jagielski private ExampleSettings aSettings; 429*b1cdbd2cSJim Jagielski private int nDimension; 430*b1cdbd2cSJim Jagielski private ExampleLevels aLevels; 431*b1cdbd2cSJim Jagielski ExampleHierarchy( ExampleSettings aSet, int nDim )432*b1cdbd2cSJim Jagielski public ExampleHierarchy( ExampleSettings aSet, int nDim ) 433*b1cdbd2cSJim Jagielski { 434*b1cdbd2cSJim Jagielski aSettings = aSet; 435*b1cdbd2cSJim Jagielski nDimension = nDim; 436*b1cdbd2cSJim Jagielski } 437*b1cdbd2cSJim Jagielski 438*b1cdbd2cSJim Jagielski // XNamed 439*b1cdbd2cSJim Jagielski getName()440*b1cdbd2cSJim Jagielski public String getName() 441*b1cdbd2cSJim Jagielski { 442*b1cdbd2cSJim Jagielski return ExampleSettings.aDimensionNames[ nDimension ]; 443*b1cdbd2cSJim Jagielski } 444*b1cdbd2cSJim Jagielski setName( String aName )445*b1cdbd2cSJim Jagielski public void setName( String aName ) 446*b1cdbd2cSJim Jagielski { 447*b1cdbd2cSJim Jagielski // ignored 448*b1cdbd2cSJim Jagielski } 449*b1cdbd2cSJim Jagielski 450*b1cdbd2cSJim Jagielski // XLevelsSupplier 451*b1cdbd2cSJim Jagielski getLevels()452*b1cdbd2cSJim Jagielski public com.sun.star.container.XNameAccess getLevels() 453*b1cdbd2cSJim Jagielski { 454*b1cdbd2cSJim Jagielski if ( aLevels == null ) 455*b1cdbd2cSJim Jagielski aLevels = new ExampleLevels( aSettings, nDimension ); 456*b1cdbd2cSJim Jagielski return aLevels; 457*b1cdbd2cSJim Jagielski } 458*b1cdbd2cSJim Jagielski } 459*b1cdbd2cSJim Jagielski 460*b1cdbd2cSJim Jagielski // implementation of com.sun.star.sheet.DataPilotSourceHierarchies 461*b1cdbd2cSJim Jagielski 462*b1cdbd2cSJim Jagielski class ExampleHierarchies implements com.sun.star.container.XNameAccess 463*b1cdbd2cSJim Jagielski { 464*b1cdbd2cSJim Jagielski private ExampleSettings aSettings; 465*b1cdbd2cSJim Jagielski private int nDimension; 466*b1cdbd2cSJim Jagielski private ExampleHierarchy aHierarchy; 467*b1cdbd2cSJim Jagielski ExampleHierarchies( ExampleSettings aSet, int nDim )468*b1cdbd2cSJim Jagielski public ExampleHierarchies( ExampleSettings aSet, int nDim ) 469*b1cdbd2cSJim Jagielski { 470*b1cdbd2cSJim Jagielski aSettings = aSet; 471*b1cdbd2cSJim Jagielski nDimension = nDim; 472*b1cdbd2cSJim Jagielski } 473*b1cdbd2cSJim Jagielski 474*b1cdbd2cSJim Jagielski // XNameAccess 475*b1cdbd2cSJim Jagielski getElementType()476*b1cdbd2cSJim Jagielski public com.sun.star.uno.Type getElementType() 477*b1cdbd2cSJim Jagielski { 478*b1cdbd2cSJim Jagielski return new com.sun.star.uno.Type( com.sun.star.container.XNamed.class ); 479*b1cdbd2cSJim Jagielski } 480*b1cdbd2cSJim Jagielski hasElements()481*b1cdbd2cSJim Jagielski public boolean hasElements() 482*b1cdbd2cSJim Jagielski { 483*b1cdbd2cSJim Jagielski return true; // always has elements 484*b1cdbd2cSJim Jagielski } 485*b1cdbd2cSJim Jagielski getByName( String aName )486*b1cdbd2cSJim Jagielski public Object getByName( String aName ) 487*b1cdbd2cSJim Jagielski throws com.sun.star.container.NoSuchElementException 488*b1cdbd2cSJim Jagielski { 489*b1cdbd2cSJim Jagielski // there's only one hierarchy with the same name as the dimension 490*b1cdbd2cSJim Jagielski if ( aName.equals( ExampleSettings.aDimensionNames[nDimension] ) ) 491*b1cdbd2cSJim Jagielski { 492*b1cdbd2cSJim Jagielski if ( aHierarchy == null ) 493*b1cdbd2cSJim Jagielski aHierarchy = new ExampleHierarchy( aSettings, nDimension ); 494*b1cdbd2cSJim Jagielski return aHierarchy; 495*b1cdbd2cSJim Jagielski } 496*b1cdbd2cSJim Jagielski throw new com.sun.star.container.NoSuchElementException(); 497*b1cdbd2cSJim Jagielski } 498*b1cdbd2cSJim Jagielski getElementNames()499*b1cdbd2cSJim Jagielski public String[] getElementNames() 500*b1cdbd2cSJim Jagielski { 501*b1cdbd2cSJim Jagielski String [] aNames = new String[ 1 ]; 502*b1cdbd2cSJim Jagielski aNames[0] = ExampleSettings.aDimensionNames[nDimension]; 503*b1cdbd2cSJim Jagielski return aNames; 504*b1cdbd2cSJim Jagielski } 505*b1cdbd2cSJim Jagielski hasByName( String aName )506*b1cdbd2cSJim Jagielski public boolean hasByName( String aName ) 507*b1cdbd2cSJim Jagielski { 508*b1cdbd2cSJim Jagielski return aName.equals( ExampleSettings.aDimensionNames[nDimension] ); 509*b1cdbd2cSJim Jagielski } 510*b1cdbd2cSJim Jagielski } 511*b1cdbd2cSJim Jagielski 512*b1cdbd2cSJim Jagielski // implementation of com.sun.star.sheet.DataPilotSourceDimension 513*b1cdbd2cSJim Jagielski 514*b1cdbd2cSJim Jagielski class ExampleDimension implements 515*b1cdbd2cSJim Jagielski com.sun.star.container.XNamed, 516*b1cdbd2cSJim Jagielski com.sun.star.sheet.XHierarchiesSupplier, 517*b1cdbd2cSJim Jagielski com.sun.star.util.XCloneable, 518*b1cdbd2cSJim Jagielski com.sun.star.beans.XPropertySet 519*b1cdbd2cSJim Jagielski { 520*b1cdbd2cSJim Jagielski private ExampleSettings aSettings; 521*b1cdbd2cSJim Jagielski private int nDimension; 522*b1cdbd2cSJim Jagielski private ExampleHierarchies aHierarchies; 523*b1cdbd2cSJim Jagielski private com.sun.star.sheet.DataPilotFieldOrientation eOrientation; 524*b1cdbd2cSJim Jagielski ExampleDimension( ExampleSettings aSet, int nDim )525*b1cdbd2cSJim Jagielski public ExampleDimension( ExampleSettings aSet, int nDim ) 526*b1cdbd2cSJim Jagielski { 527*b1cdbd2cSJim Jagielski aSettings = aSet; 528*b1cdbd2cSJim Jagielski nDimension = nDim; 529*b1cdbd2cSJim Jagielski eOrientation = ( nDim == ExampleSettings.nValueDimension ) ? 530*b1cdbd2cSJim Jagielski com.sun.star.sheet.DataPilotFieldOrientation.DATA : 531*b1cdbd2cSJim Jagielski com.sun.star.sheet.DataPilotFieldOrientation.HIDDEN; 532*b1cdbd2cSJim Jagielski } 533*b1cdbd2cSJim Jagielski 534*b1cdbd2cSJim Jagielski // XNamed 535*b1cdbd2cSJim Jagielski getName()536*b1cdbd2cSJim Jagielski public String getName() 537*b1cdbd2cSJim Jagielski { 538*b1cdbd2cSJim Jagielski return ExampleSettings.aDimensionNames[ nDimension ]; 539*b1cdbd2cSJim Jagielski } 540*b1cdbd2cSJim Jagielski setName( String aName )541*b1cdbd2cSJim Jagielski public void setName( String aName ) 542*b1cdbd2cSJim Jagielski { 543*b1cdbd2cSJim Jagielski // ignored 544*b1cdbd2cSJim Jagielski } 545*b1cdbd2cSJim Jagielski 546*b1cdbd2cSJim Jagielski // XHierarchiesSupplier 547*b1cdbd2cSJim Jagielski getHierarchies()548*b1cdbd2cSJim Jagielski public com.sun.star.container.XNameAccess getHierarchies() 549*b1cdbd2cSJim Jagielski { 550*b1cdbd2cSJim Jagielski if ( aHierarchies == null ) 551*b1cdbd2cSJim Jagielski aHierarchies = new ExampleHierarchies( aSettings, nDimension ); 552*b1cdbd2cSJim Jagielski return aHierarchies; 553*b1cdbd2cSJim Jagielski } 554*b1cdbd2cSJim Jagielski 555*b1cdbd2cSJim Jagielski // XCloneable 556*b1cdbd2cSJim Jagielski createClone()557*b1cdbd2cSJim Jagielski public com.sun.star.util.XCloneable createClone() 558*b1cdbd2cSJim Jagielski { 559*b1cdbd2cSJim Jagielski return null; // not supported 560*b1cdbd2cSJim Jagielski } 561*b1cdbd2cSJim Jagielski 562*b1cdbd2cSJim Jagielski // XPropertySet 563*b1cdbd2cSJim Jagielski getPropertySetInfo()564*b1cdbd2cSJim Jagielski public com.sun.star.beans.XPropertySetInfo getPropertySetInfo() 565*b1cdbd2cSJim Jagielski { 566*b1cdbd2cSJim Jagielski return new ExamplePropertySetInfo( new com.sun.star.beans.Property[] { 567*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "Original", -1, 568*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( com.sun.star.container.XNamed.class), 569*b1cdbd2cSJim Jagielski (short) com.sun.star.beans.PropertyAttribute.READONLY ), 570*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "IsDataLayoutDimension", -1, 571*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( Boolean.class), 572*b1cdbd2cSJim Jagielski (short) com.sun.star.beans.PropertyAttribute.READONLY ), 573*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "Orientation", -1, 574*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( 575*b1cdbd2cSJim Jagielski com.sun.star.sheet.DataPilotFieldOrientation.class), (short) 0), 576*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "Position", -1, 577*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( Integer.class ), (short) 0), 578*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "Function", -1, 579*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type(com.sun.star.sheet.GeneralFunction.class), 580*b1cdbd2cSJim Jagielski (short) 0 ), 581*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "UsedHierarchy", -1, 582*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( Integer.class ), (short) 0 ), 583*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "Filter", -1, 584*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( 585*b1cdbd2cSJim Jagielski com.sun.star.sheet.TableFilterField[].class), (short) 0) }); 586*b1cdbd2cSJim Jagielski } 587*b1cdbd2cSJim Jagielski setPropertyValue( String aPropertyName, Object aValue )588*b1cdbd2cSJim Jagielski public void setPropertyValue( String aPropertyName, Object aValue ) 589*b1cdbd2cSJim Jagielski throws com.sun.star.beans.UnknownPropertyException 590*b1cdbd2cSJim Jagielski { 591*b1cdbd2cSJim Jagielski if ( aPropertyName.equals( "Orientation" ) ) 592*b1cdbd2cSJim Jagielski { 593*b1cdbd2cSJim Jagielski com.sun.star.sheet.DataPilotFieldOrientation eNewOrient = 594*b1cdbd2cSJim Jagielski (com.sun.star.sheet.DataPilotFieldOrientation) aValue; 595*b1cdbd2cSJim Jagielski if ( nDimension != ExampleSettings.nValueDimension && 596*b1cdbd2cSJim Jagielski nDimension != ExampleSettings.nDataDimension && 597*b1cdbd2cSJim Jagielski eNewOrient != com.sun.star.sheet.DataPilotFieldOrientation.DATA ) 598*b1cdbd2cSJim Jagielski { 599*b1cdbd2cSJim Jagielski // remove from list for old orientation and add for new one 600*b1cdbd2cSJim Jagielski Integer aDimInt = new Integer(nDimension); 601*b1cdbd2cSJim Jagielski if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.COLUMN ) 602*b1cdbd2cSJim Jagielski aSettings.aColDimensions.remove( aDimInt ); 603*b1cdbd2cSJim Jagielski else if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.ROW ) 604*b1cdbd2cSJim Jagielski aSettings.aRowDimensions.remove( aDimInt ); 605*b1cdbd2cSJim Jagielski if ( eNewOrient == com.sun.star.sheet.DataPilotFieldOrientation.COLUMN ) 606*b1cdbd2cSJim Jagielski aSettings.aColDimensions.add( aDimInt ); 607*b1cdbd2cSJim Jagielski else if ( eNewOrient == com.sun.star.sheet.DataPilotFieldOrientation.ROW ) 608*b1cdbd2cSJim Jagielski aSettings.aRowDimensions.add( aDimInt ); 609*b1cdbd2cSJim Jagielski 610*b1cdbd2cSJim Jagielski // change orientation 611*b1cdbd2cSJim Jagielski eOrientation = eNewOrient; 612*b1cdbd2cSJim Jagielski } 613*b1cdbd2cSJim Jagielski } 614*b1cdbd2cSJim Jagielski else if ( aPropertyName.equals( "Position" ) ) 615*b1cdbd2cSJim Jagielski { 616*b1cdbd2cSJim Jagielski int nNewPos = ((Integer) aValue).intValue(); 617*b1cdbd2cSJim Jagielski Integer aDimInt = new Integer(nDimension); 618*b1cdbd2cSJim Jagielski if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.COLUMN ) 619*b1cdbd2cSJim Jagielski { 620*b1cdbd2cSJim Jagielski aSettings.aColDimensions.remove( aDimInt ); 621*b1cdbd2cSJim Jagielski aSettings.aColDimensions.add( nNewPos, aDimInt ); 622*b1cdbd2cSJim Jagielski } 623*b1cdbd2cSJim Jagielski else if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.ROW ) 624*b1cdbd2cSJim Jagielski { 625*b1cdbd2cSJim Jagielski aSettings.aRowDimensions.remove( aDimInt ); 626*b1cdbd2cSJim Jagielski aSettings.aRowDimensions.add( nNewPos, aDimInt ); 627*b1cdbd2cSJim Jagielski } 628*b1cdbd2cSJim Jagielski } 629*b1cdbd2cSJim Jagielski else if ( aPropertyName.equals( "Function" ) || aPropertyName.equals( "UsedHierarchy" ) || 630*b1cdbd2cSJim Jagielski aPropertyName.equals( "Filter" ) ) 631*b1cdbd2cSJim Jagielski { 632*b1cdbd2cSJim Jagielski // ignored 633*b1cdbd2cSJim Jagielski } 634*b1cdbd2cSJim Jagielski else 635*b1cdbd2cSJim Jagielski throw new com.sun.star.beans.UnknownPropertyException(); 636*b1cdbd2cSJim Jagielski } 637*b1cdbd2cSJim Jagielski getPropertyValue( String aPropertyName )638*b1cdbd2cSJim Jagielski public Object getPropertyValue( String aPropertyName ) 639*b1cdbd2cSJim Jagielski throws com.sun.star.beans.UnknownPropertyException 640*b1cdbd2cSJim Jagielski { 641*b1cdbd2cSJim Jagielski if ( aPropertyName.equals( "Original" ) ) 642*b1cdbd2cSJim Jagielski return null; 643*b1cdbd2cSJim Jagielski else if ( aPropertyName.equals( "IsDataLayoutDimension" ) ) 644*b1cdbd2cSJim Jagielski return new Boolean( nDimension == ExampleSettings.nDataDimension ); 645*b1cdbd2cSJim Jagielski else if ( aPropertyName.equals( "Orientation" ) ) 646*b1cdbd2cSJim Jagielski return eOrientation; 647*b1cdbd2cSJim Jagielski else if ( aPropertyName.equals( "Position" ) ) 648*b1cdbd2cSJim Jagielski { 649*b1cdbd2cSJim Jagielski int nPosition; 650*b1cdbd2cSJim Jagielski if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.COLUMN ) 651*b1cdbd2cSJim Jagielski nPosition = aSettings.aColDimensions.indexOf( new Integer(nDimension) ); 652*b1cdbd2cSJim Jagielski else if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.ROW ) 653*b1cdbd2cSJim Jagielski nPosition = aSettings.aRowDimensions.indexOf( new Integer(nDimension) ); 654*b1cdbd2cSJim Jagielski else 655*b1cdbd2cSJim Jagielski nPosition = nDimension; 656*b1cdbd2cSJim Jagielski return new Integer( nPosition ); 657*b1cdbd2cSJim Jagielski } 658*b1cdbd2cSJim Jagielski else if ( aPropertyName.equals( "Function" ) ) 659*b1cdbd2cSJim Jagielski return com.sun.star.sheet.GeneralFunction.SUM; 660*b1cdbd2cSJim Jagielski else if ( aPropertyName.equals( "UsedHierarchy" ) ) 661*b1cdbd2cSJim Jagielski return new Integer(0); 662*b1cdbd2cSJim Jagielski else if ( aPropertyName.equals( "Filter" ) ) 663*b1cdbd2cSJim Jagielski return new com.sun.star.sheet.TableFilterField[0]; 664*b1cdbd2cSJim Jagielski else 665*b1cdbd2cSJim Jagielski throw new com.sun.star.beans.UnknownPropertyException(); 666*b1cdbd2cSJim Jagielski } 667*b1cdbd2cSJim Jagielski addPropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener)668*b1cdbd2cSJim Jagielski public void addPropertyChangeListener( 669*b1cdbd2cSJim Jagielski String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener) 670*b1cdbd2cSJim Jagielski { 671*b1cdbd2cSJim Jagielski } removePropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener)672*b1cdbd2cSJim Jagielski public void removePropertyChangeListener( 673*b1cdbd2cSJim Jagielski String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener) 674*b1cdbd2cSJim Jagielski { 675*b1cdbd2cSJim Jagielski } addVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)676*b1cdbd2cSJim Jagielski public void addVetoableChangeListener( 677*b1cdbd2cSJim Jagielski String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener) 678*b1cdbd2cSJim Jagielski { 679*b1cdbd2cSJim Jagielski } removeVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)680*b1cdbd2cSJim Jagielski public void removeVetoableChangeListener( 681*b1cdbd2cSJim Jagielski String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener) 682*b1cdbd2cSJim Jagielski { 683*b1cdbd2cSJim Jagielski } 684*b1cdbd2cSJim Jagielski } 685*b1cdbd2cSJim Jagielski 686*b1cdbd2cSJim Jagielski // implementation of com.sun.star.sheet.DataPilotSourceDimensions 687*b1cdbd2cSJim Jagielski 688*b1cdbd2cSJim Jagielski class ExampleDimensions implements com.sun.star.container.XNameAccess 689*b1cdbd2cSJim Jagielski { 690*b1cdbd2cSJim Jagielski private ExampleSettings aSettings; 691*b1cdbd2cSJim Jagielski private ExampleDimension[] aDimensions; 692*b1cdbd2cSJim Jagielski ExampleDimensions( ExampleSettings aSet )693*b1cdbd2cSJim Jagielski public ExampleDimensions( ExampleSettings aSet ) 694*b1cdbd2cSJim Jagielski { 695*b1cdbd2cSJim Jagielski aSettings = aSet; 696*b1cdbd2cSJim Jagielski } 697*b1cdbd2cSJim Jagielski 698*b1cdbd2cSJim Jagielski // XNameAccess 699*b1cdbd2cSJim Jagielski getElementType()700*b1cdbd2cSJim Jagielski public com.sun.star.uno.Type getElementType() 701*b1cdbd2cSJim Jagielski { 702*b1cdbd2cSJim Jagielski return new com.sun.star.uno.Type( com.sun.star.container.XNamed.class ); 703*b1cdbd2cSJim Jagielski } 704*b1cdbd2cSJim Jagielski hasElements()705*b1cdbd2cSJim Jagielski public boolean hasElements() 706*b1cdbd2cSJim Jagielski { 707*b1cdbd2cSJim Jagielski return true; // always has elements 708*b1cdbd2cSJim Jagielski } 709*b1cdbd2cSJim Jagielski getByName( String aName )710*b1cdbd2cSJim Jagielski public Object getByName( String aName ) 711*b1cdbd2cSJim Jagielski throws com.sun.star.container.NoSuchElementException 712*b1cdbd2cSJim Jagielski { 713*b1cdbd2cSJim Jagielski for (int i=0; i<ExampleSettings.nDimensionCount; i++) 714*b1cdbd2cSJim Jagielski if ( aName.equals( ExampleSettings.aDimensionNames[i] ) ) 715*b1cdbd2cSJim Jagielski { 716*b1cdbd2cSJim Jagielski if ( aDimensions == null ) 717*b1cdbd2cSJim Jagielski aDimensions = new ExampleDimension[ ExampleSettings.nDimensionCount ]; 718*b1cdbd2cSJim Jagielski if ( aDimensions[i] == null ) 719*b1cdbd2cSJim Jagielski aDimensions[i] = new ExampleDimension( aSettings, i ); 720*b1cdbd2cSJim Jagielski return aDimensions[i]; 721*b1cdbd2cSJim Jagielski } 722*b1cdbd2cSJim Jagielski throw new com.sun.star.container.NoSuchElementException(); 723*b1cdbd2cSJim Jagielski } 724*b1cdbd2cSJim Jagielski getElementNames()725*b1cdbd2cSJim Jagielski public String[] getElementNames() 726*b1cdbd2cSJim Jagielski { 727*b1cdbd2cSJim Jagielski String [] aNames = new String[ ExampleSettings.nDimensionCount ]; 728*b1cdbd2cSJim Jagielski for (int i=0; i<ExampleSettings.nDimensionCount; i++) 729*b1cdbd2cSJim Jagielski aNames[ i ] = ExampleSettings.aDimensionNames[i]; 730*b1cdbd2cSJim Jagielski return aNames; 731*b1cdbd2cSJim Jagielski } 732*b1cdbd2cSJim Jagielski hasByName( String aName )733*b1cdbd2cSJim Jagielski public boolean hasByName( String aName ) 734*b1cdbd2cSJim Jagielski { 735*b1cdbd2cSJim Jagielski for (int i=0; i<ExampleSettings.nDimensionCount; i++) 736*b1cdbd2cSJim Jagielski if ( aName.equals( ExampleSettings.aDimensionNames[i] ) ) 737*b1cdbd2cSJim Jagielski return true; 738*b1cdbd2cSJim Jagielski return false; 739*b1cdbd2cSJim Jagielski } 740*b1cdbd2cSJim Jagielski } 741*b1cdbd2cSJim Jagielski 742*b1cdbd2cSJim Jagielski // outer class for service implementation 743*b1cdbd2cSJim Jagielski 744*b1cdbd2cSJim Jagielski public class ExampleDataPilotSource 745*b1cdbd2cSJim Jagielski { 746*b1cdbd2cSJim Jagielski // implementation of com.sun.star.sheet.DataPilotSource 747*b1cdbd2cSJim Jagielski 748*b1cdbd2cSJim Jagielski static public class _ExampleDataPilotSource implements 749*b1cdbd2cSJim Jagielski com.sun.star.sheet.XDimensionsSupplier, 750*b1cdbd2cSJim Jagielski com.sun.star.sheet.XDataPilotResults, 751*b1cdbd2cSJim Jagielski com.sun.star.util.XRefreshable, 752*b1cdbd2cSJim Jagielski com.sun.star.beans.XPropertySet, 753*b1cdbd2cSJim Jagielski com.sun.star.lang.XInitialization, 754*b1cdbd2cSJim Jagielski com.sun.star.lang.XServiceInfo 755*b1cdbd2cSJim Jagielski { 756*b1cdbd2cSJim Jagielski static private final String aServiceName = "com.sun.star.sheet.DataPilotSource"; 757*b1cdbd2cSJim Jagielski static private final String aImplName = _ExampleDataPilotSource.class.getName(); 758*b1cdbd2cSJim Jagielski 759*b1cdbd2cSJim Jagielski private ExampleSettings aSettings = new ExampleSettings(); 760*b1cdbd2cSJim Jagielski private ExampleDimensions aDimensions; 761*b1cdbd2cSJim Jagielski _ExampleDataPilotSource( com.sun.star.lang.XMultiServiceFactory xFactory )762*b1cdbd2cSJim Jagielski public _ExampleDataPilotSource( com.sun.star.lang.XMultiServiceFactory xFactory ) 763*b1cdbd2cSJim Jagielski { 764*b1cdbd2cSJim Jagielski } 765*b1cdbd2cSJim Jagielski 766*b1cdbd2cSJim Jagielski // XInitialization 767*b1cdbd2cSJim Jagielski initialize( Object[] aArguments )768*b1cdbd2cSJim Jagielski public void initialize( Object[] aArguments ) 769*b1cdbd2cSJim Jagielski { 770*b1cdbd2cSJim Jagielski // If the first argument (Source) is a number between 2 and 10, 771*b1cdbd2cSJim Jagielski // use it as member count, otherwise keep the default value. 772*b1cdbd2cSJim Jagielski try 773*b1cdbd2cSJim Jagielski { 774*b1cdbd2cSJim Jagielski if ( aArguments.length >= 1 ) 775*b1cdbd2cSJim Jagielski { 776*b1cdbd2cSJim Jagielski String aSource = com.sun.star.uno.AnyConverter.toString(aArguments[0]); 777*b1cdbd2cSJim Jagielski if ( aSource != null && aSource.length() > 0) 778*b1cdbd2cSJim Jagielski { 779*b1cdbd2cSJim Jagielski int nValue = Integer.parseInt( aSource ); 780*b1cdbd2cSJim Jagielski if ( nValue >= 2 && nValue <= 10 ) 781*b1cdbd2cSJim Jagielski aSettings.nMemberCount = nValue; 782*b1cdbd2cSJim Jagielski } 783*b1cdbd2cSJim Jagielski } 784*b1cdbd2cSJim Jagielski } 785*b1cdbd2cSJim Jagielski catch ( NumberFormatException e ) 786*b1cdbd2cSJim Jagielski { 787*b1cdbd2cSJim Jagielski System.out.println( "Error: caught exception in " + 788*b1cdbd2cSJim Jagielski "ExampleDataPilotSource.initialize!\nException Message = " 789*b1cdbd2cSJim Jagielski + e.getMessage()); 790*b1cdbd2cSJim Jagielski e.printStackTrace(); 791*b1cdbd2cSJim Jagielski } 792*b1cdbd2cSJim Jagielski catch ( com.sun.star.lang.IllegalArgumentException e ) 793*b1cdbd2cSJim Jagielski { 794*b1cdbd2cSJim Jagielski System.out.println( "Error: caught exception in " + 795*b1cdbd2cSJim Jagielski "ExampleDataPilotSource.initialize!\nException Message = " 796*b1cdbd2cSJim Jagielski + e.getMessage()); 797*b1cdbd2cSJim Jagielski e.printStackTrace(); 798*b1cdbd2cSJim Jagielski } 799*b1cdbd2cSJim Jagielski } 800*b1cdbd2cSJim Jagielski 801*b1cdbd2cSJim Jagielski // XDataPilotResults 802*b1cdbd2cSJim Jagielski getResults()803*b1cdbd2cSJim Jagielski public com.sun.star.sheet.DataResult[][] getResults() 804*b1cdbd2cSJim Jagielski { 805*b1cdbd2cSJim Jagielski int[] nDigits = new int[ExampleSettings.nDimensionCount]; 806*b1cdbd2cSJim Jagielski int nValue = 1; 807*b1cdbd2cSJim Jagielski for (int i=0; i<ExampleSettings.nDimensionCount; i++) 808*b1cdbd2cSJim Jagielski { 809*b1cdbd2cSJim Jagielski nDigits[i] = nValue; 810*b1cdbd2cSJim Jagielski nValue *= 10; 811*b1cdbd2cSJim Jagielski } 812*b1cdbd2cSJim Jagielski 813*b1cdbd2cSJim Jagielski int nMemberCount = aSettings.nMemberCount; 814*b1cdbd2cSJim Jagielski int nRowDimCount = aSettings.aRowDimensions.size(); 815*b1cdbd2cSJim Jagielski int nColDimCount = aSettings.aColDimensions.size(); 816*b1cdbd2cSJim Jagielski 817*b1cdbd2cSJim Jagielski int nRows = 1; 818*b1cdbd2cSJim Jagielski for (int i=0; i<nRowDimCount; i++) 819*b1cdbd2cSJim Jagielski nRows *= nMemberCount; 820*b1cdbd2cSJim Jagielski int nColumns = 1; 821*b1cdbd2cSJim Jagielski for (int i=0; i<nColDimCount; i++) 822*b1cdbd2cSJim Jagielski nColumns *= nMemberCount; 823*b1cdbd2cSJim Jagielski 824*b1cdbd2cSJim Jagielski com.sun.star.sheet.DataResult[][] aResults = new com.sun.star.sheet.DataResult[nRows][]; 825*b1cdbd2cSJim Jagielski for (int nRow=0; nRow<nRows; nRow++) 826*b1cdbd2cSJim Jagielski { 827*b1cdbd2cSJim Jagielski int nRowVal = nRow; 828*b1cdbd2cSJim Jagielski int nRowResult = 0; 829*b1cdbd2cSJim Jagielski for (int nRowDim=0; nRowDim<nRowDimCount; nRowDim++) 830*b1cdbd2cSJim Jagielski { 831*b1cdbd2cSJim Jagielski int nDim = ((Integer)aSettings.aRowDimensions.get(nRowDimCount-nRowDim-1)).intValue(); 832*b1cdbd2cSJim Jagielski nRowResult += ( nRowVal % nMemberCount ) * nDigits[nDim]; 833*b1cdbd2cSJim Jagielski nRowVal /= nMemberCount; 834*b1cdbd2cSJim Jagielski } 835*b1cdbd2cSJim Jagielski 836*b1cdbd2cSJim Jagielski aResults[nRow] = new com.sun.star.sheet.DataResult[nColumns]; 837*b1cdbd2cSJim Jagielski for (int nCol=0; nCol<nColumns; nCol++) 838*b1cdbd2cSJim Jagielski { 839*b1cdbd2cSJim Jagielski int nColVal = nCol; 840*b1cdbd2cSJim Jagielski int nResult = nRowResult; 841*b1cdbd2cSJim Jagielski for (int nColDim=0; nColDim<nColDimCount; nColDim++) 842*b1cdbd2cSJim Jagielski { 843*b1cdbd2cSJim Jagielski int nDim = ((Integer)aSettings.aColDimensions.get(nColDimCount-nColDim-1)).intValue(); 844*b1cdbd2cSJim Jagielski nResult += ( nColVal % nMemberCount ) * nDigits[nDim]; 845*b1cdbd2cSJim Jagielski nColVal /= nMemberCount; 846*b1cdbd2cSJim Jagielski } 847*b1cdbd2cSJim Jagielski 848*b1cdbd2cSJim Jagielski aResults[nRow][nCol] = new com.sun.star.sheet.DataResult(); 849*b1cdbd2cSJim Jagielski aResults[nRow][nCol].Flags = com.sun.star.sheet.DataResultFlags.HASDATA; 850*b1cdbd2cSJim Jagielski aResults[nRow][nCol].Value = nResult; 851*b1cdbd2cSJim Jagielski } 852*b1cdbd2cSJim Jagielski } 853*b1cdbd2cSJim Jagielski return aResults; 854*b1cdbd2cSJim Jagielski } 855*b1cdbd2cSJim Jagielski 856*b1cdbd2cSJim Jagielski // XDimensionsSupplier 857*b1cdbd2cSJim Jagielski getDimensions()858*b1cdbd2cSJim Jagielski public com.sun.star.container.XNameAccess getDimensions() 859*b1cdbd2cSJim Jagielski { 860*b1cdbd2cSJim Jagielski if ( aDimensions == null ) 861*b1cdbd2cSJim Jagielski aDimensions = new ExampleDimensions( aSettings ); 862*b1cdbd2cSJim Jagielski return aDimensions; 863*b1cdbd2cSJim Jagielski } 864*b1cdbd2cSJim Jagielski 865*b1cdbd2cSJim Jagielski // XPropertySet 866*b1cdbd2cSJim Jagielski getPropertySetInfo()867*b1cdbd2cSJim Jagielski public com.sun.star.beans.XPropertySetInfo getPropertySetInfo() 868*b1cdbd2cSJim Jagielski { 869*b1cdbd2cSJim Jagielski return new ExamplePropertySetInfo( new com.sun.star.beans.Property[] { 870*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "ColumnGrand", -1, 871*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( Boolean.class ), (short) 0), 872*b1cdbd2cSJim Jagielski new com.sun.star.beans.Property( "RowGrand", -1, 873*b1cdbd2cSJim Jagielski new com.sun.star.uno.Type( Boolean.class ), (short) 0) }); 874*b1cdbd2cSJim Jagielski } 875*b1cdbd2cSJim Jagielski setPropertyValue( String aPropertyName, Object aValue )876*b1cdbd2cSJim Jagielski public void setPropertyValue( String aPropertyName, Object aValue ) 877*b1cdbd2cSJim Jagielski throws com.sun.star.beans.UnknownPropertyException 878*b1cdbd2cSJim Jagielski { 879*b1cdbd2cSJim Jagielski if ( aPropertyName.equals( "ColumnGrand" ) || 880*b1cdbd2cSJim Jagielski aPropertyName.equals( "RowGrand" ) ) 881*b1cdbd2cSJim Jagielski { 882*b1cdbd2cSJim Jagielski // ignored 883*b1cdbd2cSJim Jagielski } 884*b1cdbd2cSJim Jagielski else 885*b1cdbd2cSJim Jagielski throw new com.sun.star.beans.UnknownPropertyException(); 886*b1cdbd2cSJim Jagielski } 887*b1cdbd2cSJim Jagielski getPropertyValue( String aPropertyName )888*b1cdbd2cSJim Jagielski public Object getPropertyValue( String aPropertyName ) 889*b1cdbd2cSJim Jagielski throws com.sun.star.beans.UnknownPropertyException 890*b1cdbd2cSJim Jagielski { 891*b1cdbd2cSJim Jagielski if ( aPropertyName.equals( "ColumnGrand" ) || 892*b1cdbd2cSJim Jagielski aPropertyName.equals( "RowGrand" ) ) 893*b1cdbd2cSJim Jagielski { 894*b1cdbd2cSJim Jagielski return new Boolean( false ); // always false 895*b1cdbd2cSJim Jagielski } 896*b1cdbd2cSJim Jagielski else 897*b1cdbd2cSJim Jagielski throw new com.sun.star.beans.UnknownPropertyException(); 898*b1cdbd2cSJim Jagielski } 899*b1cdbd2cSJim Jagielski addPropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener )900*b1cdbd2cSJim Jagielski public void addPropertyChangeListener( 901*b1cdbd2cSJim Jagielski String aPropertyName, 902*b1cdbd2cSJim Jagielski com.sun.star.beans.XPropertyChangeListener xListener ) 903*b1cdbd2cSJim Jagielski { 904*b1cdbd2cSJim Jagielski } removePropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener )905*b1cdbd2cSJim Jagielski public void removePropertyChangeListener( 906*b1cdbd2cSJim Jagielski String aPropertyName, 907*b1cdbd2cSJim Jagielski com.sun.star.beans.XPropertyChangeListener aListener ) 908*b1cdbd2cSJim Jagielski { 909*b1cdbd2cSJim Jagielski } addVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener )910*b1cdbd2cSJim Jagielski public void addVetoableChangeListener( 911*b1cdbd2cSJim Jagielski String PropertyName, 912*b1cdbd2cSJim Jagielski com.sun.star.beans.XVetoableChangeListener aListener ) 913*b1cdbd2cSJim Jagielski { 914*b1cdbd2cSJim Jagielski } removeVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener )915*b1cdbd2cSJim Jagielski public void removeVetoableChangeListener( 916*b1cdbd2cSJim Jagielski String PropertyName, 917*b1cdbd2cSJim Jagielski com.sun.star.beans.XVetoableChangeListener aListener ) 918*b1cdbd2cSJim Jagielski { 919*b1cdbd2cSJim Jagielski } 920*b1cdbd2cSJim Jagielski 921*b1cdbd2cSJim Jagielski // XRefreshable 922*b1cdbd2cSJim Jagielski refresh()923*b1cdbd2cSJim Jagielski public void refresh() 924*b1cdbd2cSJim Jagielski { 925*b1cdbd2cSJim Jagielski } addRefreshListener( com.sun.star.util.XRefreshListener l )926*b1cdbd2cSJim Jagielski public void addRefreshListener( com.sun.star.util.XRefreshListener l ) 927*b1cdbd2cSJim Jagielski { 928*b1cdbd2cSJim Jagielski } removeRefreshListener( com.sun.star.util.XRefreshListener l )929*b1cdbd2cSJim Jagielski public void removeRefreshListener( com.sun.star.util.XRefreshListener l ) 930*b1cdbd2cSJim Jagielski { 931*b1cdbd2cSJim Jagielski } 932*b1cdbd2cSJim Jagielski 933*b1cdbd2cSJim Jagielski // XServiceInfo 934*b1cdbd2cSJim Jagielski getImplementationName()935*b1cdbd2cSJim Jagielski public String getImplementationName() 936*b1cdbd2cSJim Jagielski { 937*b1cdbd2cSJim Jagielski return aImplName; 938*b1cdbd2cSJim Jagielski } 939*b1cdbd2cSJim Jagielski getSupportedServiceNames()940*b1cdbd2cSJim Jagielski public String[] getSupportedServiceNames() 941*b1cdbd2cSJim Jagielski { 942*b1cdbd2cSJim Jagielski String [] aSupportedServices = new String[ 1 ]; 943*b1cdbd2cSJim Jagielski aSupportedServices[ 0 ] = aServiceName; 944*b1cdbd2cSJim Jagielski return aSupportedServices; 945*b1cdbd2cSJim Jagielski } 946*b1cdbd2cSJim Jagielski supportsService( String aService )947*b1cdbd2cSJim Jagielski public boolean supportsService( String aService ) 948*b1cdbd2cSJim Jagielski { 949*b1cdbd2cSJim Jagielski return aService.equals( aServiceName ); 950*b1cdbd2cSJim Jagielski } 951*b1cdbd2cSJim Jagielski } 952*b1cdbd2cSJim Jagielski __getServiceFactory( String implName, com.sun.star.lang.XMultiServiceFactory multiFactory, com.sun.star.registry.XRegistryKey regKey)953*b1cdbd2cSJim Jagielski public static com.sun.star.lang.XSingleServiceFactory __getServiceFactory( 954*b1cdbd2cSJim Jagielski String implName, 955*b1cdbd2cSJim Jagielski com.sun.star.lang.XMultiServiceFactory multiFactory, 956*b1cdbd2cSJim Jagielski com.sun.star.registry.XRegistryKey regKey) 957*b1cdbd2cSJim Jagielski { 958*b1cdbd2cSJim Jagielski com.sun.star.lang.XSingleServiceFactory xSingleServiceFactory = null; 959*b1cdbd2cSJim Jagielski 960*b1cdbd2cSJim Jagielski if ( implName.equals(_ExampleDataPilotSource.aImplName) ) 961*b1cdbd2cSJim Jagielski xSingleServiceFactory = 962*b1cdbd2cSJim Jagielski com.sun.star.comp.loader.FactoryHelper.getServiceFactory( 963*b1cdbd2cSJim Jagielski _ExampleDataPilotSource.class, 964*b1cdbd2cSJim Jagielski _ExampleDataPilotSource.aServiceName, multiFactory, regKey); 965*b1cdbd2cSJim Jagielski 966*b1cdbd2cSJim Jagielski return xSingleServiceFactory; 967*b1cdbd2cSJim Jagielski } 968*b1cdbd2cSJim Jagielski 969*b1cdbd2cSJim Jagielski // This method not longer necessary since OOo 3.4 where the component registration 970*b1cdbd2cSJim Jagielski // was changed to passive component registration. For more details see 971*b1cdbd2cSJim Jagielski // http://wiki.services.openoffice.org/wiki/Passive_Component_Registration 972*b1cdbd2cSJim Jagielski 973*b1cdbd2cSJim Jagielski // public static boolean __writeRegistryServiceInfo( 974*b1cdbd2cSJim Jagielski // com.sun.star.registry.XRegistryKey regKey) 975*b1cdbd2cSJim Jagielski // { 976*b1cdbd2cSJim Jagielski // return com.sun.star.comp.loader.FactoryHelper.writeRegistryServiceInfo( 977*b1cdbd2cSJim Jagielski // _ExampleDataPilotSource.aImplName, 978*b1cdbd2cSJim Jagielski // _ExampleDataPilotSource.aServiceName, regKey); 979*b1cdbd2cSJim Jagielski // } 980*b1cdbd2cSJim Jagielski } 981*b1cdbd2cSJim Jagielski 982