blob: 4207d2cb89937c4e8eed8aecd0a093fb94afe219 [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:oneclick="org.apacheflex.mustella.oneclick.*"
creationComplete="windowedapplication1_creationCompleteHandler(event)"
width="800"
height="800" >
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
public static const IS_MAC:Boolean = Capabilities.os.indexOf("Windows") == -1;
[Bindable] protected var _pathSVNStr:String;
[Bindable] protected var _pathFlexStr:String;
[Bindable] protected var _pathMustellaTestStr:String;
[Bindable] protected var _pathMustellaStr:String;
[Bindable] protected var _shellPathStr:String;
private const LSO_APACHE_FLEX_SDK:String = "LSO_APACHE_FLEX_SDK";
private const LSO_SVN:String = "LSO_SVN";
private const LSO_SHELL:String = "LSO_SHELL";
private var so:SharedObject = SharedObject.getLocal("savedData");
protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
{
maximize();
if(so.data[LSO_APACHE_FLEX_SDK] != null)
{
setFlexSDKPaths(so.data[LSO_APACHE_FLEX_SDK]);
}
if(so.data[LSO_SVN] != null)
{
_pathSVNStr = so.data[LSO_SVN];
}
if(so.data[LSO_SHELL] != null)
{
_shellPathStr = so.data[LSO_SHELL];
}
else
{
_shellPathStr = (IS_MAC) ? "/bin/bash" : "c:\\windows\\system32\\cmd.exe";
}
terminal.shellPathStr = _shellPathStr;
}
protected function setFlexSDKPaths(path:String):void
{
_pathFlexStr = so.data[LSO_APACHE_FLEX_SDK] = path;
_pathMustellaStr = _pathFlexStr + File.separator + "mustella";
_pathMustellaTestStr = _pathMustellaStr + File.separator + "tests";
webserver.setWebRoot(_pathMustellaTestStr);
dependencyDB.setMustellaDirectory(_pathMustellaStr);
testChooser.setMustellaDirectory(_pathMustellaStr);
terminal.pathFlexStr = _pathFlexStr;
}
protected function handleSVNPathBrowse():void
{
openBrowseForDirectory("Select SVN location", handleSVNPathSelect);
}
protected function handleFlexPathBrowse():void
{
openBrowseForDirectory("Select Apache Flex Directory", handleFlexPathSelect);
}
protected function handleShellPathBrowse():void
{
openBrowseForFile("Select Shell Path", handleShellPathSelect);
}
protected function openBrowseForDirectory(title:String,resultFunction:Function):void{
var f:File = new File();
f.addEventListener(Event.SELECT,resultFunction);
f.browseForDirectory(title);
}
protected function openBrowseForFile(title:String,resultFunction:Function):void{
var f:File = new File();
f.addEventListener(Event.SELECT,resultFunction);
f.browseForOpen(title);
}
protected function handleSVNPathSelect(event:Event):void
{
_pathSVNStr = so.data[LSO_SVN] = event.target.nativePath;
}
protected function handleFlexPathSelect(event:Event):void
{
setFlexSDKPaths(event.target.nativePath);
}
protected function handleShellPathSelect(event:Event):void
{
_shellPathStr = so.data[LSO_SHELL] = event.target.nativePath;
terminal.shellPathStr = _shellPathStr;
}
protected function handleRun(type:String):void
{
terminal.cd(_pathMustellaStr);
terminal.run("./mini_run.sh -" + type);
}
protected function handleStopBtnClick():void
{
terminal.stop();
}
protected function dependencyDB_completeHandler(event:Event):void
{
}
protected function handleGetModifiedFilesBtnClick():void
{
terminal.getSVNStatus(handleSVNStatusResult);
}
private var _svnStatus:String;
protected function handleSVNStatusResult(status:String):void
{
if(status.charAt(0) == "M" && status.charAt(1) == " ")
{
testChooser.setSVNStatus(status);
}
}
]]>
</fx:Script>
<s:layout>
<s:HorizontalLayout />
</s:layout>
<s:VGroup width="50%" height="100%">
<s:HGroup verticalAlign="middle" includeInLayout="false" visible="false">
<s:Label text="SVN Path:" />
<s:TextInput id="svnPathTxtInput" width="500"
text="{_pathSVNStr}"/>
<s:Button label="Browse" click="handleSVNPathBrowse()" />
</s:HGroup>
<s:HGroup verticalAlign="middle">
<s:Label text="Apache Flex SDK Path:" />
<s:TextInput id="flexPathTxtInput" width="500"
text="{_pathFlexStr}"/>
<s:Button label="Browse" click="handleFlexPathBrowse()" />
</s:HGroup>
<s:HGroup verticalAlign="middle" >
<s:Label text="Shell Path:" />
<s:TextInput id="shellPathTxtInput" width="500"
text="{_shellPathStr}"/>
<s:Button label="Browse" click="handleShellPathBrowse()" />
</s:HGroup>
<oneclick:WebServer id="webserver" title="Web server" width="100%" height="100%" />
<oneclick:MustellaDependencyDB id="dependencyDB" title="Dependency DB" width="100%" height="100%" complete="dependencyDB_completeHandler(event)" />
<oneclick:MustellaTestChooser id="testChooser" title="Test Chooser" width="100%" height="100%" />
</s:VGroup>
<s:VGroup width="50%" height="100%">
<s:HGroup width="100%">
<s:Button label="Run All" click="handleRun('all')" />
<s:Button label="Run Failures" click="handleRun('rerun')" />
<s:Button label="Get Modified Files" click="handleGetModifiedFilesBtnClick()" />
<s:Button label="Run only changes" click="handleRun('changes')" />
<s:Button label="Stop" click="handleStopBtnClick()" />
</s:HGroup>
<oneclick:CommandTerminal id="terminal" width="100%" height="100%" />
</s:VGroup>
</s:WindowedApplication>