MDL-20808 "Create AMF test client" Some updates to client :

This commit is contained in:
Jamie Pratt
2010-07-13 06:55:24 +00:00
parent 804f934be3
commit b7d76bfdcb
3 changed files with 74 additions and 31 deletions

View File

@ -30,9 +30,9 @@ package {
/** /**
* executes a command on the remote server, passing all the given arguments along * executes a command on the remote server, passing all the given arguments along
*/ */
public function exec(command:String, ... args:Array):void public function exec(command:String, args:Array = null):void
{ {
if (!args) args = []; if (args == null) args = [];
args.unshift(responder); args.unshift(responder);
args.unshift(command); args.unshift(command);
(call as Function).apply(this, args); (call as Function).apply(this, args);

View File

@ -137,6 +137,7 @@
methods.push({label: cls+'.'+meth, docs: api.data[cls]['methods'][meth]['docs'], args: api.data[cls]['methods'][meth]['params']}); methods.push({label: cls+'.'+meth, docs: api.data[cls]['methods'][meth]['docs'], args: api.data[cls]['methods'][meth]['params']});
} }
} }
methods.sortOn('label', Array.CASEINSENSITIVE);
this.panelDebug.enabled = true; this.panelDebug.enabled = true;
this.maintabs.selectedIndex = 1; this.maintabs.selectedIndex = 1;
@ -154,9 +155,13 @@
protected function process(event:Event):void protected function process(event:Event):void
{ {
if (api.error) { if (api.error) {
push(input, time() + ": Exception (faultString: "+api.data.faultString+", extendedData: "+api.data.extendedData+", faultDetail: "+api.data.faultDetail+")\n"); var keys:String = '';
for (var key:String in api.data){
keys += key+' ';
}
push(output, time() + ": Exception (code: "+api.data.code+", description: "+api.data.description+" (line: "+api.data.line+") detail:\n "+api.data.detail+")\n");
} else { } else {
push(input, time() + ": "+JSON.encode(api.data)+"\n"); push(output, time() + ": "+JSON.encode(api.data)+"\n");
} }
// MonsterDebugger.trace(this, {"data":api.data, "error":api.error}); // MonsterDebugger.trace(this, {"data":api.data, "error":api.error});
// MonsterDebugger.trace(this, api.data); // MonsterDebugger.trace(this, api.data);
@ -175,18 +180,31 @@
this['arg'+i].includeInLayout = false; this['arg'+i].includeInLayout = false;
this['larg'+i].visible = false; this['larg'+i].visible = false;
this['larg'+i].includeInLayout = false; this['larg'+i].includeInLayout = false;
this['cbarg'+i].visible = false;
this['cbarg'+i].includeInLayout = false;
this['JSONV'+i].enabled = false; this['JSONV'+i].enabled = false;
} }
i = 1; i = 1;
for (var arg:String in func.selectedItem.args) { for (var arg:String in func.selectedItem.args) {
(this['arg'+i] as TextInput).visible = true; (this['arg'+i] as TextInput).visible = true;
(this['arg'+i] as TextInput).includeInLayout = true; (this['arg'+i] as TextInput).includeInLayout = true;
if (func.selectedItem.args[arg]['required']){
(this['arg'+i] as TextInput).enabled = true;
this['cbarg'+i].selected = true;
}
(this['larg'+i] as Label).visible = true; (this['larg'+i] as Label).visible = true;
(this['larg'+i] as Label).includeInLayout = true; (this['larg'+i] as Label).includeInLayout = true;
this['JSONV'+i].enabled = true; this['cbarg'+i].visible = !func.selectedItem.args[arg]['required'];
this['JSONV'+i].required = func.selectedItem.args[arg]['required']; this['cbarg'+i].includeInLayout = !func.selectedItem.args[arg]['required'];
this['JSONV'+i].enabled = this['cbarg'+i].selected;
this['JSONV'+i].required = true;
(this['larg'+i++] as Label).text = func.selectedItem.args[arg]['name'] + (func.selectedItem.args[arg]['required'] ? "*":""); (this['larg'+i] as Label).text = func.selectedItem.args[arg]['name'] + (func.selectedItem.args[arg]['required'] ? "*":"");
i++;
}
while (i <= 7) {
this['cbarg'+i].selected = false;
i++;
} }
if (func.selectedItem.docs == ""){ if (func.selectedItem.docs == ""){
(this.methodDescription as TextArea).text = ""; (this.methodDescription as TextArea).text = "";
@ -199,6 +217,23 @@
} }
} }
public function toggleCheckBoxes(startAt:uint):void{
var i:uint= startAt;
if (this['cbarg'+i].selected){
i--;
while (i >= 1){
this['cbarg'+i].selected = true;
i--;
}
} else {
i++;
while (i <= 7){
this['cbarg'+i].selected = false;
i++;
}
}
}
/** /**
* calls a method on the server * calls a method on the server
*/ */
@ -211,12 +246,14 @@
// MonsterDebugger.trace(this, argumentErrors); // MonsterDebugger.trace(this, argumentErrors);
return; return;
} }
for(var i:int = 1; i < 8; i++) for(var i:int = 1; i <= 7; i++)
{ {
input = this['arg' +i] as TextInput; input = this['arg' +i] as TextInput;
if(input) if(input && input.visible)
{ {
if (input.text.indexOf("{") == 0 || input.text.indexOf("[") == 0) if (!this['cbarg' +i].selected){
break;
} else if (input.text.indexOf("\"") == 0 || input.text.indexOf("{") == 0 || input.text.indexOf("[") == 0)
try { try {
argumentArray.push(JSON.decode(input.text)); argumentArray.push(JSON.decode(input.text));
} catch (err:Error){ } catch (err:Error){
@ -228,7 +265,7 @@
} }
api.exec(func.selectedLabel, argumentArray[0], argumentArray[1], argumentArray[2], argumentArray[3], argumentArray[4], argumentArray[5], argumentArray[6]); api.exec(func.selectedLabel, argumentArray);
// MonsterDebugger.trace(this, [func.selectedLabel, argumentArray[0], argumentArray[1], argumentArray[2], argumentArray[3], argumentArray[4], argumentArray[5], argumentArray[6]]); // MonsterDebugger.trace(this, [func.selectedLabel, argumentArray[0], argumentArray[1], argumentArray[2], argumentArray[3], argumentArray[4], argumentArray[5], argumentArray[6]]);
push(output, time() + ": Calling "+func.selectedLabel+" with arguments - "+JSON.encode(argumentArray)); push(output, time() + ": Calling "+func.selectedLabel+" with arguments - "+JSON.encode(argumentArray));
} }
@ -238,7 +275,7 @@
*/ */
protected function clear():void protected function clear():void
{ {
input.text = output.text = ""; output.text = output.text = "";
} }
/** /**
@ -266,7 +303,7 @@
*/ */
public function netStatusHandler(event:NetStatusEvent):void public function netStatusHandler(event:NetStatusEvent):void
{ {
push(input, time() + ": Error("+event.type+"): "+event.info.code+", "+event.info.description+", "+event.info.details); push(output, time() + ": Error("+event.type+"): "+event.info.code+", "+event.info.description+", "+event.info.details);
} }
/** /**
@ -274,7 +311,7 @@
*/ */
public function securityErrorHandler(event:SecurityErrorEvent):void public function securityErrorHandler(event:SecurityErrorEvent):void
{ {
push(input, time() + ": Error("+event.type+"): "+event.text); push(output, time() + ": Error("+event.type+"): "+event.text);
} }
/** /**
@ -282,7 +319,7 @@
*/ */
public function ioErrorHandler(event:IOErrorEvent):void public function ioErrorHandler(event:IOErrorEvent):void
{ {
push(input, time() + ": Error("+event.type+"): "+event.text); push(output, time() + ": Error("+event.type+"): "+event.text);
} }
/** /**
@ -297,13 +334,13 @@
]]> ]]>
</mx:Script> </mx:Script>
<mx:Array id="argumentValidators"> <mx:Array id="argumentValidators">
<cv:JSONValidator id="JSONV1" required="false" source="{arg1}" property="text" /> <cv:JSONValidator id="JSONV1" required="true" enabled="{cbarg1.selected}" source="{arg1}" property="text" />
<cv:JSONValidator id="JSONV2" required="false" source="{arg2}" property="text" /> <cv:JSONValidator id="JSONV2" required="true" enabled="{cbarg2.selected}" source="{arg2}" property="text" />
<cv:JSONValidator id="JSONV3" required="false" source="{arg3}" property="text" /> <cv:JSONValidator id="JSONV3" required="true" enabled="{cbarg3.selected}" source="{arg3}" property="text" />
<cv:JSONValidator id="JSONV4" required="false" source="{arg4}" property="text" /> <cv:JSONValidator id="JSONV4" required="true" enabled="{cbarg4.selected}" source="{arg4}" property="text" />
<cv:JSONValidator id="JSONV5" required="false" source="{arg5}" property="text" /> <cv:JSONValidator id="JSONV5" required="true" enabled="{cbarg5.selected}" source="{arg5}" property="text" />
<cv:JSONValidator id="JSONV6" required="false" source="{arg6}" property="text" /> <cv:JSONValidator id="JSONV6" required="true" enabled="{cbarg6.selected}" source="{arg6}" property="text" />
<cv:JSONValidator id="JSONV7" required="false" source="{arg7}" property="text" /> <cv:JSONValidator id="JSONV7" required="true" enabled="{cbarg7.selected}" source="{arg7}" property="text" />
</mx:Array> </mx:Array>
@ -359,38 +396,44 @@
<mx:TextArea id="methodDescription" text="" width="100%" height="120"/> <mx:TextArea id="methodDescription" text="" width="100%" height="120"/>
<mx:HBox width="100%"> <mx:HBox width="100%">
<mx:Label id="larg1" text="Arg 1"/> <mx:Label id="larg1" text="Arg 1"/>
<mx:TextInput id="arg1" toolTip="{argumentToolTip}" width="100%"/> <mx:CheckBox id="cbarg1" click="toggleCheckBoxes(1)"/>
<mx:TextInput id="arg1" toolTip="{argumentToolTip}" width="100%" enabled="{cbarg1.selected}"/>
</mx:HBox> </mx:HBox>
<mx:HBox width="100%"> <mx:HBox width="100%">
<mx:Label id="larg2" text="Arg 2"/> <mx:Label id="larg2" text="Arg 2"/>
<mx:TextInput id="arg2" toolTip="{argumentToolTip}" width="100%"/> <mx:CheckBox id="cbarg2" click="toggleCheckBoxes(2)"/>
<mx:TextInput id="arg2" toolTip="{argumentToolTip}" width="100%" enabled="{cbarg2.selected}"/>
</mx:HBox> </mx:HBox>
<mx:HBox width="100%"> <mx:HBox width="100%">
<mx:Label id="larg3" text="Arg 3"/> <mx:Label id="larg3" text="Arg 3"/>
<mx:TextInput id="arg3" toolTip="{argumentToolTip}" width="100%"/> <mx:CheckBox id="cbarg3" click="toggleCheckBoxes(3)"/>
<mx:TextInput id="arg3" toolTip="{argumentToolTip}" width="100%" enabled="{cbarg3.selected}"/>
</mx:HBox> </mx:HBox>
<mx:HBox width="100%"> <mx:HBox width="100%">
<mx:Label id="larg4" text="Arg 4"/> <mx:Label id="larg4" text="Arg 4"/>
<mx:TextInput id="arg4" toolTip="{argumentToolTip}" width="100%"/> <mx:CheckBox id="cbarg4" click="toggleCheckBoxes(4)"/>
<mx:TextInput id="arg4" toolTip="{argumentToolTip}" width="100%" enabled="{cbarg4.selected}"/>
</mx:HBox> </mx:HBox>
<mx:HBox width="100%"> <mx:HBox width="100%">
<mx:Label id="larg5" text="Arg 5"/> <mx:Label id="larg5" text="Arg 5"/>
<mx:TextInput id="arg5" toolTip="{argumentToolTip}" width="100%"/> <mx:CheckBox id="cbarg5" click="toggleCheckBoxes(5)"/>
<mx:TextInput id="arg5" toolTip="{argumentToolTip}" width="100%" enabled="{cbarg5.selected}"/>
</mx:HBox> </mx:HBox>
<mx:HBox width="100%"> <mx:HBox width="100%">
<mx:Label id="larg6" text="Arg 6"/> <mx:Label id="larg6" text="Arg 6"/>
<mx:TextInput id="arg6" toolTip="{argumentToolTip}" width="100%"/> <mx:CheckBox id="cbarg6" click="toggleCheckBoxes(6)"/>
<mx:TextInput id="arg6" toolTip="{argumentToolTip}" width="100%" enabled="{cbarg6.selected}"/>
</mx:HBox> </mx:HBox>
<mx:HBox width="100%"> <mx:HBox width="100%">
<mx:Label id="larg7" text="Arg 7"/> <mx:Label id="larg7" text="Arg 7"/>
<mx:TextInput id="arg7" toolTip="{argumentToolTip}" width="100%"/> <mx:CheckBox id="cbarg7" click="toggleCheckBoxes(7)"/>
<mx:TextInput id="arg7" toolTip="{argumentToolTip}" width="100%" enabled="{cbarg7.selected}"/>
</mx:HBox> </mx:HBox>
<mx:HBox width="100%"> <mx:HBox width="100%">
<mx:Button id="call" label="Call" click="execute()"/> <mx:Button id="call" label="Call" click="execute()"/>
<mx:Button label="Clear" click="clear()"/> <mx:Button label="Clear" click="clear()"/>
</mx:HBox> </mx:HBox>
<mx:TextArea id="output" width="100%" height="100"/> <mx:TextArea id="output" width="100%" height="400"/>
<mx:TextArea id="input" width="100%" height="300"/>
</mx:Panel> </mx:Panel>
</mx:TabNavigator> </mx:TabNavigator>