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 import com.sun.star.uno.UnoRuntime; 25*b1cdbd2cSJim Jagielski import com.sun.star.uno.XComponentContext; 26*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiComponentFactory; 27*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet; 28*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyValue; 29*b1cdbd2cSJim Jagielski import com.sun.star.beans.UnknownPropertyException; 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski /* 32*b1cdbd2cSJim Jagielski * 33*b1cdbd2cSJim Jagielski * @author Carsten Driesner 34*b1cdbd2cSJim Jagielski * Provides example code how to access and use the 35*b1cdbd2cSJim Jagielski * path pathsettings servce. 36*b1cdbd2cSJim Jagielski */ 37*b1cdbd2cSJim Jagielski public class PathSettingsTest extends java.lang.Object { 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski /* 40*b1cdbd2cSJim Jagielski * List of pre-defined path variables supported by 41*b1cdbd2cSJim Jagielski * the path settings service. 42*b1cdbd2cSJim Jagielski */ 43*b1cdbd2cSJim Jagielski private static String[] predefinedPathProperties = { 44*b1cdbd2cSJim Jagielski "Addin", 45*b1cdbd2cSJim Jagielski "AutoCorrect", 46*b1cdbd2cSJim Jagielski "AutoText", 47*b1cdbd2cSJim Jagielski "Backup", 48*b1cdbd2cSJim Jagielski "Basic", 49*b1cdbd2cSJim Jagielski "Bitmap", 50*b1cdbd2cSJim Jagielski "Config", 51*b1cdbd2cSJim Jagielski "Dictionary", 52*b1cdbd2cSJim Jagielski "Favorite", 53*b1cdbd2cSJim Jagielski "Filter", 54*b1cdbd2cSJim Jagielski "Gallery", 55*b1cdbd2cSJim Jagielski "Graphic", 56*b1cdbd2cSJim Jagielski "Help", 57*b1cdbd2cSJim Jagielski "Linguistic", 58*b1cdbd2cSJim Jagielski "Module", 59*b1cdbd2cSJim Jagielski "Palette", 60*b1cdbd2cSJim Jagielski "Plugin", 61*b1cdbd2cSJim Jagielski "Storage", 62*b1cdbd2cSJim Jagielski "Temp", 63*b1cdbd2cSJim Jagielski "Template", 64*b1cdbd2cSJim Jagielski "UIConfig", 65*b1cdbd2cSJim Jagielski "UserConfig", 66*b1cdbd2cSJim Jagielski "UserDictionary", 67*b1cdbd2cSJim Jagielski "Work" 68*b1cdbd2cSJim Jagielski }; 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski /* 71*b1cdbd2cSJim Jagielski * @param args the command line arguments 72*b1cdbd2cSJim Jagielski */ main(String[] args)73*b1cdbd2cSJim Jagielski public static void main(String[] args) { 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski XComponentContext xRemoteContext = null; 76*b1cdbd2cSJim Jagielski XMultiComponentFactory xRemoteServiceManager = null; 77*b1cdbd2cSJim Jagielski XPropertySet xPathSettingsService = null; 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski try { 80*b1cdbd2cSJim Jagielski // get the remote office context. If necessary a new office 81*b1cdbd2cSJim Jagielski // process is started 82*b1cdbd2cSJim Jagielski xRemoteContext = com.sun.star.comp.helper.Bootstrap.bootstrap(); 83*b1cdbd2cSJim Jagielski System.out.println("Connected to a running office ..."); 84*b1cdbd2cSJim Jagielski xRemoteServiceManager = xRemoteContext.getServiceManager(); 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski Object pathSubst = xRemoteServiceManager.createInstanceWithContext( 87*b1cdbd2cSJim Jagielski "com.sun.star.comp.framework.PathSettings", xRemoteContext ); 88*b1cdbd2cSJim Jagielski xPathSettingsService = (XPropertySet)UnoRuntime.queryInterface( 89*b1cdbd2cSJim Jagielski XPropertySet.class, pathSubst); 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski /* Work with path settings */ 92*b1cdbd2cSJim Jagielski workWithPathSettings( xPathSettingsService ); 93*b1cdbd2cSJim Jagielski } 94*b1cdbd2cSJim Jagielski catch (java.lang.Exception e){ 95*b1cdbd2cSJim Jagielski e.printStackTrace(); 96*b1cdbd2cSJim Jagielski } 97*b1cdbd2cSJim Jagielski finally { 98*b1cdbd2cSJim Jagielski System.exit(0); 99*b1cdbd2cSJim Jagielski } 100*b1cdbd2cSJim Jagielski } 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski /* 103*b1cdbd2cSJim Jagielski * Retrieve and set path properties from path settings service 104*b1cdbd2cSJim Jagielski * @param xPathSettingsService the path settings service 105*b1cdbd2cSJim Jagielski */ workWithPathSettings( XPropertySet xPathSettingsService )106*b1cdbd2cSJim Jagielski public static void workWithPathSettings( XPropertySet xPathSettingsService ) 107*b1cdbd2cSJim Jagielski { 108*b1cdbd2cSJim Jagielski if ( xPathSettingsService != null ) { 109*b1cdbd2cSJim Jagielski for ( int i=0; i<predefinedPathProperties.length; i++ ) { 110*b1cdbd2cSJim Jagielski try { 111*b1cdbd2cSJim Jagielski /* Retrieve values for path properties from path settings 112*b1cdbd2cSJim Jagielski * service*/ 113*b1cdbd2cSJim Jagielski Object aValue = xPathSettingsService.getPropertyValue( 114*b1cdbd2cSJim Jagielski predefinedPathProperties[i] ); 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski // getPropertyValue returns an Object, you have to cast 117*b1cdbd2cSJim Jagielski // it to type that you need 118*b1cdbd2cSJim Jagielski String aPath = (String)aValue; 119*b1cdbd2cSJim Jagielski System.out.println( "Property="+ predefinedPathProperties[i] 120*b1cdbd2cSJim Jagielski + " Path=" + aPath ); 121*b1cdbd2cSJim Jagielski } 122*b1cdbd2cSJim Jagielski catch ( com.sun.star.beans.UnknownPropertyException e) { 123*b1cdbd2cSJim Jagielski System.err.println( "UnknownPropertyException has been thrown accessing "+predefinedPathProperties[i]); 124*b1cdbd2cSJim Jagielski } 125*b1cdbd2cSJim Jagielski catch ( com.sun.star.lang.WrappedTargetException e ) { 126*b1cdbd2cSJim Jagielski System.err.println( "WrappedTargetException has been thrown accessing "+predefinedPathProperties[i]); 127*b1cdbd2cSJim Jagielski } 128*b1cdbd2cSJim Jagielski } 129*b1cdbd2cSJim Jagielski 130*b1cdbd2cSJim Jagielski // Try to modfiy the work path property. After running this example 131*b1cdbd2cSJim Jagielski // you should see the new value of "My Documents" in the path options 132*b1cdbd2cSJim Jagielski // tab page, accessible via "Tools - Options - [Star|Open]Office - 133*b1cdbd2cSJim Jagielski // Paths". 134*b1cdbd2cSJim Jagielski // If you want to revert the changes, you can also do it with the 135*b1cdbd2cSJim Jagielski // path tab page. 136*b1cdbd2cSJim Jagielski try { 137*b1cdbd2cSJim Jagielski xPathSettingsService.setPropertyValue( "Work", "$(temp)" ); 138*b1cdbd2cSJim Jagielski String aValue = (String)xPathSettingsService.getPropertyValue( "Work" ); 139*b1cdbd2cSJim Jagielski System.out.println( "\nNote: The example changes your current " 140*b1cdbd2cSJim Jagielski +"setting of the work path!\nThe work path " 141*b1cdbd2cSJim Jagielski +"should be now=" + aValue ); 142*b1cdbd2cSJim Jagielski } 143*b1cdbd2cSJim Jagielski catch ( com.sun.star.beans.UnknownPropertyException e) { 144*b1cdbd2cSJim Jagielski System.err.println( "UnknownPropertyException has been thrown accessing PathSettings service"); 145*b1cdbd2cSJim Jagielski } 146*b1cdbd2cSJim Jagielski catch ( com.sun.star.lang.WrappedTargetException e ) { 147*b1cdbd2cSJim Jagielski System.err.println( "WrappedTargetException has been thrown accessing PathSettings service"); 148*b1cdbd2cSJim Jagielski } 149*b1cdbd2cSJim Jagielski catch ( com.sun.star.beans.PropertyVetoException e ) { 150*b1cdbd2cSJim Jagielski System.err.println( "PropertyVetoException has been thrown accessing PathSettings service"); 151*b1cdbd2cSJim Jagielski } 152*b1cdbd2cSJim Jagielski catch ( com.sun.star.lang.IllegalArgumentException e ) { 153*b1cdbd2cSJim Jagielski System.err.println( "IllegalArgumentException has been thrown accessing PathSettings service"); 154*b1cdbd2cSJim Jagielski } 155*b1cdbd2cSJim Jagielski } 156*b1cdbd2cSJim Jagielski } 157*b1cdbd2cSJim Jagielski } 158