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<HTML>
22*b1cdbd2cSJim Jagielski<HEAD>
23*b1cdbd2cSJim Jagielski<META NAME="GENERATOR" Content="Microsoft Developer Studio">
24*b1cdbd2cSJim Jagielski<META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1">
25*b1cdbd2cSJim Jagielski<TITLE>Document Title</TITLE>
26*b1cdbd2cSJim Jagielski</HEAD>
27*b1cdbd2cSJim Jagielski<BODY id=theBody>
28*b1cdbd2cSJim Jagielski
29*b1cdbd2cSJim Jagielski<script language="JScript">
30*b1cdbd2cSJim Jagielskifunction callOleTest(	 id)
31*b1cdbd2cSJim Jagielski{
32*b1cdbd2cSJim Jagielski	var factory= new ActiveXObject("com.sun.star.ServiceManager");
33*b1cdbd2cSJim Jagielski	var oletest= factory.createInstance("oletest.OleTest");
34*b1cdbd2cSJim Jagielski//	alert(oletest);
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielski	switch( id)
37*b1cdbd2cSJim Jagielski	{
38*b1cdbd2cSJim Jagielski		case 1: // Test simple call of JScript object function from UNO
39*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 1);
40*b1cdbd2cSJim Jagielski		break;
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski		case 2:
43*b1cdbd2cSJim Jagielski		// return value is the parameter object
44*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 2);
45*b1cdbd2cSJim Jagielski		break;
46*b1cdbd2cSJim Jagielski		//##################################################
47*b1cdbd2cSJim Jagielski		// OUT parameter
48*b1cdbd2cSJim Jagielski		//##################################################
49*b1cdbd2cSJim Jagielski		case 3: // Test out parameter of type interface
50*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 3);
51*b1cdbd2cSJim Jagielski		break;
52*b1cdbd2cSJim Jagielski		case 4: // Test out parameter of type struct
53*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 4);
54*b1cdbd2cSJim Jagielski		break;
55*b1cdbd2cSJim Jagielski		case 5: // Test out parameter of type enum
56*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 5);
57*b1cdbd2cSJim Jagielski		break;
58*b1cdbd2cSJim Jagielski		case 6: // Test out parameter of type sequence<any>
59*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 6);
60*b1cdbd2cSJim Jagielski		break;
61*b1cdbd2cSJim Jagielski		case 7: // Test out parameter of type any
62*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 7);
63*b1cdbd2cSJim Jagielski		break;
64*b1cdbd2cSJim Jagielski		case 8: // Test out parameter of type bool
65*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 8);
66*b1cdbd2cSJim Jagielski		break;
67*b1cdbd2cSJim Jagielski		case 9: // Test out parameter of type char
68*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 9);
69*b1cdbd2cSJim Jagielski		break;
70*b1cdbd2cSJim Jagielski		case 10: // Test out parameter of type string
71*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 10);
72*b1cdbd2cSJim Jagielski		break;
73*b1cdbd2cSJim Jagielski		case 11: // Test out parameter of type float
74*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 11);
75*b1cdbd2cSJim Jagielski		break;
76*b1cdbd2cSJim Jagielski		case 12: // Test out parameter of type double
77*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 12);
78*b1cdbd2cSJim Jagielski		break;
79*b1cdbd2cSJim Jagielski		case 13: // Test out parameter of type byte
80*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 13);
81*b1cdbd2cSJim Jagielski		break;
82*b1cdbd2cSJim Jagielski		case 14: // Test out parameter of type short
83*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 14);
84*b1cdbd2cSJim Jagielski		break;
85*b1cdbd2cSJim Jagielski		case 15: // Test out parameter of type long
86*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 15);
87*b1cdbd2cSJim Jagielski		break;
88*b1cdbd2cSJim Jagielski		case 30: //  outValuesMixed
89*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 30);
90*b1cdbd2cSJim Jagielski		break;
91*b1cdbd2cSJim Jagielski		case 31: //  outValuesAll
92*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 31);
93*b1cdbd2cSJim Jagielski		break;
94*b1cdbd2cSJim Jagielski		//##################################################
95*b1cdbd2cSJim Jagielski		// IN/OUT parameter
96*b1cdbd2cSJim Jagielski		//##################################################
97*b1cdbd2cSJim Jagielski
98*b1cdbd2cSJim Jagielski		case 100: // inoutInterface
99*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 100);
100*b1cdbd2cSJim Jagielski		break;
101*b1cdbd2cSJim Jagielski		case 101: // inoutStruct
102*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 101);
103*b1cdbd2cSJim Jagielski		break;
104*b1cdbd2cSJim Jagielski		case 102: // inoutEnum
105*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 102);
106*b1cdbd2cSJim Jagielski		break;
107*b1cdbd2cSJim Jagielski		case 103: // inoutSeqAny
108*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 103);
109*b1cdbd2cSJim Jagielski		break;
110*b1cdbd2cSJim Jagielski		case 104: // inoutAny
111*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 104);
112*b1cdbd2cSJim Jagielski		break;
113*b1cdbd2cSJim Jagielski		case 105: // inoutBool
114*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 105);
115*b1cdbd2cSJim Jagielski		break;
116*b1cdbd2cSJim Jagielski		case 106: // inoutChar
117*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 106);
118*b1cdbd2cSJim Jagielski		break;
119*b1cdbd2cSJim Jagielski		case 107: // inoutString
120*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 107);
121*b1cdbd2cSJim Jagielski		break;
122*b1cdbd2cSJim Jagielski		case 108: // inoutFloat
123*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 108);
124*b1cdbd2cSJim Jagielski		break;
125*b1cdbd2cSJim Jagielski		case 109: // inoutDouble
126*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 109);
127*b1cdbd2cSJim Jagielski		break;
128*b1cdbd2cSJim Jagielski		case 110: // inoutByte
129*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 110);
130*b1cdbd2cSJim Jagielski		break;
131*b1cdbd2cSJim Jagielski		case 111: // inoutShort
132*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 111);
133*b1cdbd2cSJim Jagielski		break;
134*b1cdbd2cSJim Jagielski		case 112: // inoutLong
135*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 112);
136*b1cdbd2cSJim Jagielski		break;
137*b1cdbd2cSJim Jagielski		case 120: // inoutValuesAll
138*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 120);
139*b1cdbd2cSJim Jagielski		break;
140*b1cdbd2cSJim Jagielski		case 200: // inValues
141*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 200);
142*b1cdbd2cSJim Jagielski		break;
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski		// Call a COM object that has not been passed as parameter to a UNO component and
145*b1cdbd2cSJim Jagielski		// hence no type information are available in the COM wrapper
146*b1cdbd2cSJim Jagielski//		case 300:
147*b1cdbd2cSJim Jagielski		//##################################################
148*b1cdbd2cSJim Jagielski		// Attributes
149*b1cdbd2cSJim Jagielski		//##################################################
150*b1cdbd2cSJim Jagielski		case 400:
151*b1cdbd2cSJim Jagielski		oletest.testInterface( new XCallback_Impl, 400);
152*b1cdbd2cSJim Jagielski		break;
153*b1cdbd2cSJim Jagielski
154*b1cdbd2cSJim Jagielski		case 1000:
155*b1cdbd2cSJim Jagielski		oletest.testInterface2(new MultiInterface(), 0);
156*b1cdbd2cSJim Jagielski		break;
157*b1cdbd2cSJim Jagielski	}
158*b1cdbd2cSJim Jagielski
159*b1cdbd2cSJim Jagielski}
160*b1cdbd2cSJim Jagielski
161*b1cdbd2cSJim Jagielski
162*b1cdbd2cSJim Jagielski
163*b1cdbd2cSJim Jagielski// The class --------------------------------------------
164*b1cdbd2cSJim Jagielski
165*b1cdbd2cSJim Jagielskifunction XCallback_Impl()
166*b1cdbd2cSJim Jagielski{
167*b1cdbd2cSJim Jagielski
168*b1cdbd2cSJim Jagielski	// XCallback
169*b1cdbd2cSJim Jagielski	this._environment= "JScript";
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielski	this.func1= XCallback_Impl_func1;
172*b1cdbd2cSJim Jagielski	this.returnInterface= XCallback_Impl_returnInterface;
173*b1cdbd2cSJim Jagielski	// #################################################
174*b1cdbd2cSJim Jagielski	// OUT parameter
175*b1cdbd2cSJim Jagielski	//###################################################
176*b1cdbd2cSJim Jagielski	this.outInterface= XCallback_Impl_outInterface;
177*b1cdbd2cSJim Jagielski	this.outStruct= XCallback_Impl_outStruct;
178*b1cdbd2cSJim Jagielski	this.outEnum= XCallback_Impl_outEnum;
179*b1cdbd2cSJim Jagielski	this.outSeqAny= XCallback_Impl_outSeqAny;
180*b1cdbd2cSJim Jagielski	this.outAny= XCallback_Impl_outAny;
181*b1cdbd2cSJim Jagielski	this.outBool= XCallback_Impl_outBool;
182*b1cdbd2cSJim Jagielski	this.outChar= XCallback_Impl_outChar;
183*b1cdbd2cSJim Jagielski	this.outString= XCallback_Impl_outString;
184*b1cdbd2cSJim Jagielski	this.outFloat= XCallback_Impl_outFloat;
185*b1cdbd2cSJim Jagielski	this.outDouble= XCallback_Impl_outDouble;
186*b1cdbd2cSJim Jagielski	this.outByte= XCallback_Impl_outByte;
187*b1cdbd2cSJim Jagielski	this.outShort= XCallback_Impl_outShort;
188*b1cdbd2cSJim Jagielski	this.outLong= XCallback_Impl_outLong;
189*b1cdbd2cSJim Jagielski	this.outValuesMixed= XCallback_Impl_outValuesMixed;
190*b1cdbd2cSJim Jagielski	this.outValuesAll= XCallback_Impl_outValuesAll;
191*b1cdbd2cSJim Jagielski	// #################################################
192*b1cdbd2cSJim Jagielski	// IN/ OUT parameter
193*b1cdbd2cSJim Jagielski	//###################################################
194*b1cdbd2cSJim Jagielski	this.inoutInterface= XCallback_Impl_inoutInterface;
195*b1cdbd2cSJim Jagielski	this.inoutStruct= XCallback_Impl_inoutStruct;
196*b1cdbd2cSJim Jagielski	this.inoutEnum= XCallback_Impl_inoutEnum;
197*b1cdbd2cSJim Jagielski	this.inoutSeqAny= XCallback_Impl_inoutSeqAny;
198*b1cdbd2cSJim Jagielski	this.inoutAny= XCallback_Impl_inoutAny;
199*b1cdbd2cSJim Jagielski	this.inoutBool= XCallback_Impl_inoutBool;
200*b1cdbd2cSJim Jagielski	this.inoutChar= XCallback_Impl_inoutChar;
201*b1cdbd2cSJim Jagielski	this.inoutString= XCallback_Impl_inoutString;
202*b1cdbd2cSJim Jagielski	this.inoutFloat= XCallback_Impl_inoutFloat;
203*b1cdbd2cSJim Jagielski	this.inoutDouble= XCallback_Impl_inoutDouble;
204*b1cdbd2cSJim Jagielski	this.inoutByte= XCallback_Impl_inoutByte;
205*b1cdbd2cSJim Jagielski	this.inoutShort= XCallback_Impl_inoutShort;
206*b1cdbd2cSJim Jagielski	this.inoutLong= XCallback_Impl_inoutLong;
207*b1cdbd2cSJim Jagielski	this.inoutValuesAll= XCallback_Impl_inoutValuesAll;
208*b1cdbd2cSJim Jagielski	// #################################################
209*b1cdbd2cSJim Jagielski	// IN parameter
210*b1cdbd2cSJim Jagielski	//##################################################
211*b1cdbd2cSJim Jagielski	this.inValues= XCallback_Impl_inValues;
212*b1cdbd2cSJim Jagielski
213*b1cdbd2cSJim Jagielski	// #################################################
214*b1cdbd2cSJim Jagielski	// Attributes
215*b1cdbd2cSJim Jagielski	//##################################################
216*b1cdbd2cSJim Jagielski	this.simple= new XSimple_Impl();
217*b1cdbd2cSJim Jagielski
218*b1cdbd2cSJim Jagielski
219*b1cdbd2cSJim Jagielski}
220*b1cdbd2cSJim Jagielski
221*b1cdbd2cSJim Jagielski
222*b1cdbd2cSJim Jagielskifunction XCallback_Impl_func1()
223*b1cdbd2cSJim Jagielski{
224*b1cdbd2cSJim Jagielski	alert("XCallback_Impl_func1");
225*b1cdbd2cSJim Jagielski}
226*b1cdbd2cSJim Jagielskifunction XCallback_Impl_returnInterface()
227*b1cdbd2cSJim Jagielski{
228*b1cdbd2cSJim Jagielski	alert("XCallback::returnInterface called");
229*b1cdbd2cSJim Jagielski	return new XSimple_Impl();
230*b1cdbd2cSJim Jagielski}
231*b1cdbd2cSJim Jagielski
232*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outInterface( outVal)
233*b1cdbd2cSJim Jagielski{
234*b1cdbd2cSJim Jagielski	outVal[0]= new XSimple_Impl();
235*b1cdbd2cSJim Jagielski}
236*b1cdbd2cSJim Jagielski
237*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outLong( outVal)
238*b1cdbd2cSJim Jagielski{
239*b1cdbd2cSJim Jagielski	alert("outLong");
240*b1cdbd2cSJim Jagielski}
241*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outStruct( outVal)
242*b1cdbd2cSJim Jagielski{
243*b1cdbd2cSJim Jagielski	var factory= new ActiveXObject("com.sun.star.ServiceManager");
244*b1cdbd2cSJim Jagielski    var starCoreReflection = factory.createInstance("com.sun.star.reflection.CoreReflection");
245*b1cdbd2cSJim Jagielski    var structClass = starCoreReflection.forName("oletest.SimpleStruct");
246*b1cdbd2cSJim Jagielski	var outParam= new Array();
247*b1cdbd2cSJim Jagielski	structClass.createObject(outParam);
248*b1cdbd2cSJim Jagielski	var aStruct= outParam[0];
249*b1cdbd2cSJim Jagielski	aStruct.message= "a Struct created in JScript";
250*b1cdbd2cSJim Jagielski	outVal[0]= aStruct;
251*b1cdbd2cSJim Jagielski
252*b1cdbd2cSJim Jagielski}
253*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outEnum( outVal)
254*b1cdbd2cSJim Jagielski{
255*b1cdbd2cSJim Jagielski	outVal[0]= 2;
256*b1cdbd2cSJim Jagielski}
257*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outSeqAny( outVal)
258*b1cdbd2cSJim Jagielski{
259*b1cdbd2cSJim Jagielski	var ar= new Array(1,2,3);
260*b1cdbd2cSJim Jagielski	outVal[0]= ar;
261*b1cdbd2cSJim Jagielski}
262*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outAny( outVal)
263*b1cdbd2cSJim Jagielski{
264*b1cdbd2cSJim Jagielski	outVal[0]= "this is an Any";
265*b1cdbd2cSJim Jagielski}
266*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outBool( outVal)
267*b1cdbd2cSJim Jagielski{
268*b1cdbd2cSJim Jagielski	outVal[0]= true;
269*b1cdbd2cSJim Jagielski}
270*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outChar( outVal)
271*b1cdbd2cSJim Jagielski{
272*b1cdbd2cSJim Jagielski	outVal[0]= "a";
273*b1cdbd2cSJim Jagielski}
274*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outString( outVal)
275*b1cdbd2cSJim Jagielski{
276*b1cdbd2cSJim Jagielski	outVal[0]= "This string was created in JScript";
277*b1cdbd2cSJim Jagielski}
278*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outFloat( outVal)
279*b1cdbd2cSJim Jagielski{
280*b1cdbd2cSJim Jagielski	outVal[0]= 3.14;
281*b1cdbd2cSJim Jagielski}
282*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outDouble( outVal)
283*b1cdbd2cSJim Jagielski{
284*b1cdbd2cSJim Jagielski	outVal[0]= 3.145;
285*b1cdbd2cSJim Jagielski}
286*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outByte( outVal)
287*b1cdbd2cSJim Jagielski{
288*b1cdbd2cSJim Jagielski	outVal[0]= 100;
289*b1cdbd2cSJim Jagielski}
290*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outShort( outVal)
291*b1cdbd2cSJim Jagielski{
292*b1cdbd2cSJim Jagielski	outVal[0]= 1000;
293*b1cdbd2cSJim Jagielski}
294*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outLong( outVal)
295*b1cdbd2cSJim Jagielski{
296*b1cdbd2cSJim Jagielski	outVal[0]= 1000000;
297*b1cdbd2cSJim Jagielski}
298*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outValuesMixed( inLong, outLong, inString)
299*b1cdbd2cSJim Jagielski{
300*b1cdbd2cSJim Jagielski	alert("inVal long: " + inLong +" inString:" + inString);
301*b1cdbd2cSJim Jagielski	outLong[0]= inLong + 1;
302*b1cdbd2cSJim Jagielski}
303*b1cdbd2cSJim Jagielskifunction XCallback_Impl_outValuesAll( xSimple, aSimpleStruct, aSimpleEnum, seqAny, aAny, aBool,
304*b1cdbd2cSJim Jagielski				aChar, aString, aFloat, aDouble, aByte, aShort, aLong)
305*b1cdbd2cSJim Jagielski{
306*b1cdbd2cSJim Jagielski	this.outInterface( xSimple);
307*b1cdbd2cSJim Jagielski	this.outStruct( aSimpleStruct);
308*b1cdbd2cSJim Jagielski	this.outEnum( aSimpleEnum);
309*b1cdbd2cSJim Jagielski	this.outSeqAny( seqAny);
310*b1cdbd2cSJim Jagielski	this.outAny( aAny);
311*b1cdbd2cSJim Jagielski	this.outBool( aBool);
312*b1cdbd2cSJim Jagielski	this.outChar( aChar);
313*b1cdbd2cSJim Jagielski	this.outString( aString);
314*b1cdbd2cSJim Jagielski	this.outFloat( aFloat);
315*b1cdbd2cSJim Jagielski	this.outDouble( aDouble);
316*b1cdbd2cSJim Jagielski	this.outByte( aByte);
317*b1cdbd2cSJim Jagielski	this.outShort( aShort);
318*b1cdbd2cSJim Jagielski	this.outLong( aLong);
319*b1cdbd2cSJim Jagielski}
320*b1cdbd2cSJim Jagielski
321*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutInterface( val)
322*b1cdbd2cSJim Jagielski{
323*b1cdbd2cSJim Jagielski	val[0].func("calling on in parameter");
324*b1cdbd2cSJim Jagielski	val[0]= new XSimple_Impl();
325*b1cdbd2cSJim Jagielski}
326*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutStruct( val)
327*b1cdbd2cSJim Jagielski{
328*b1cdbd2cSJim Jagielski	alert( val[0].message);
329*b1cdbd2cSJim Jagielski	val[0].message= "property message changed in JScript";
330*b1cdbd2cSJim Jagielski}
331*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutEnum(val)
332*b1cdbd2cSJim Jagielski{
333*b1cdbd2cSJim Jagielski	alert("enum value +" + val);
334*b1cdbd2cSJim Jagielski	val[0]= 2;
335*b1cdbd2cSJim Jagielski}
336*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutSeqAny( val)
337*b1cdbd2cSJim Jagielski{
338*b1cdbd2cSJim Jagielski	var vbar = new VBArray(val[0]);
339*b1cdbd2cSJim Jagielski	var seq= vbar.toArray();
340*b1cdbd2cSJim Jagielski	alert( seq[0] +" "+seq[1] +" " +seq[2]);
341*b1cdbd2cSJim Jagielski	val[0]= new Array("jscript1", "jscript2","jscript3");
342*b1cdbd2cSJim Jagielski}
343*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutAny(val)
344*b1cdbd2cSJim Jagielski{
345*b1cdbd2cSJim Jagielski	alert( "JScript in any: " + val[0]);
346*b1cdbd2cSJim Jagielski	val[0]= "a string from JScript";
347*b1cdbd2cSJim Jagielski}
348*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutBool(val)
349*b1cdbd2cSJim Jagielski{
350*b1cdbd2cSJim Jagielski	alert( "JScript in bool: " + val[0]);
351*b1cdbd2cSJim Jagielski	val[0]= true;
352*b1cdbd2cSJim Jagielski}
353*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutChar(val)
354*b1cdbd2cSJim Jagielski{
355*b1cdbd2cSJim Jagielski	alert( "JScript in char: " + val[0]);
356*b1cdbd2cSJim Jagielski	val[0]= 'b';
357*b1cdbd2cSJim Jagielski}
358*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutString(val)
359*b1cdbd2cSJim Jagielski{
360*b1cdbd2cSJim Jagielski	alert( "JScript in string: " + val[0]);
361*b1cdbd2cSJim Jagielski	val[0]= " a JScript string";
362*b1cdbd2cSJim Jagielski}
363*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutFloat(val)
364*b1cdbd2cSJim Jagielski{
365*b1cdbd2cSJim Jagielski	alert( "JScript in float: " + val[0]);
366*b1cdbd2cSJim Jagielski	val[0]= 4.14;
367*b1cdbd2cSJim Jagielski}
368*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutDouble(val)
369*b1cdbd2cSJim Jagielski{
370*b1cdbd2cSJim Jagielski	alert( "JScript in double: " + val[0]);
371*b1cdbd2cSJim Jagielski	val[0]= 4.145;
372*b1cdbd2cSJim Jagielski}
373*b1cdbd2cSJim Jagielski
374*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutByte(val)
375*b1cdbd2cSJim Jagielski{
376*b1cdbd2cSJim Jagielski	alert( "JScript in byte: " + val[0]);
377*b1cdbd2cSJim Jagielski	val[0]= 100;
378*b1cdbd2cSJim Jagielski}
379*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutShort(val)
380*b1cdbd2cSJim Jagielski{
381*b1cdbd2cSJim Jagielski	alert( "JScript in short: " + val[0]);
382*b1cdbd2cSJim Jagielski	val[0]= 1000;
383*b1cdbd2cSJim Jagielski}
384*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutLong(val)
385*b1cdbd2cSJim Jagielski{
386*b1cdbd2cSJim Jagielski	alert( "JScript in long: " + val[0]);
387*b1cdbd2cSJim Jagielski	val[0]= 100000;
388*b1cdbd2cSJim Jagielski}
389*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inoutValuesAll(aXSimple, aStruct, aEnum, aSeq,
390*b1cdbd2cSJim Jagielski			aAny, aBool, aChar, aString,  aFloat, aDouble,
391*b1cdbd2cSJim Jagielski			aByte, aShort,  aLong )
392*b1cdbd2cSJim Jagielski{
393*b1cdbd2cSJim Jagielski	this.inoutInterface( aXSimple);
394*b1cdbd2cSJim Jagielski	this.inoutStruct( aStruct);
395*b1cdbd2cSJim Jagielski	this.inoutEnum( aEnum);
396*b1cdbd2cSJim Jagielski	this.inoutSeqAny( aSeq);
397*b1cdbd2cSJim Jagielski	this.inoutAny( aAny);
398*b1cdbd2cSJim Jagielski	this.inoutBool( aBool);
399*b1cdbd2cSJim Jagielski	this.inoutChar( aChar);
400*b1cdbd2cSJim Jagielski	this.inoutString( aString);
401*b1cdbd2cSJim Jagielski	this.inoutFloat( aFloat);
402*b1cdbd2cSJim Jagielski	this.inoutDouble( aDouble);
403*b1cdbd2cSJim Jagielski	this.inoutByte( aByte);
404*b1cdbd2cSJim Jagielski	this.inoutShort( aShort);
405*b1cdbd2cSJim Jagielski	this.inoutLong( aLong);
406*b1cdbd2cSJim Jagielski}
407*b1cdbd2cSJim Jagielski
408*b1cdbd2cSJim Jagielskifunction XCallback_Impl_inValues( aChar, aLong, aString)
409*b1cdbd2cSJim Jagielski{
410*b1cdbd2cSJim Jagielski	alert( "char : " + aChar + " long: " + aLong + " string: " + aString);
411*b1cdbd2cSJim Jagielski}
412*b1cdbd2cSJim Jagielski
413*b1cdbd2cSJim Jagielski
414*b1cdbd2cSJim Jagielski//################################################################
415*b1cdbd2cSJim Jagielski// class MultiInterface implements XSimple, XSimple2, XSimple3
416*b1cdbd2cSJim Jagielski//################################################################
417*b1cdbd2cSJim Jagielskifunction MultiInterface()
418*b1cdbd2cSJim Jagielski{
419*b1cdbd2cSJim Jagielski	this._environment= "JScript";
420*b1cdbd2cSJim Jagielski	this._implementedInterfaces= new Array( "oletest.XSimple", "oletest.XSimple2", "oletest.XSimple3");
421*b1cdbd2cSJim Jagielski	// XSimple ---------------
422*b1cdbd2cSJim Jagielski	this.getName= MultiInterface_getName;
423*b1cdbd2cSJim Jagielski	this.func= MultiInterface_func;
424*b1cdbd2cSJim Jagielski	this.func2= MultiInterface_func2;
425*b1cdbd2cSJim Jagielski	this.func3= MultiInterface_func3;
426*b1cdbd2cSJim Jagielski	// XSimple2
427*b1cdbd2cSJim Jagielski	this.getName2= MultiInterface_getName2;
428*b1cdbd2cSJim Jagielski	// XSimple3
429*b1cdbd2cSJim Jagielski	this.getName3= MultiInterface_getName3;
430*b1cdbd2cSJim Jagielski}
431*b1cdbd2cSJim Jagielski
432*b1cdbd2cSJim Jagielski
433*b1cdbd2cSJim Jagielskifunction MultiInterface_getName()
434*b1cdbd2cSJim Jagielski{
435*b1cdbd2cSJim Jagielski	return "JScript XSimple called";
436*b1cdbd2cSJim Jagielski}
437*b1cdbd2cSJim Jagielskifunction MultiInterface_func( message)
438*b1cdbd2cSJim Jagielski{
439*b1cdbd2cSJim Jagielski	alert("JScript object (XSimple)-- " + message);
440*b1cdbd2cSJim Jagielski}
441*b1cdbd2cSJim Jagielski
442*b1cdbd2cSJim Jagielskifunction MultiInterface_getName2()
443*b1cdbd2cSJim Jagielski{
444*b1cdbd2cSJim Jagielski	return "JScript XSimple2 called";
445*b1cdbd2cSJim Jagielski}
446*b1cdbd2cSJim Jagielskifunction MultiInterface_func2( message)
447*b1cdbd2cSJim Jagielski{
448*b1cdbd2cSJim Jagielski	alert("JScript object (XSimple2) -- " + message);
449*b1cdbd2cSJim Jagielski}
450*b1cdbd2cSJim Jagielski
451*b1cdbd2cSJim Jagielskifunction MultiInterface_getName3()
452*b1cdbd2cSJim Jagielski{
453*b1cdbd2cSJim Jagielski	return "JScript XSimple3 called";
454*b1cdbd2cSJim Jagielski}
455*b1cdbd2cSJim Jagielskifunction MultiInterface_func3( message)
456*b1cdbd2cSJim Jagielski{
457*b1cdbd2cSJim Jagielski	alert("JScript object (XSimple3) -- " + message);
458*b1cdbd2cSJim Jagielski}
459*b1cdbd2cSJim Jagielski
460*b1cdbd2cSJim Jagielski
461*b1cdbd2cSJim Jagielski
462*b1cdbd2cSJim Jagielski
463*b1cdbd2cSJim Jagielski//XCallback_Impl_outValuesMixed( val1, outval, val2)
464*b1cdbd2cSJim Jagielski//{
465*b1cdbd2cSJim Jagielski//}
466*b1cdbd2cSJim Jagielski//XCallback_Impl_outValuesAll( xSimple, aSimpleStruct, aSimpleEnum, seqAny, aAny, aBool,
467*b1cdbd2cSJim Jagielski//				aChar, aString, aFloat, aDouble, aByte, aShort, aLong, aUShort, aULong)
468*b1cdbd2cSJim Jagielski//{
469*b1cdbd2cSJim Jagielski//
470*b1cdbd2cSJim Jagielski//}
471*b1cdbd2cSJim Jagielski
472*b1cdbd2cSJim Jagielski
473*b1cdbd2cSJim Jagielski
474*b1cdbd2cSJim Jagielski//  class XSimple_Impl----------------------------------------------------------------------
475*b1cdbd2cSJim Jagielskifunction XSimple_Impl()
476*b1cdbd2cSJim Jagielski{
477*b1cdbd2cSJim Jagielski	//XSimple
478*b1cdbd2cSJim Jagielski	this.func= XSimple_Impl_func;
479*b1cdbd2cSJim Jagielski}
480*b1cdbd2cSJim Jagielskifunction XSimple_Impl_func( message)
481*b1cdbd2cSJim Jagielski{
482*b1cdbd2cSJim Jagielski	alert( "XSimple called." + message);
483*b1cdbd2cSJim Jagielski}
484*b1cdbd2cSJim Jagielski
485*b1cdbd2cSJim Jagielski
486*b1cdbd2cSJim Jagielski</script>
487*b1cdbd2cSJim Jagielski
488*b1cdbd2cSJim Jagielski
489*b1cdbd2cSJim Jagielski
490*b1cdbd2cSJim Jagielski<h2> Object in JScript</h2>
491*b1cdbd2cSJim Jagielski
492*b1cdbd2cSJim JagielskiThis test passes a XCallback to an UNO function of the UNO test control.
493*b1cdbd2cSJim JagielskiXCallback is implemented by the JScript class XCallback_Impl. The function
494*b1cdbd2cSJim JagielskiXCallback::func1 is then called from the UNO test control.
495*b1cdbd2cSJim Jagielski<br>
496*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 1)'>go</Button>
497*b1cdbd2cSJim Jagielski<br>
498*b1cdbd2cSJim JagielskiOn the UNO object the function testInterface is called which takes
499*b1cdbd2cSJim Jagielskia XCallback as parameter. XCallback is implemented in a JScript object.The function
500*b1cdbd2cSJim Jagielskireturns a XSimple Interface. Then the UNO object calls XSimple::notify. This test shall
501*b1cdbd2cSJim Jagielskiverify the correct conversion of the return value( IDispatch JScript object) to an XSimple object.<br>
502*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 2)'>go</Button>
503*b1cdbd2cSJim Jagielski<br>
504*b1cdbd2cSJim Jagielski<h1> out parameter </h1>
505*b1cdbd2cSJim JagielskiThe a JScript object of class XCallback_Impl is passed to the UNO OleTest Control as parameter.
506*b1cdbd2cSJim JagielskiAccording to the buttons the OleTest object calls a function on XCallback_Impl that has appropriate type
507*b1cdbd2cSJim Jagielskias out parameter.<br>
508*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 3)'>interface</Button>
509*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 4)'>struct</Button>
510*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 5)'>enum</Button>
511*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 6)'>sequence&lt;any&gt;</Button>
512*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 7)'>any</Button>
513*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 8)'>bool</Button>
514*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 9)'>char</Button>
515*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 10)'>string</Button>
516*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 11)'>float</Button>
517*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 12)'>double</Button>
518*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 13)'>byte</Button>
519*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 14)'>short</Button>
520*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 15)'>long</Button>
521*b1cdbd2cSJim Jagielski<br>
522*b1cdbd2cSJim JagielskiOther test with out parameters <br>
523*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 30)'>outValuesMixed</Button>
524*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 31)'>outValuesAll</Button>
525*b1cdbd2cSJim Jagielski<h1> in out parameter </h1>
526*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 100)'>interface</Button>
527*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 101)'>struct</Button>
528*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 102)'>enum</Button>
529*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 103)'>seqence&lt;any&gt;</Button>
530*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 104)'>any</Button>
531*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 105)'>bool</Button>
532*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 106)'>char</Button>
533*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 107)'>string</Button>
534*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 108)'>float</Button>
535*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 109)'>double</Button>
536*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 110)'>byte</Button>
537*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 111)'>short</Button>
538*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 112)'>long</Button>
539*b1cdbd2cSJim Jagielski<br>
540*b1cdbd2cSJim Jagielski<h1> Attributes </h1>
541*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 400)'>getting XSimple</Button>
542*b1cdbd2cSJim Jagielski<br>
543*b1cdbd2cSJim Jagielski
544*b1cdbd2cSJim JagielskiOther tests with inout parameters <br>
545*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 120)'>inoutValuesAll</Button>
546*b1cdbd2cSJim Jagielski<h1>in parameters </h1>
547*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 200)'>inValues</Button>
548*b1cdbd2cSJim Jagielski
549*b1cdbd2cSJim Jagielski<h1> JScript object implements several interfaces </h1>
550*b1cdbd2cSJim Jagielski<button onclick='callOleTest( 1000)'>go</Button>
551*b1cdbd2cSJim Jagielski
552*b1cdbd2cSJim Jagielski
553*b1cdbd2cSJim Jagielski
554*b1cdbd2cSJim Jagielski
555*b1cdbd2cSJim Jagielski</body>
556*b1cdbd2cSJim Jagielski</html>
557*b1cdbd2cSJim Jagielski
558*b1cdbd2cSJim Jagielski
559