浏览代码

Merge pull request #4867 from GordonSmith/HPCC-10054

HPCC-10054 Enable "Enter" to complete search and forms

Reviewed-By: Miguel Vazquez <miguel.vazquez@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 11 年之前
父节点
当前提交
0fd6edf605

+ 29 - 29
esp/files/scripts/DFUQueryWidget.js

@@ -76,6 +76,9 @@ define([
         templateString: template,
         baseClass: "DFUQueryWidget",
 
+        addToSuperFileForm: null,
+        desprayDialog: null,
+
         workunitsTab: null,
         workunitsGrid: null,
 
@@ -83,6 +86,8 @@ define([
 
         postCreate: function (args) {
             this.inherited(arguments);
+            this.addToSuperFileForm = registry.byId(this.id + "AddToSuperfileForm");
+            this.desprayDialog = registry.byId(this.id + "DesprayDialog");
             this.workunitsTab = registry.byId(this.id + "_Workunits");
             this.filter = registry.byId(this.id + "Filter");
             this.clusterTargetSelect = registry.byId(this.id + "ClusterTargetSelect");
@@ -130,20 +135,17 @@ define([
         },
 
         _onAddToSuperfileOk: function (event) {
-            var context = this;
-            var formData = domForm.toObject(this.id + "AddToSuperfileForm");
-            WsDfu.AddtoSuperfile(this.workunitsGrid.getSelected(), formData.Superfile, formData.ExistingFile, {
-                load: function (response) {
-                    context.refreshGrid(response);
-                }
-            });
-            var d = registry.byId(this.id + "AddtoDropDown");
-            registry.byId(this.id + "AddtoDropDown").closeDropDown();
-        },
-
-        _onAddToSuperfileCancel: function (event) {
-            var d = registry.byId(this.id + "AddtoDropDown");
-            registry.byId(this.id + "AddtoDropDown").closeDropDown();
+            if (this.addToSuperFileForm.validate()) {
+                var context = this;
+                var formData = domForm.toObject(this.id + "AddToSuperfileForm");
+                WsDfu.AddtoSuperfile(this.workunitsGrid.getSelected(), formData.Superfile, formData.ExistingFile, {
+                    load: function (response) {
+                        context.refreshGrid(response);
+                    }
+                });
+                var d = registry.byId(this.id + "AddtoDropDown");
+                registry.byId(this.id + "AddtoDropDown").closeDropDown();
+            }
         },
 
         _handleResponse: function (wuidQualifier, response) {
@@ -160,23 +162,21 @@ define([
         },
 
         _onDesprayOk: function (event) {
-            var context = this;
-            arrayUtil.forEach(this.workunitsGrid.getSelected(), function (item, idx) {
-                item.refresh().then(function (response) {
-                    var request = domForm.toObject(context.id + "DesprayDialog");
-                    request.destPath += item.Filename;
-                    item.despray({
-                        request: request
-                    }).then(function (response) {
-                        context._handleResponse("DesprayResponse.wuid", response);
+            if (this.desprayDialog.validate()) {
+                var context = this;
+                arrayUtil.forEach(this.workunitsGrid.getSelected(), function (item, idx) {
+                    item.refresh().then(function (response) {
+                        var request = domForm.toObject(context.id + "DesprayDialog");
+                        request.destPath += item.Filename;
+                        item.despray({
+                            request: request
+                        }).then(function (response) {
+                            context._handleResponse("DesprayResponse.wuid", response);
+                        });
                     });
                 });
-            });
-            registry.byId(this.id + "DesprayDropDown").closeDropDown();
-        },
-
-        _onDesprayCancel: function (event) {
-            registry.byId(this.id + "DesprayDropDown").closeDropDown();
+                registry.byId(this.id + "DesprayDropDown").closeDropDown();
+            }
         },
 
         _onRowDblClick: function (item) {

+ 34 - 31
esp/files/scripts/LFDetailsWidget.js

@@ -58,7 +58,10 @@ define([
         templateString: template,
         baseClass: "LFDetailsWidget",
         borderContainer: null,
-        tabContainer: null,
+
+        copyDialog: null,
+        renameDialog: null,
+        desprayDialog: null,
         summaryWidget: null,
         contentWidget: null,
         sourceWidget: null,
@@ -73,6 +76,9 @@ define([
 
         postCreate: function (args) {
             this.inherited(arguments);
+            this.copyDialog = registry.byId(this.id + "CopyDialog");
+            this.renameDialog = registry.byId(this.id + "RenameDialog");
+            this.desprayDialog = registry.byId(this.id + "DesprayDialog");
             this.summaryWidget = registry.byId(this.id + "_Summary");
             this.contentWidget = registry.byId(this.id + "_Content");
             this.sourceWidget = registry.byId(this.id + "_Source");
@@ -117,40 +123,37 @@ define([
             }
         },
         _onCopyOk: function (event) {
-            var context = this;
-            this.logicalFile.copy({
-                request: domForm.toObject(this.id + "CopyDialog")
-            }).then(function (response) {
-                context._handleResponse("CopyResponse.result", response);
-            });
-            registry.byId(this.id + "CopyDropDown").closeDropDown();
-        },
-        _onCopyCancel: function (event) {
-            registry.byId(this.id + "CopyDropDown").closeDropDown();
+            if (this.copyDialog.validate()) {
+                var context = this;
+                this.logicalFile.copy({
+                    request: domForm.toObject(this.id + "CopyDialog")
+                }).then(function (response) {
+                    context._handleResponse("CopyResponse.result", response);
+                });
+                registry.byId(this.id + "CopyDropDown").closeDropDown();
+            }
         },
         _onRenameOk: function (event) {
-            var context = this;
-            this.logicalFile.rename({
-                request: domForm.toObject(this.id + "RenameDialog")
-            }).then(function (response) {
-                context._handleResponse("RenameResponse.wuid", response);
-            });
-            registry.byId(this.id + "RenameDropDown").closeDropDown();
-        },
-        _onRenameCancel: function (event) {
-            registry.byId(this.id + "RenameDropDown").closeDropDown();
+            if (this.renameDialog.validate()) {
+                var context = this;
+                this.logicalFile.rename({
+                    request: domForm.toObject(this.id + "RenameDialog")
+                }).then(function (response) {
+                    context._handleResponse("RenameResponse.wuid", response);
+                });
+                registry.byId(this.id + "RenameDropDown").closeDropDown();
+            }
         },
         _onDesprayOk: function (event) {
-            var context = this;
-            this.logicalFile.despray({
-                request: domForm.toObject(this.id + "DesprayDialog")
-            }).then(function (response) {
-                context._handleResponse("DesprayResponse.wuid", response);
-            });
-            registry.byId(this.id + "DesprayDropDown").closeDropDown();
-        },
-        _onDesprayCancel: function (event) {
-            registry.byId(this.id + "DesprayDropDown").closeDropDown();
+            if (this.desprayDialog.validate()) {
+                var context = this;
+                this.logicalFile.despray({
+                    request: domForm.toObject(this.id + "DesprayDialog")
+                }).then(function (response) {
+                    context._handleResponse("DesprayResponse.wuid", response);
+                });
+                registry.byId(this.id + "DesprayDropDown").closeDropDown();
+            }
         },
 
         //  Implementation  ---

+ 59 - 58
esp/files/scripts/LZBrowseWidget.js

@@ -80,6 +80,10 @@ define([
         templateString: template,
         baseClass: "LZBrowseWidget",
 
+        sprayFixedDialog: null,
+        sprayVariableDialog: null,
+        sprayXmlDialog: null,
+
         landingZonesTab: null,
         landingZonesGrid: null,
 
@@ -89,6 +93,9 @@ define([
 
         postCreate: function (args) {
             this.inherited(arguments);
+            this.sprayFixedDialog = registry.byId(this.id + "SprayFixedDialog");
+            this.sprayVariableDialog = registry.byId(this.id + "SprayVariableDialog");
+            this.sprayXmlDialog = registry.byId(this.id + "SprayXmlDialog");
             this.landingZonesTab = registry.byId(this.id + "_LandingZones");
             this.uploader = registry.byId(this.id + "Upload");
             this.uploadFileList = registry.byId(this.id + "UploadFileList");
@@ -201,73 +208,67 @@ define([
         },
 
         _onSprayFixed: function (event) {
-            var context = this;
-            var selections = this.landingZonesGrid.getSelected();
-            var context = this;
-            arrayUtil.forEach(selections, function (item, idx) {
-                var formData = domForm.toObject(context.id + "SprayFixedDialog");
-                lang.mixin(formData, {
-                    sourceIP: item.DropZone.NetAddress,
-                    sourcePath: item.fullPath
-                });
-
-                FileSpray.SprayFixed({
-                    request: formData
-                }).then(function (response) {
-                    context._handleResponse("SprayFixedResponse.wuid", response);
-                })
-            });
-             registry.byId(this.id + "SprayFixedDropDown").closeDropDown();
-        },
+            if (this.sprayFixedDialog.validate()) {
+                var context = this;
+                var selections = this.landingZonesGrid.getSelected();
+                var context = this;
+                arrayUtil.forEach(selections, function (item, idx) {
+                    var formData = domForm.toObject(context.id + "SprayFixedDialog");
+                    lang.mixin(formData, {
+                        sourceIP: item.DropZone.NetAddress,
+                        sourcePath: item.fullPath
+                    });
 
-        _onSprayFixedCancel: function (event) {
-            registry.byId(this.id + "SprayFixedDropDown").closeDropDown();
+                    FileSpray.SprayFixed({
+                        request: formData
+                    }).then(function (response) {
+                        context._handleResponse("SprayFixedResponse.wuid", response);
+                    })
+                });
+                registry.byId(this.id + "SprayFixedDropDown").closeDropDown();
+            }
         },
 
         _onSprayVariable: function(event) {
-            var context = this;
-            var selections = this.landingZonesGrid.getSelected();
-            var context = this;
-            arrayUtil.forEach(selections, function (item, idx) {
-                var formData = domForm.toObject(context.id + "SprayVariableDialog");
-                lang.mixin(formData, {
-                    sourceIP: item.DropZone.NetAddress,
-                    sourcePath: item.DropZone.fullPath
-                });
-                FileSpray.SprayVariable({
-                    request: formData
-                }).then(function (response) {
-                    context._handleResponse("SprayResponse.wuid", response);
+            if (this.sprayVariableDialog.validate()) {
+                var context = this;
+                var selections = this.landingZonesGrid.getSelected();
+                var context = this;
+                arrayUtil.forEach(selections, function (item, idx) {
+                    var formData = domForm.toObject(context.id + "SprayVariableDialog");
+                    lang.mixin(formData, {
+                        sourceIP: item.DropZone.NetAddress,
+                        sourcePath: item.DropZone.fullPath
+                    });
+                    FileSpray.SprayVariable({
+                        request: formData
+                    }).then(function (response) {
+                        context._handleResponse("SprayResponse.wuid", response);
+                    });
                 });
-            });
-             registry.byId(this.id + "SprayVariableDropDown").closeDropDown();
-        },
-
-        _onSprayVariableCancel: function (event) {
-            registry.byId(this.id + "SprayVariableDropDown").closeDropDown();
+                registry.byId(this.id + "SprayVariableDropDown").closeDropDown();
+            }
         },
 
         _onSprayXml: function(event) {
-            var context = this;
-            var selections = this.landingZonesGrid.getSelected();
-            var context = this;
-            arrayUtil.forEach(selections, function (item, idx) {
-                var formData = domForm.toObject(context.id + "SprayXmlDialog");
-                lang.mixin(formData, {
-                    sourceIP: item.DropZone.NetAddress,
-                    sourcePath: item.DropZone.fullPath
-                });
-                FileSpray.SprayVariable({
-                    request: formData
-                }).then(function (response) {
-                    context._handleResponse("SprayResponse.wuid", response);
+            if (this.sprayXmlDialog.validate()) {
+                var context = this;
+                var selections = this.landingZonesGrid.getSelected();
+                var context = this;
+                arrayUtil.forEach(selections, function (item, idx) {
+                    var formData = domForm.toObject(context.id + "SprayXmlDialog");
+                    lang.mixin(formData, {
+                        sourceIP: item.DropZone.NetAddress,
+                        sourcePath: item.DropZone.fullPath
+                    });
+                    FileSpray.SprayVariable({
+                        request: formData
+                    }).then(function (response) {
+                        context._handleResponse("SprayResponse.wuid", response);
+                    });
                 });
-            });
-             registry.byId(this.id + "SprayXmlDropDown").closeDropDown();
-        },
-
-        _onSprayXmlCancel: function (event) {
-            registry.byId(this.id + "SprayXmlDropDown").closeDropDown();
+                registry.byId(this.id + "SprayXmlDropDown").closeDropDown();
+            }
         },
 
         _onRowDblClick: function (wuid) {

+ 6 - 2
esp/files/scripts/WUDetailsWidget.js

@@ -78,6 +78,7 @@ define([
         playgroundWidgetLoaded: false,
         xmlWidget: null,
         xmlWidgetLoaded: false,
+        publishForm: null,
 
         wu: null,
         prevState: "",
@@ -94,6 +95,7 @@ define([
             this.logsWidget = registry.byId(this.id + "_Logs");
             this.playgroundWidget = registry.byId(this.id + "_Playground");
             this.xmlWidget = registry.byId(this.id + "_XML");
+            this.publishForm = registry.byId(this.id + "PublishForm");
 
             this.infoGridWidget = registry.byId(this.id + "InfoContainer");
         },
@@ -153,8 +155,10 @@ define([
             this.wu.restart();
         },
         _onPublish: function (event) {
-            registry.byId(this.id + "Publish").closeDropDown();
-            this.wu.publish(dom.byId(this.id + "Jobname2").value);
+            if (this.publishForm.validate()) {
+                registry.byId(this.id + "Publish").closeDropDown();
+                this.wu.publish(dom.byId(this.id + "Jobname2").value);
+            }
         },
 
         //  Implementation  ---

+ 13 - 12
esp/files/templates/DFUQueryWidget.html

@@ -10,35 +10,36 @@
                     <div id="${id}AddtoDropDown" data-dojo-type="dijit.form.DropDownButton">
                         <span>Add To Superfile</span>
                         <div data-dojo-type="dijit.TooltipDialog">
-                            <div id="${id}AddToSuperfileForm" style="width:480px" data-dojo-type="dijit.form.Form" >
-                                <div data-dojo-props="cols:1" data-dojo-type="dojox.layout.TableContainer">
-                                    <input id="${id}AddToSuperfileTargetName" name="Superfile" title="Logical&nbsp;File:" style="width:100%;" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
+                            <div id="${id}AddToSuperfileForm" style="width:480px" onsubmit="return false;" data-dojo-type="dijit.form.Form" >
+                                <div class="dijitDialogPaneContentArea" data-dojo-props="cols:1" data-dojo-type="dojox.layout.TableContainer">
+                                    <input id="${id}AddToSuperfileTargetName" name="Superfile" title="Logical&nbsp;File:" style="width:100%;" required="true" data-dojo-props="trim: true" data-dojo-type="dijit.form.ValidationTextBox" />
                                     <input id="${id}AddToSuperfileTargetAppend" name="ExistingFile" title="Append:" data-dojo-type="dijit/form/CheckBox" />
                                 </div>
-                                <button data-dojo-attach-event="onClick:_onAddToSuperfileOk" data-dojo-type="dijit.form.Button">Add</button>
-                                <button data-dojo-attach-event="onClick:_onAddToSuperfileCancel" data-dojo-type="dijit.form.Button">Cancel</button>
+                                <div class="dijitDialogPaneActionBar">
+                                    <button type="submit" data-dojo-attach-event="onClick:_onAddToSuperfileOk" data-dojo-type="dijit.form.Button">Add</button>
+                                </div>
                             </div>
                         </div>
                     </div>
                     <div id="${id}DesprayDropDown" data-dojo-type="dijit.form.DropDownButton">
                         <span>Despray</span>
                         <div data-dojo-type="dijit.TooltipDialog">
-                            <div id="${id}DesprayDialog" style="width: 460px;" data-dojo-type="dijit.form.Form">
+                            <div id="${id}DesprayDialog" style="width: 460px;" onsubmit="return false;" data-dojo-type="dijit.form.Form">
                                 <h2>Target</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
                                     <input id="${id}DesprayTargetSelect" title="Drop&nbsp;Zone:" name="destGroup" colspan="2" style="width: 100%;" data-dojo-type="TargetSelectWidget" />
-                                    <input id="${id}DesprayTargetIPAddress" title="IP&nbsp;Address:" name="destIP" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
-                                    <input id="${id}DesprayTargetPath" title="Path:" name="destPath" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.Textarea" />
-                                    <input id="${id}DesprayTargetSplitPrefix" title="Split&nbsp;Prefix:" name="splitprefix" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
+                                    <input id="${id}DesprayTargetIPAddress" title="IP&nbsp;Address:" name="destIP" colspan="2" style="width: 100%;" required="true" data-dojo-props="trim: true" data-dojo-type="dijit.form.ValidationTextBox" />
+                                    <input id="${id}DesprayTargetPath" title="Path:" name="destPath" colspan="2" style="width: 100%;" required="true" data-dojo-props="trim: true" data-dojo-type="dijit.form.ValidationTextBox" />
+                                    <input id="${id}DesprayTargetSplitPrefix" title="Split&nbsp;Prefix:" name="splitprefix" colspan="2" style="width: 100%;" data-dojo-props="trim: true" data-dojo-type="dijit.form.ValidationTextBox" />
                                     <input id="${id}DesprayTargetUseSingleConnection" title="Use&nbsp;Single&nbsp;Connection:" name="SingleConnection" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                     <input id="${id}DesprayTargetOverwrite" title="Overwrite:" name="overwrite" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                 </div>
                                 <h2>Source</h2>
                                 <div id="${id}DesprayDialogSource" data-dojo-props="cols:1" data-dojo-type="dojox.layout.TableContainer">
                                 </div>
-                                <br />
-                                <button data-dojo-attach-event="onClick:_onDesprayOk" data-dojo-type="dijit.form.Button">Despray</button>
-                                <button data-dojo-attach-event="onClick:_onDesprayCancel" data-dojo-type="dijit.form.Button">Cancel</button>
+                                <div class="dijitDialogPaneActionBar">
+                                    <button type="submit" data-dojo-attach-event="onClick:_onDesprayOk" data-dojo-type="dijit.form.Button">Despray</button>
+                                </div>
                             </div>
                         </div>
                     </div>

+ 2 - 2
esp/files/templates/FilterDropDownWidget.html

@@ -3,12 +3,12 @@
     <div id="${id}FilterDropDown" data-dojo-type="dijit.form.DropDownButton">
         <span>Filter</span>
         <div class="toolTip" data-dojo-type="dijit.TooltipDialog">
-            <div id="${id}FilterForm" style="width:460px" data-dojo-type="dijit.form.Form">
+            <div id="${id}FilterForm" style="width:460px" onsubmit="return false;" data-dojo-type="dijit.form.Form">
                 <div class="dijitDialogPaneContentArea" data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
                     <span data-dojo-attach-point="containerNode"></span>
                 </div>
                 <div class="dijitDialogPaneActionBar">
-                    <button id="${id}FilterApply" data-dojo-attach-event="onClick:_onFilterApply" data-dojo-type="dijit.form.Button">Apply</button>
+                    <button id="${id}FilterApply" type="submit" data-dojo-attach-event="onClick:_onFilterApply" data-dojo-type="dijit.form.Button">Apply</button>
                     <button id="${id}FilterClear" data-dojo-attach-event="onClick:_onFilterClear" data-dojo-type="dijit.form.Button">Clear</button>
                 </div>
             </div>

+ 3 - 3
esp/files/templates/HPCCPlatformWidget.html

@@ -4,10 +4,10 @@
             <div id="${id}StackController" class="left glow" data-dojo-props="containerId:'${id}TabContainer'" data-dojo-type="dijit.layout.StackController"></div>
             <div class="right">
                 <div class="seperator grey"></div>
-                <div id="search-form">
+                <form id="search-form" onsubmit="return false;">
                     <input id="${id}FindText" class="roundForm" data-dojo-props="placeHolder: 'Wuid, User, More...'" data-dojo-type="dijit.form.TextBox" />
-                    <button id="${id}Find" data-dojo-props="iconClass:'iconFind', showLabel: false" data-dojo-attach-event="onClick:_onFind" data-dojo-type="dijit.form.Button">Find</button>
-                </div>
+                    <button id="${id}Find" type="submit" data-dojo-props="iconClass:'iconFind', showLabel: false" data-dojo-attach-event="onClick:_onFind" data-dojo-type="dijit.form.Button">Find</button>
+                </form>
                 <div class="seperator grey"></div>
                 <div id="userAccount">
                     <span class="navBarLoggedin">logged in as:  </span>

+ 16 - 13
esp/files/templates/LFDetailsWidget.html

@@ -11,7 +11,7 @@
                     <div id="${id}CopyDropDown" data-dojo-type="dijit.form.DropDownButton">
                         <span>Copy</span>
                         <div data-dojo-type="dijit.TooltipDialog">
-                            <div id="${id}CopyDialog" data-dojo-type="dijit.form.Form" style="width: 460px;">
+                            <div id="${id}CopyDialog" style="width: 460px;" onsubmit="return false;" data-dojo-type="dijit.form.Form">
                                 <h2>Source</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
                                     <input id="${id}CopySourceName" title="Logical&nbsp;File:" style="width: 100%;" name="sourceLogicalName" colspan="2" data-dojo-props="trim: true, readonly: true" data-dojo-type="dijit.form.Textarea" />
@@ -19,40 +19,42 @@
                                 <h2>Target</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
                                     <input id="${id}CopyTargetSelect" title="Group:" name="destGroup" colspan="2" style="width:100%;" data-dojo-type="TargetSelectWidget" style="display: inline-block; vertical-align: middle" />
-                                    <input id="${id}CopyTargetName"  title="Logical&nbsp;File:" name="destLogicalName" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.Textarea" />
+                                    <input id="${id}CopyTargetName"  title="Logical&nbsp;File:" name="destLogicalName" colspan="2" style="width:100%;" required="true" data-dojo-props="trim: true" data-dojo-type="dijit.form.ValidationTextBox" />
                                     <input id="${id}CopyTargetWrap" title="Wrap:" name="Wrap" data-dojo-type="dijit/form/CheckBox" />
                                     <input id="${id}CopyTargetNoSplit" title="No&nbsp;Split:" name="nosplit" data-dojo-type="dijit/form/CheckBox" />
                                     <input id="${id}CopyTargetOverwrite" title="Overwrite:" name="overwrite" data-dojo-type="dijit/form/CheckBox" />
                                     <input id="${id}CopyTargetCompress" title="Compress:" name="compress" data-dojo-type="dijit/form/CheckBox" />
                                     <input id="${id}CopyTargetRetainSuperfileStructure" title="Retain&nbsp;Superfile&nbsp;Structure:" name="superCopy" colspan="2" data-dojo-type="dijit/form/CheckBox" />
                                 </div>
-                                <button data-dojo-attach-event="onClick:_onCopyOk" data-dojo-type="dijit.form.Button">Copy</button>
-                                <button data-dojo-attach-event="onClick:_onCopyCancel" data-dojo-type="dijit.form.Button">Cancel</button>
+                                <div class="dijitDialogPaneActionBar">
+                                    <button type="submit" data-dojo-attach-event="onClick:_onCopyOk" data-dojo-type="dijit.form.Button">Copy</button>
+                                </div>
                             </div>
                         </div>
                     </div>
                     <div id="${id}RenameDropDown" data-dojo-type="dijit.form.DropDownButton">
                         <span>Rename</span>
                         <div data-dojo-type="dijit.TooltipDialog">
-                            <div id="${id}RenameDialog" style="width: 460px;" data-dojo-type="dijit.form.Form">
+                            <div id="${id}RenameDialog" style="width: 460px;" onsubmit="return false;" data-dojo-type="dijit.form.Form">
                                 <h2>Source</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
                                     <input id="${id}RenameSourceName" title="Logical&nbsp;File:" style="width: 100%;" name="RenameSourceName" colspan="2" data-dojo-props="trim: true, readonly: true" data-dojo-type="dijit.form.Textarea" />
                                 </div>
                                 <h2>Target</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
-                                    <input id="${id}RenameTargetName" title="Logical&nbsp;File:" style="width: 100%;" name="dstname" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.Textarea" />
+                                    <input id="${id}RenameTargetName" title="Logical&nbsp;File:" style="width: 100%;" name="dstname" colspan="2" required="true" data-dojo-props="trim: true" data-dojo-type="dijit.form.ValidationTextBox" />
                                     <input id="${id}RenameTargetOverwrite" title="Overwrite:" name="overwrite" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                 </div>
-                                <button data-dojo-attach-event="onClick:_onRenameOk" data-dojo-type="dijit.form.Button">Rename</button>
-                                <button data-dojo-attach-event="onClick:_onRenameCancel" data-dojo-type="dijit.form.Button">Cancel</button>
+                                <div class="dijitDialogPaneActionBar">
+                                    <button type="submit" data-dojo-attach-event="onClick:_onRenameOk" data-dojo-type="dijit.form.Button">Rename</button>
+                                </div>
                             </div>
                         </div>
                     </div>
                     <div id="${id}DesprayDropDown" data-dojo-type="dijit.form.DropDownButton">
                         <span>Despray</span>
                         <div data-dojo-type="dijit.TooltipDialog">
-                            <div id="${id}DesprayDialog" style="width: 460px;" data-dojo-type="dijit.form.Form">
+                            <div id="${id}DesprayDialog" style="width: 460px;" onsubmit="return false;" data-dojo-type="dijit.form.Form">
                                 <h2>Source</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
                                     <input id="${id}DespraySourceName" title="Logical&nbsp;File:" style="width: 100%;" name="DespraySourceName" colspan="2" data-dojo-props="trim: true, readonly: true" data-dojo-type="dijit.form.Textarea" />
@@ -60,14 +62,15 @@
                                 <h2>Target</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
                                     <input id="${id}DesprayTargetSelect" title="Drop&nbsp;Zone:" name="destGroup" colspan="2" style="width: 100%;" data-dojo-type="TargetSelectWidget" />
-                                    <input id="${id}DesprayTargetIPAddress" title="IP&nbsp;Address:" name="destIP" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
-                                    <input id="${id}DesprayTargetPath" title="Path:" name="destPath" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.Textarea" />
+                                    <input id="${id}DesprayTargetIPAddress" title="IP&nbsp;Address:" name="destIP" colspan="2" required="true" data-dojo-props="trim: true" data-dojo-type="dijit.form.ValidationTextBox" />
+                                    <input id="${id}DesprayTargetPath" title="Path:" name="destPath" colspan="2" required="true" data-dojo-props="trim: true" data-dojo-type="dijit.form.ValidationTextBox" />
                                     <input id="${id}DesprayTargetSplitPrefix" title="Split&nbsp;Prefix:" name="splitprefix" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
                                     <input id="${id}DesprayTargetUseSingleConnection" title="Use&nbsp;Single&nbsp;Connection:" name="SingleConnection" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                     <input id="${id}DesprayTargetOverwrite" title="Overwrite:" name="overwrite" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                 </div>
-                                <button data-dojo-attach-event="onClick:_onDesprayOk" data-dojo-type="dijit.form.Button">Despray</button>
-                                <button data-dojo-attach-event="onClick:_onDesprayCancel" data-dojo-type="dijit.form.Button">Cancel</button>
+                                <div class="dijitDialogPaneActionBar">
+                                    <button type="submit" data-dojo-attach-event="onClick:_onDesprayOk" data-dojo-type="dijit.form.Button">Despray</button>
+                                </div>
                             </div>
                         </div>
                     </div>

+ 39 - 47
esp/files/templates/LZBrowseWidget.html

@@ -15,16 +15,15 @@
                     <div id="${id}SprayFixedDropDown" data-dojo-type="dijit.form.DropDownButton">
                         <span>Fixed</span>
                         <div data-dojo-type="dijit.TooltipDialog">
-                            <div id="${id}SprayFixedDialog" style="width: 530px;" data-dojo-type="dijit.form.Form">
+                            <div id="${id}SprayFixedDialog" style="width: 530px;" onsubmit="return false;" data-dojo-type="dijit.form.Form">
                                 <h2>Source</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
-                                    <!--<input id="${id}SprayFixedNetworkPath" title="Network&nbsp;Path:" style="width: 95%;" name="sourceN" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />-->
-                                    <input id="${id}SprayFixedRecordLength" title="Record&nbsp;Length:" style="width: 95%;" name="sourceRecordSize" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
+                                    <input id="${id}SprayFixedRecordLength" title="Record&nbsp;Length:" style="width: 95%;" name="sourceRecordSize" colspan="2" required="true" data-dojo-props="trim: true" data-dojo-type="dijit.form.ValidationTextBox" />
                                 </div>
                                 <h2>Destination</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
                                     <input id="${id}SprayFixedDestination" title="Group:" style="width: 95%;" name="destGroup" colspan="2" data-dojo-type="TargetSelectWidget" />
-                                    <input title="Label:" style="width: 95%;" name="destLogicalName" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
+                                    <input title="Label:" style="width: 95%;" name="destLogicalName" colspan="2" required="true" data-dojo-props="trim: true" data-dojo-type="dijit.form.ValidationTextBox" />
                                     <input title="Mask:" style="width: 95%;" colspan="2" data-dojo-props="trim: true, readonly: true"  data-dojo-type="dijit.form.TextBox" />
                                     <input title="Prefix:" style="width: 95%;" name="prefix" colspan="2" data-dojo-type="dijit.form.TextBox" />
                                 </div>
@@ -34,44 +33,40 @@
                                     <input title="No&nbsp;Split:" name="nosplit" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                     <input title="Compress:" name="compress" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                 </div>
-                                <button data-dojo-attach-event="onClick:_onSprayFixed" data-dojo-type="dijit.form.Button">Spray</button>
-                                <button data-dojo-attach-event="onClick:_onSprayFixedCancel" data-dojo-type="dijit.form.Button">Cancel</button>
+                                <div class="dijitDialogPaneActionBar">
+                                    <button type="submit" data-dojo-attach-event="onClick:_onSprayFixed" data-dojo-type="dijit.form.Button">Spray</button>
+                                </div>
                             </div>
                         </div>
                     </div>
                     <div id="${id}SprayVariableDropDown" data-dojo-type="dijit.form.DropDownButton">
                         <span>Delimited</span>
                         <div data-dojo-type="dijit.TooltipDialog">
-                            <div id="${id}SprayVariableDialog" style="width: 530px;" data-dojo-type="dijit.form.Form">
+                            <div id="${id}SprayVariableDialog" style="width: 530px;" onsubmit="return false;" data-dojo-type="dijit.form.Form">
                                 <h2>Source</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
-                                    <!--<input id="${id}SprayVariableTargetSelect" title="DropZone" style="width: 95%;" name="machine" colspan="2" data-dojo-type="TargetSelectWidget" />
-                                    <input id="${id}SprayVariableIPAddress" title="IP&nbsp;Address:" style="width: 95%;" name="sourceIP" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
-                                    <input id="${id}SprayVariableTargetPath" title="Local&nbsp;Path:" style="width: 96%;" name="sourcePath" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.Textarea" />
-                                    <input id="${id}uploader2" type="file" title="Yes" style="width: 95%;" colspan="2" multiple="true" data-dojo-type="dojox/form/Uploader" data-dojo-props='label:"Choose&nbsp;File"'/>
-                                    <input id="${id}SprayVariableNetworkPath" title="Network&nbsp;Path:" style="width: 95%;" name="sourceN" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />-->
                                     <select id="${id}sourceFormat" title="Format:" name="sourceFormat" data-dojo-type="dijit/form/Select">
-                                        <option value="1">ASCII</option><!--value="ascii"-->
-                                        <option value="2">UTF-8</option><!--value="utf8"-->
-                                        <option value="3">UTF-8N</option><!--value="utf8n"-->
-                                        <option value="4">UTF-16</option><!--value="utf16"-->
-                                        <option value="5">UTF-16LE</option><!--value="utf16le"-->
-                                        <option value="6">UTF-16BE</option><!--value="utf16be"-->
-                                        <option value="7">UTF-32</option><!--value="utf32"-->
-                                        <option value="8">UTF-32LE</option><!--value="utf32le"-->
-                                        <option value="9">UTF-32BE</option><!--value="utf32be"-->
+                                        <option value="1">ASCII</option>
+                                        <option value="2">UTF-8</option>
+                                        <option value="3">UTF-8N</option>
+                                        <option value="4">UTF-16</option>
+                                        <option value="5">UTF-16LE</option>
+                                        <option value="6">UTF-16BE</option>
+                                        <option value="7">UTF-32</option>
+                                        <option value="8">UTF-32LE</option>
+                                        <option value="9">UTF-32BE</option>
                                     </select>
-                                    <input id="${id}SprayVariableMaxRecordLength" title="Max&nbsp;Record&nbsp;Length:" style="width: 95%;" name="sourceMaxRecordSize" colspan="2" data-dojo-props="trim: true, placeHolder:'8192'" data-dojo-type="dijit.form.TextBox" />
-                                    <input id="${id}SprayVariableSeperators" title="Seperators:" style="width: 95%;" name="sourceSeparators" colspan="2" data-dojo-props="trim: true, placeHolder:'\,'" data-dojo-type="dijit.form.TextBox" />
+                                    <input id="${id}SprayVariableMaxRecordLength" title="Max&nbsp;Record&nbsp;Length:" style="width: 95%;" name="sourceMaxRecordSize" value="8192" colspan="2" required="true" data-dojo-props="trim: true, placeHolder:'8192'" data-dojo-type="dijit.form.ValidationTextBox" />
+                                    <input id="${id}SprayVariableSeperators" title="Seperators:" style="width: 95%;" name="sourceSeparators" value="," colspan="2" data-dojo-props="trim: true, placeHolder:'\,'" data-dojo-type="dijit.form.ValidationTextBox" />
                                     <input title="No&nbsp;Separator?" name="NoSourceSeparator" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                     <input id="${id}SprayVariableEscape" title="Escape:" style="width: 95%;" name="sourceEscape" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
-                                    <input id="${id}SprayVariableTerminators" title="Line&nbsp;Terminators:" name="sourceTerminators"  style="width: 95%;"  colspan="2" data-dojo-props="trim: true, placeHolder:'\\n,\\r\\n'" data-dojo-type="dijit.form.TextBox" />
-                                    <input id="${id}SprayVariableQuote" title="Quote:" style="width: 95%;" name="sourceQuote" colspan="2" data-data-dojo-props="trim: true, placeHolder:'\,'" data-dojo-type="dijit.form.TextBox" />
+                                    <input id="${id}SprayVariableTerminators" title="Line&nbsp;Terminators:" name="sourceTerminators"  style="width: 95%;" value="\n,\r\n" colspan="2" required="true" data-dojo-props="trim: true, placeHolder:'\\n,\\r\\n'" data-dojo-type="dijit.form.ValidationTextBox" />
+                                    <input id="${id}SprayVariableQuote" title="Quote:" style="width: 95%;" name="sourceQuote" value="'" colspan="2" data-data-dojo-props="trim: true, placeHolder:'\''" data-dojo-type="dijit.form.TextBox" />
                                 </div>
                                 <h2>Destination</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
                                     <input id="${id}SprayVariableDestination" title="Group:" style="width: 95%;" name="destGroup" colspan="2" data-dojo-type="TargetSelectWidget" />
-                                    <input title="Label:" style="width: 95%;" name="destLogicalName" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
+                                    <input title="Label:" style="width: 95%;" name="destLogicalName" colspan="2" data-dojo-props="trim: true" required="true" data-dojo-type="dijit.form.ValidationTextBox" />
                                     <input title="Mask:" style="width: 95%;" colspan="2" data-dojo-type="dijit.form.TextBox" />
                                     <input title="Prefix:" style="width: 95%;" name="prefix" colspan="2" data-dojo-type="dijit.form.TextBox" />
                                 </div>
@@ -81,8 +76,9 @@
                                     <input title="No&nbsp;Split:" name="nosplit" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                     <input title="Compress:" name="compress" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                 </div>
-                                <button data-dojo-attach-event="onClick:_onSprayVariable" data-dojo-type="dijit.form.Button">Spray </button>
-                                <button data-dojo-attach-event="onClick:_onSprayVariableCancel" data-dojo-type="dijit.form.Button">Cancel</button>
+                                <div class="dijitDialogPaneActionBar">
+                                    <button type="submit" data-dojo-attach-event="onClick:_onSprayVariable" data-dojo-type="dijit.form.Button">Spray </button>
+                                </div>
                             </div>
                         </div>
                     </div>
@@ -92,29 +88,24 @@
                             <div id="${id}SprayXmlDialog" style="width: 530px;" data-dojo-type="dijit.form.Form">
                                 <h2>Source</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
-                                    <!--<input id="${id}SprayXmlTargetSelect" title="DropZone" style="width: 95%;" name="machine" colspan="2" data-dojo-type="TargetSelectWidget" />
-                                    <input id="${id}SprayXmlIPAddress" title="IP&nbsp;Address:" style="width: 95%;" name="sourceIP" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
-                                    <input id="${id}SprayXmlTargetPath" title="Local&nbsp;Path:" style="width: 96%;" name="sourcePath" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.Textarea" />
-                                    <input id="${id}uploader3" type="file" title="Yes" style="width: 95%;" colspan="2" multiple="true" data-dojo-type="dojox/form/Uploader" data-dojo-props='label:"Choose&nbsp;File"'/>
-                                    <input id="${id}SprayXmlNetworkPath" title="Network&nbsp;Path:" style="width: 95%;" name="sourceN" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />-->
                                     <select id="${id}xmlsourceFormat" title="Format:" name="sourceFormat" data-dojo-type="dijit/form/Select">
-                                        <option value="1">ASCII</option><!--value="ascii"-->
-                                        <option value="2">UTF-8</option><!--value="utf8"-->
-                                        <option value="3">UTF-8N</option><!--value="utf8n"-->
-                                        <option value="4">UTF-16</option><!--value="utf16"-->
-                                        <option value="5">UTF-16LE</option><!--value="utf16le"-->
-                                        <option value="6">UTF-16BE</option><!--value="utf16be"-->
-                                        <option value="7">UTF-32</option><!--value="utf32"-->
-                                        <option value="8">UTF-32LE</option><!--value="utf32le"-->
-                                        <option value="9">UTF-32BE</option><!--value="utf32be"-->
+                                        <option value="1">ASCII</option>
+                                        <option value="2">UTF-8</option>
+                                        <option value="3">UTF-8N</option>
+                                        <option value="4">UTF-16</option>
+                                        <option value="5">UTF-16LE</option>
+                                        <option value="6">UTF-16BE</option>
+                                        <option value="7">UTF-32</option>
+                                        <option value="8">UTF-32LE</option>
+                                        <option value="9">UTF-32BE</option>
                                     </select>
-                                    <input id="${id}SprayXmlMaxRecordLength" title="Max&nbsp;Record&nbsp;Length:" style="width: 95%;" name="sourceMaxRecordSize" colspan="2" data-dojo-props="trim: true, placeHolder:'8192'" data-dojo-type="dijit.form.TextBox" />
-                                    <input id="${id}SprayXmlRowTag" title="Row&nbsp;Tag:" style="width: 95%;" name="sourceRowTag" colspan="2" data-dojo-props="trim: true, placeHolder:'tag'" data-dojo-type="dijit.form.TextBox" />
+                                    <input id="${id}SprayXmlMaxRecordLength" title="Max&nbsp;Record&nbsp;Length:" value="8192" style="width: 95%;" name="sourceMaxRecordSize" colspan="2" required="true" data-dojo-props="trim: true, placeHolder:'8192'" data-dojo-type="dijit.form.ValidationTextBox" />
+                                    <input id="${id}SprayXmlRowTag" title="Row&nbsp;Tag:" style="width: 95%;" name="sourceRowTag" colspan="2" required="true" data-dojo-props="trim: true, placeHolder:'tag'" data-dojo-type="dijit.form.ValidationTextBox" />
                                 </div>
                                 <h2>Destination</h2>
                                 <div data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
                                     <input id="${id}SprayXmlDestinationSelect" title="Group:" style="width: 95%;" name="destGroup" colspan="2" data-dojo-type="TargetSelectWidget" />
-                                    <input title="Label:" style="width: 95%;" name="destLogicalName" colspan="2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox" />
+                                    <input title="Label:" style="width: 95%;" name="destLogicalName" colspan="2" data-dojo-props="trim: true" required="true" data-dojo-type="dijit.form.ValidationTextBox" />
                                     <input title="Mask:" style="width: 95%;" colspan="2" data-dojo-type="dijit.form.TextBox" />
                                     <input title="Prefix:" style="width: 95%;" name="prefix" colspan="2" data-dojo-type="dijit.form.TextBox" />
                                 </div>
@@ -124,8 +115,9 @@
                                     <input title="No&nbsp;Split:" name="nosplit" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                     <input title="Compress:" name="compress" colspan="2" data-dojo-type="dijit.form.CheckBox" />
                                 </div>
-                                <button data-dojo-attach-event="onClick:_onSprayXml" data-dojo-type="dijit.form.Button">Spray</button>
-                                <button data-dojo-attach-event="onClick:_onSprayXmlCancel" data-dojo-type="dijit.form.Button">Cancel</button>
+                                <div class="dijitDialogPaneActionBar">
+                                    <button data-dojo-attach-event="onClick:_onSprayXml" data-dojo-type="dijit.form.Button">Spray</button>
+                                </div>
                             </div>
                         </div>
                     </div>

+ 8 - 3
esp/files/templates/WUDetailsWidget.html

@@ -18,9 +18,14 @@
                     <div id="${id}Publish" data-dojo-type="dijit.form.DropDownButton">
                         <span>Publish</span>
                         <div data-dojo-type="dijit.TooltipDialog">
-                            <label class="Prompt" for="${id}Jobname2">Job Name:</label>
-                            <input id="${id}Jobname2" data-dojo-props="trim: true" data-dojo-type="dijit.form.TextBox"/>
-                            <button data-dojo-attach-event="onClick:_onPublish" data-dojo-type="dijit.form.Button">Submit</button>
+                            <div id="${id}PublishForm" style="width:460px" onsubmit="return false;" data-dojo-type="dijit.form.Form">
+                                <div class="dijitDialogPaneContentArea" data-dojo-props="cols:2" data-dojo-type="dojox.layout.TableContainer">
+                                    <input id="${id}Jobname2" title="Job&nbsp;Name:" colspan="2" style="width:100%" required="true" data-dojo-props="trim: true" data-dojo-type="dijit.form.ValidationTextBox"/>
+                                </div>
+                                <div class="dijitDialogPaneActionBar">
+                                    <button type="submit" data-dojo-attach-event="onClick:_onPublish" data-dojo-type="dijit.form.Button">Submit</button>
+                                </div>
+                            </div>
                         </div>
                     </div>
                     <span data-dojo-type="dijit.ToolbarSeparator"></span>