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