diff --git a/protogeni/flack/src/com/flack/geni/display/areas/VirtualNodeArea.mxml b/protogeni/flack/src/com/flack/geni/display/areas/VirtualNodeArea.mxml index d9175d6619c84ed61c084422a149414932dde6dc..4fa1a88c68309194863a0e6f069dd46254068d95 100644 --- a/protogeni/flack/src/com/flack/geni/display/areas/VirtualNodeArea.mxml +++ b/protogeni/flack/src/com/flack/geni/display/areas/VirtualNodeArea.mxml @@ -497,25 +497,31 @@ IN THE WORK. private function addInstallService(installService:InstallService = null):void { var newInstallComponent:InstallServiceComponent = new InstallServiceComponent(); + newInstallComponent.onChange = onChange; if(installService != null) { newInstallComponent.url = installService.url; newInstallComponent.path = installService.installPath; } installVgroup.addElement(newInstallComponent); - if(!okButton.enabled) - okButton.enabled = true; + onChange(); } private function addExecuteService(executeService:ExecuteService = null):void { var newExecuteComponent:ExecuteServiceComponent = new ExecuteServiceComponent(); + newExecuteComponent.onChange = onChange; if(executeService != null) { newExecuteComponent.cmd = executeService.command; newExecuteComponent.shell = executeService.shell; } executeVgroup.addElement(newExecuteComponent); + onChange(); + } + + private function onChange():void + { if(!okButton.enabled) okButton.enabled = true; } diff --git a/protogeni/flack/src/com/flack/geni/display/slicer/ExecuteServiceComponent.mxml b/protogeni/flack/src/com/flack/geni/display/slicer/ExecuteServiceComponent.mxml index 28931268d337f07ea2c2bbb346b6d9bff40f0b55..c490940c58b5c558313a89f3f3399e632fec98de 100644 --- a/protogeni/flack/src/com/flack/geni/display/slicer/ExecuteServiceComponent.mxml +++ b/protogeni/flack/src/com/flack/geni/display/slicer/ExecuteServiceComponent.mxml @@ -45,6 +45,8 @@ IN THE WORK. import spark.components.Group; + public var onChange:Function; + [Bindable] public var cmd:String = ""; [Bindable] @@ -64,12 +66,14 @@ IN THE WORK. + prompt="Command" + change="if(onChange != null) onChange();" /> + prompt="Shell? (sh, bash, etc.)" + change="if(onChange != null) onChange();" /> + click="if(onChange != null) onChange(); (parent as Group).removeElement(this)" /> diff --git a/protogeni/flack/src/com/flack/geni/display/slicer/InstallServiceComponent.mxml b/protogeni/flack/src/com/flack/geni/display/slicer/InstallServiceComponent.mxml index fce4e580d1d6bcf53a491722ac823953a485079c..00bd8df748df66fed5c838745b6fd2d3f36188f1 100644 --- a/protogeni/flack/src/com/flack/geni/display/slicer/InstallServiceComponent.mxml +++ b/protogeni/flack/src/com/flack/geni/display/slicer/InstallServiceComponent.mxml @@ -45,6 +45,8 @@ IN THE WORK. import spark.components.Group; + public var onChange:Function; + [Bindable] public var url:String = ""; [Bindable] @@ -64,12 +66,14 @@ IN THE WORK. + prompt="Archive URL" + change="if(onChange != null) onChange();" /> + prompt="Install path" + change="if(onChange != null) onChange();" /> + click="if(onChange != null) onChange(); (parent as Group).removeElement(this)" /> diff --git a/protogeni/flack/src/com/flack/geni/resources/virtual/VirtualNode.as b/protogeni/flack/src/com/flack/geni/resources/virtual/VirtualNode.as index c693b5c19abdbf2723f01a0c2ad97a01253601a1..d7c22bfdacdb72cb3b27b38c15bf62d3a3c71b11 100644 --- a/protogeni/flack/src/com/flack/geni/resources/virtual/VirtualNode.as +++ b/protogeni/flack/src/com/flack/geni/resources/virtual/VirtualNode.as @@ -317,18 +317,27 @@ package com.flack.geni.resources.virtual newClone.hardwareType.name = hardwareType.name; newClone.hardwareType.slots = hardwareType.slots; } - for each(var executeService:ExecuteService in services.executeServices) + if(services.executeServices != null) { - var newExecute:ExecuteService = new ExecuteService(executeService.command, executeService.shell); - newExecute.extensions = executeService.extensions.Clone; - newClone.services.executeServices.push(newExecute); + newClone.services.executeServices = new Vector.(); + for each(var executeService:ExecuteService in services.executeServices) + { + var newExecute:ExecuteService = new ExecuteService(executeService.command, executeService.shell); + newExecute.extensions = executeService.extensions.Clone; + newClone.services.executeServices.push(newExecute); + } } - for each(var installService:InstallService in services.installServices) + if(services.installServices != null) { - var newInstall:InstallService = new InstallService(installService.url, installService.installPath, installService.fileType); - newInstall.extensions = installService.extensions.Clone; - newClone.services.installServices.push(newInstall); + newClone.services.installServices = new Vector.(); + for each(var installService:InstallService in services.installServices) + { + var newInstall:InstallService = new InstallService(installService.url, installService.installPath, installService.fileType); + newInstall.extensions = installService.extensions.Clone; + newClone.services.installServices.push(newInstall); + } } + newClone.extensions = extensions.Clone; // Remove the emulab extensions, it's just manifest stuff if(newClone.extensions.spaces != null) diff --git a/protogeni/flack/src/com/flack/shared/SharedMain.as b/protogeni/flack/src/com/flack/shared/SharedMain.as index 6dea5aa6b3188913378bb027912cb61207f5c285..26295c34d4a6c54f940d37c6fa76275d7ebd299c 100644 --- a/protogeni/flack/src/com/flack/shared/SharedMain.as +++ b/protogeni/flack/src/com/flack/shared/SharedMain.as @@ -51,7 +51,7 @@ package com.flack.shared /** * Flack version */ - public static const version:String = "v14.40"; + public static const version:String = "v14.41"; public static const MODE_GENI:int = 0; public static const MODE_EMULAB:int = 1;