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 package ifc.ui.dialogs;
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski import lib.MultiMethodTest;
27*b1cdbd2cSJim Jagielski import lib.Status;
28*b1cdbd2cSJim Jagielski import lib.StatusException;
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski import com.sun.star.ui.dialogs.XControlAccess;
31*b1cdbd2cSJim Jagielski import com.sun.star.ui.dialogs.XControlInformation;
32*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime;
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski /**
35*b1cdbd2cSJim Jagielski * Testing <code>com.sun.star.ui.XFilePicker</code>
36*b1cdbd2cSJim Jagielski * interface methods :
37*b1cdbd2cSJim Jagielski * <ul>
38*b1cdbd2cSJim Jagielski *  <li><code> setControlProperty()</code></li>
39*b1cdbd2cSJim Jagielski *  <li><code> getControlProperty()</code></li>
40*b1cdbd2cSJim Jagielski * </ul> <p>
41*b1cdbd2cSJim Jagielski *
42*b1cdbd2cSJim Jagielski * For testing this interface the component must implement
43*b1cdbd2cSJim Jagielski * <code>com.sun.star.ui.dialogs.XControlInformation</code>
44*b1cdbd2cSJim Jagielski * interface. <p>
45*b1cdbd2cSJim Jagielski *
46*b1cdbd2cSJim Jagielski * Test is <b> NOT </b> multithread compilant. <p>
47*b1cdbd2cSJim Jagielski * @see com.sun.star.ui.XFolderPicker
48*b1cdbd2cSJim Jagielski */
49*b1cdbd2cSJim Jagielski public class _XControlAccess extends MultiMethodTest {
50*b1cdbd2cSJim Jagielski 
51*b1cdbd2cSJim Jagielski     public XControlAccess oObj = null;
52*b1cdbd2cSJim Jagielski     private XControlInformation xCI = null ;
53*b1cdbd2cSJim Jagielski     private String[] supControls = null ;
54*b1cdbd2cSJim Jagielski     private String[][] supProperties = null ;
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski     /**
57*b1cdbd2cSJim Jagielski      * Tries to query <code>com.sun.star.ui.dialogs.XControlInformation</code>
58*b1cdbd2cSJim Jagielski      * interface, and obtain properties' names of each available
59*b1cdbd2cSJim Jagielski      * control. <p>
60*b1cdbd2cSJim Jagielski      *
61*b1cdbd2cSJim Jagielski      * @throw StatusException if interface is not supported or
62*b1cdbd2cSJim Jagielski      * properties couldn't be get.
63*b1cdbd2cSJim Jagielski      */
before()64*b1cdbd2cSJim Jagielski     protected void before() {
65*b1cdbd2cSJim Jagielski         xCI = (XControlInformation) UnoRuntime.queryInterface
66*b1cdbd2cSJim Jagielski             (XControlInformation.class, oObj);
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski         if (xCI == null) throw new StatusException
69*b1cdbd2cSJim Jagielski             (Status.failed("XControlInformation not supported")) ;
70*b1cdbd2cSJim Jagielski 
71*b1cdbd2cSJim Jagielski         supControls = xCI.getSupportedControls();
72*b1cdbd2cSJim Jagielski         supProperties = new String[supControls.length][];
73*b1cdbd2cSJim Jagielski         for (int i = 0; i < supControls.length; i++) {
74*b1cdbd2cSJim Jagielski             try {
75*b1cdbd2cSJim Jagielski                 supProperties[i] =
76*b1cdbd2cSJim Jagielski                     xCI.getSupportedControlProperties(supControls[i]);
77*b1cdbd2cSJim Jagielski             } catch (com.sun.star.lang.IllegalArgumentException e) {
78*b1cdbd2cSJim Jagielski                 e.printStackTrace(log);
79*b1cdbd2cSJim Jagielski                 throw new StatusException
80*b1cdbd2cSJim Jagielski                     ("Exception while init.", e) ;
81*b1cdbd2cSJim Jagielski             }
82*b1cdbd2cSJim Jagielski         }
83*b1cdbd2cSJim Jagielski     }
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski     /**
86*b1cdbd2cSJim Jagielski      * Tries to change each property of each control.
87*b1cdbd2cSJim Jagielski      * Has <b>OK</b> status if values are properly changed.
88*b1cdbd2cSJim Jagielski      */
_setControlProperty()89*b1cdbd2cSJim Jagielski     public void _setControlProperty() {
90*b1cdbd2cSJim Jagielski         boolean result = true ;
91*b1cdbd2cSJim Jagielski         String error = "";
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski         for (int i = 0; i < supControls.length; i++) {
94*b1cdbd2cSJim Jagielski             log.println("Checking properties for control " + supControls[i]);
95*b1cdbd2cSJim Jagielski             for (int j = 0; j < supProperties[i].length; j++) {
96*b1cdbd2cSJim Jagielski                 log.println("\t" + supProperties[i][j]);
97*b1cdbd2cSJim Jagielski                 try {
98*b1cdbd2cSJim Jagielski                     Object oldVal = oObj.getControlProperty(supControls[i],
99*b1cdbd2cSJim Jagielski                         supProperties[i][j]);
100*b1cdbd2cSJim Jagielski                     Object newVal = util.ValueChanger.changePValue(oldVal);
101*b1cdbd2cSJim Jagielski                     if (supProperties[i][j].startsWith("Help")) {
102*b1cdbd2cSJim Jagielski                         newVal = "HID:133";
103*b1cdbd2cSJim Jagielski                     }
104*b1cdbd2cSJim Jagielski                     oObj.setControlProperty
105*b1cdbd2cSJim Jagielski                         (supControls[i], supProperties[i][j], newVal) ;
106*b1cdbd2cSJim Jagielski                     Object resVal = oObj.getControlProperty(supControls[i],
107*b1cdbd2cSJim Jagielski                         supProperties[i][j]);
108*b1cdbd2cSJim Jagielski                     log.println("\t Old:" + oldVal + ",New:" + newVal
109*b1cdbd2cSJim Jagielski                         + ",Result:" + resVal);
110*b1cdbd2cSJim Jagielski                     if (!util.ValueComparer.equalValue(newVal, resVal)) {
111*b1cdbd2cSJim Jagielski                         error += "####Property '"+supProperties[i][j]+
112*b1cdbd2cSJim Jagielski                             " of "+supControls[i]+" didn't work\n\r"+
113*b1cdbd2cSJim Jagielski                             "\t Old:" + oldVal + ",New:" + newVal
114*b1cdbd2cSJim Jagielski                         + ",Result:" + resVal+ "\n\r";
115*b1cdbd2cSJim Jagielski                     }
116*b1cdbd2cSJim Jagielski                     result &= util.ValueComparer.equalValue(newVal, resVal);
117*b1cdbd2cSJim Jagielski                 } catch (com.sun.star.lang.IllegalArgumentException e) {
118*b1cdbd2cSJim Jagielski                     log.println("Unexpected exception:" );
119*b1cdbd2cSJim Jagielski                     e.printStackTrace(log);
120*b1cdbd2cSJim Jagielski                     result = false ;
121*b1cdbd2cSJim Jagielski                 }
122*b1cdbd2cSJim Jagielski             }
123*b1cdbd2cSJim Jagielski         }
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski         log.println(error);
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski         tRes.tested("setControlProperty()", result) ;
128*b1cdbd2cSJim Jagielski         tRes.tested("getControlProperty()", result) ;
129*b1cdbd2cSJim Jagielski     }
130*b1cdbd2cSJim Jagielski 
131*b1cdbd2cSJim Jagielski     /**
132*b1cdbd2cSJim Jagielski      * Does nothing. Testing performed in <code>setControlProperty</code>
133*b1cdbd2cSJim Jagielski      * method test.
134*b1cdbd2cSJim Jagielski      */
_getControlProperty()135*b1cdbd2cSJim Jagielski     public void _getControlProperty() {}
136*b1cdbd2cSJim Jagielski }
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski 
139