Bladeren bron

WIP: 81488 Add checkboxes to the Select Computers Dialog

Add checkboxes to make selection of computers via the
"Select Computers" dialog box in ConfigMgr more user friendly.
User can still double click a single row to mimic row selection
and pressing the ok button. To check the select box for a bunch
of rows, user can select some rows and use context menu to select
or unselect those rows. Also, rename "Add Computers" to
"Add Hardware" and rename the table varibles to be consistent
with their usage.

Signed-off-by: Sridhar Meda <sridhar.meda@lexisnexis.com>
Sridhar Meda 14 jaren geleden
bovenliggende
commit
0fcadd1c6c
2 gewijzigde bestanden met toevoegingen van 196 en 104 verwijderingen
  1. 8 17
      esp/files/configmgr.html
  2. 188 87
      esp/files/scripts/configmgr/navtree.js

+ 8 - 17
esp/files/configmgr.html

@@ -761,23 +761,14 @@ You need to have Javascript enabled in order to use ConfigMgr. Please enable Jav
 </div>
 </div>
 
 
 
 
-<div id="roxieClusterPanel" style="display:none;background-color:White;">
-          <div class="bd" style="background-color:White;">
-            <div id="roxieClusterLayout" style="background-color:White;">
-              <div id="left3" style="background-color:White; font-size:0.9em;width:50%;">
-              </div>
-              <div id="center3"  style="background-color:White;">
-                <div id="roxieClusterFilterPanel" style="display:none">
-                  <div class="hd"></div>
-                  <div class="bd">
-                    <iframe id="computerFilterFrame" style="height:100%; width:75%;"></iframe>
-                  </div>
-                  <div class="ft"></div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
+<div id="selectComputersPanel" style="display: none; background-color: White;">
+  <div class="bd" style="background-color: White;">
+    <div id="selectComputersLayout" style="background-color: White;">
+      <div id="selectComputersDTDiv" style="background-color: White; font-size: 0.9em; width: 50%;">
+      </div>
+    </div>
+  </div>
+</div>
         
         
 <div id="roxieReplaceNodePanel" style="display:none;background-color:White;">
 <div id="roxieReplaceNodePanel" style="display:none;background-color:White;">
   <div class="bd" style="background-color:White;">
   <div class="bd" style="background-color:White;">

+ 188 - 87
esp/files/scripts/configmgr/navtree.js

@@ -1622,9 +1622,9 @@ function displayAddFarmDlg(self, farmName) {
   var handleSubmit = function() {
   var handleSubmit = function() {
     this.hide();
     this.hide();
     top.document.startWait();
     top.document.startWait();
-    var selRows = left3.roxieComputersTable.getSelectedRows();
+    var selRows = selectComputersDTDiv.selectComputersTable.getUserSelectedRows();
     var compName = tmpdt.getRecord(tmpdt.getSelectedRows()[0]).getData('Name');
     var compName = tmpdt.getRecord(tmpdt.getSelectedRows()[0]).getData('Name');
-    var xmlStr = roxieSelectionToXML(left3.roxieComputersTable, "RoxieFarm", tmpdt.roxieClusterPanel.currentFarmName, selRows, compName);
+    var xmlStr = roxieSelectionToXML(selectComputersDTDiv.selectComputersTable, "RoxieFarm", tmpdt.selectComputersPanel.currentFarmName, selRows, compName);
 
 
     clearSelectComputersTable();
     clearSelectComputersTable();
     YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleRoxieOperation', {
     YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleRoxieOperation', {
@@ -1645,11 +1645,11 @@ function displayAddFarmDlg(self, farmName) {
 
 
   initSelectComputersPanel(tmpdt, handleSubmit);
   initSelectComputersPanel(tmpdt, handleSubmit);
 
 
-  tmpdt.roxieClusterPanel.currentFarmName = farmName;
-  document.getElementById('roxieClusterPanel').style.display = 'block';
-  tmpdt.roxieClusterPanel.render(document.body);
-  tmpdt.roxieClusterPanel.center();
-  tmpdt.roxieClusterPanel.show();
+  tmpdt.selectComputersPanel.currentFarmName = farmName;
+  document.getElementById('selectComputersPanel').style.display = 'block';
+  tmpdt.selectComputersPanel.render(document.body);
+  tmpdt.selectComputersPanel.center();
+  tmpdt.selectComputersPanel.show();
 }
 }
 
 
 function displayReplaceServerDlg() {
 function displayReplaceServerDlg() {
@@ -1661,8 +1661,8 @@ function displayReplaceServerDlg() {
 }
 }
 
 
 function setSingleSelectionModeForInstances() {
 function setSingleSelectionModeForInstances() {
-  if (left3.roxieComputersTable)
-    left3.roxieComputersTable.set("selectionMode", "single");
+  if (selectComputersDTDiv.selectComputersTable)
+    selectComputersDTDiv.selectComputersTable.set("selectionMode", "single");
   else
   else
     setTimeout("setSingleSelectionModeForInstances()", 250);
     setTimeout("setSingleSelectionModeForInstances()", 250);
 }
 }
@@ -1837,7 +1837,6 @@ function initOpenEnvPanel(fnSubmit) {
                               height: (tmpdt.openEnvPanel.body.offsetHeight - 20),
                               height: (tmpdt.openEnvPanel.body.offsetHeight - 20),
           units: [
           units: [
                                       { position: 'center', header: 'Available environments', width: 300, resize: true, body: 'openEnvTableDiv', gutter: '2px', /*collapse: true, collapseSize: 20,*/scroll: true}//,
                                       { position: 'center', header: 'Available environments', width: 300, resize: true, body: 'openEnvTableDiv', gutter: '2px', /*collapse: true, collapseSize: 20,*/scroll: true}//,
-          //{ position: 'center', header: 'Filter', body: 'center3', gutter: '2px', resize: true, scroll: true }
                                   ]
                                   ]
         });
         });
         tmpdt.openEnvPanel.layout.render();
         tmpdt.openEnvPanel.layout.render();
@@ -2024,9 +2023,9 @@ function displayAddInstanceDlg() {
   var handleSubmit = function() {
   var handleSubmit = function() {
     this.hide();
     this.hide();
     top.document.startWait();
     top.document.startWait();
-    var selRows = left3.roxieComputersTable.getSelectedRows();
+    var selRows = selectComputersDTDiv.selectComputersTable.getUserSelectedRows();
     var compName = tmpdt.getRecord(tmpdt.getSelectedRows()[0]).getData('Name');
     var compName = tmpdt.getRecord(tmpdt.getSelectedRows()[0]).getData('Name');
-    var xmlStr = instanceSelectionToXML(left3.roxieComputersTable, selRows, tmpdt);
+    var xmlStr = instanceSelectionToXML(selectComputersDTDiv.selectComputersTable, selRows, tmpdt);
     clearSelectComputersTable();
     clearSelectComputersTable();
     YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleInstance', {
     YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleInstance', {
       success: function(o) {
       success: function(o) {
@@ -2062,10 +2061,10 @@ function displayAddInstanceDlg() {
 
 
   initSelectComputersPanel(tmpdt, handleSubmit);
   initSelectComputersPanel(tmpdt, handleSubmit);
 
 
-  document.getElementById('roxieClusterPanel').style.display = 'block';
-  tmpdt.roxieClusterPanel.render(document.body);
-  tmpdt.roxieClusterPanel.center();
-  tmpdt.roxieClusterPanel.show();
+  document.getElementById('selectComputersPanel').style.display = 'block';
+  tmpdt.selectComputersPanel.render(document.body);
+  tmpdt.selectComputersPanel.center();
+  tmpdt.selectComputersPanel.show();
 }
 }
 
 
 function expandRecordWithId(dataTable, id) {
 function expandRecordWithId(dataTable, id) {
@@ -2388,7 +2387,7 @@ function promptNewRange(domains, computerTypes, type) {
 function promptSlaveConfig(self) {
 function promptSlaveConfig(self) {
   var tmpdt = self;
   var tmpdt = self;
   var handleSubmit = function() {
   var handleSubmit = function() {
-    var selRows = left3.roxieComputersTable.getSelectedRows();
+    var selRows = selectComputersDTDiv.selectComputersTable.getUserSelectedRows();
     if (selRows.length === 0) {
     if (selRows.length === 0) {
       alert("please make a selection or press cancel");
       alert("please make a selection or press cancel");
       return;
       return;
@@ -2397,20 +2396,20 @@ function promptSlaveConfig(self) {
     this.hide();
     this.hide();
     top.document.startWait();
     top.document.startWait();
     var compName = tmpdt.getRecord(tmpdt.getSelectedRows()[0]).getData('Name');
     var compName = tmpdt.getRecord(tmpdt.getSelectedRows()[0]).getData('Name');
-    var xmlStr = instanceSelectionToXML(left3.roxieComputersTable, selRows, tmpdt);
+    var xmlStr = instanceSelectionToXML(selectComputersDTDiv.selectComputersTable, selRows, tmpdt);
     displaySlaveConfigDlg(tmpdt, selRows.length);
     displaySlaveConfigDlg(tmpdt, selRows.length);
   }
   }
   initSelectComputersPanel(tmpdt, handleSubmit);
   initSelectComputersPanel(tmpdt, handleSubmit);
-  document.getElementById('roxieClusterPanel').style.display = 'block';
-  tmpdt.roxieClusterPanel.render(document.body);
-  tmpdt.roxieClusterPanel.center();
-  tmpdt.roxieClusterPanel.show();
+  document.getElementById('selectComputersPanel').style.display = 'block';
+  tmpdt.selectComputersPanel.render(document.body);
+  tmpdt.selectComputersPanel.center();
+  tmpdt.selectComputersPanel.show();
 }
 }
 
 
 function slaveConfigToXml(table, type, val1, val2) {
 function slaveConfigToXml(table, type, val1, val2) {
   var compName = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('Name');
   var compName = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('Name');
   var xmlStr = "<RoxieData type=\"" + type + "\" val1=\"" + val1 + "\" val2= \"" + val2 + "\" roxieName=\"" + compName + "\" >";
   var xmlStr = "<RoxieData type=\"" + type + "\" val1=\"" + val1 + "\" val2= \"" + val2 + "\" roxieName=\"" + compName + "\" >";
-  var selectedRows = table.getSelectedRows();
+  var selectedRows = table.getUserSelectedRows();
   if (typeof (selectedRows) !== 'undefined') {
   if (typeof (selectedRows) !== 'undefined') {
     for (var i = 0; i < selectedRows.length; i++) {
     for (var i = 0; i < selectedRows.length; i++) {
       xmlStr += "<Computer name=\"" + table.getRecord(selectedRows[i]).getData('name') + "\"/>";
       xmlStr += "<Computer name=\"" + table.getRecord(selectedRows[i]).getData('name') + "\"/>";
@@ -2471,7 +2470,7 @@ function displaySlaveConfigDlg(paramdt, width) {
 
 
 
 
         this.hide();
         this.hide();
-        var xmlStr = slaveConfigToXml(left3.roxieComputersTable, conf, val1, val2);
+        var xmlStr = slaveConfigToXml(selectComputersDTDiv.selectComputersTable, conf, val1, val2);
         YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleRoxieOperation', {
         YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleRoxieOperation', {
           success: function(o) {
           success: function(o) {
             clearSelectComputersTable();
             clearSelectComputersTable();
@@ -2531,60 +2530,107 @@ function displaySlaveConfigDlg(paramdt, width) {
 function populateSelectComputersPanel(paramdt)
 function populateSelectComputersPanel(paramdt)
 {
 {
   top.document.startWait();
   top.document.startWait();
-      YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/GetComputersForRoxie', {
-        success: function(o) {
-          if (!left3.roxieComputersDataSource) {
-            var roxieComputersColumnDefs = [{ key: "name", label: "Computer", width: 120 },
+  YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/GetComputersForRoxie', {
+    success: function(o) {
+      if (!selectComputersDTDiv.selectComputersDataSource) {
+        var roxieComputersColumnDefs = [{ key: "check", label: "<input type='checkbox' id='SelectAllComputers'> Select <br/> All", formatter: "checkbox" },
+                                    { key: "name", label: "Computer", width: 120 },
                                     { key: "netAddress", label: "Net Address", width: 100 },
                                     { key: "netAddress", label: "Net Address", width: 100 },
                                     { key: "usage", label: "Usage", width: 180}];
                                     { key: "usage", label: "Usage", width: 180}];
-            var xmlStr = '<?xml version="1.0" encoding="UTF-8"?><Machine name="" netAddress="" usage=""/>';
-            var roxieComputersDataSource = new YAHOO.util.DataSource(xmlStr);
-            roxieComputersDataSource.responseType = YAHOO.util.DataSource.TYPE_XML;
-            roxieComputersDataSource.responseSchema = { resultNode: "Machine", fields: ["name", "netAddress", "usage"] };
-            var roxieComputersDataTable = new YAHOO.widget.DataTable("left3", roxieComputersColumnDefs,
-                                                              roxieComputersDataSource,
-                                                              { width: "400", initialLoad: false, resize: true });
-
-            roxieComputersDataTable.subscribe("rowClickEvent", roxieComputersDataTable.onEventSelectRow);
-            roxieComputersDataTable.subscribe("cellClickEvent", function() { roxieComputersDataTable.clearTextSelection() });
-            roxieComputersDataTable.subscribe("cellDblclickEvent", function(oArgs) {
-            var btns = paramdt.roxieClusterPanel.cfg.getProperty("buttons");
-              for (var bIdx = 0; bIdx < btns.length; bIdx++) {
-                if (btns[bIdx].text === 'Ok') {
-                  YAHOO.util.UserAction.click(btns[bIdx].htmlButton);
-                  return false;
-                }
-              }
-            });
-            left3.roxieComputersTable = roxieComputersDataTable;
-            left3.roxieComputersDataSource = roxieComputersDataSource;
+        var xmlStr = '<?xml version="1.0" encoding="UTF-8"?><Machine name="" netAddress="" usage=""/>';
+        var selectComputersDataSource = new YAHOO.util.DataSource(xmlStr);
+        selectComputersDataSource.responseType = YAHOO.util.DataSource.TYPE_XML;
+        selectComputersDataSource.responseSchema = { resultNode: "Machine", fields: ["name", "netAddress", "usage"] };
+        var selectComputersDataTable = new YAHOO.widget.DataTable("selectComputersDTDiv", roxieComputersColumnDefs,
+                                                              selectComputersDataSource,
+                                                              { width: "490", initialLoad: false, resize: true });
+
+        selectComputersDataTable.subscribe("checkboxClickEvent", function(oArgs) {
+          var elem = oArgs.target;
+          var oRecord = this.getRecord(elem);
+          oRecord.setData("check", elem.checked);
+          if (elem.checked !== true)
+            top.document.getElementById('SelectAllComputers').checked = false;
+        });
+
+        selectComputersDataTable.getUserSelectedRows = function() {
+          var selectedRows = new Array();
+          var recSet = this.getRecordSet();
+          var recSetLen = recSet.getLength();
+          for (var i = 0; i < recSetLen; i++) {
+            var r = recSet.getRecord(i);
+            if (r.getData('check') === true)
+              selectedRows[selectedRows.length] = r.getId();
           }
           }
 
 
-          left3.roxieComputersDataSource.handleResponse("", o, { success: left3.roxieComputersTable.onDataReturnInitializeTable,
-            scope: left3.roxieComputersTable
-          }, this, 999);
+          return selectedRows;
+        }
 
 
-          top.document.stopWait();
-        },
-        failure: function(o) {
-          top.document.stopWait();
-          alert(o.statusText);
-        },
-        scope: this
-      },
-          getFileName(true) + 'Cmd=Farms');
+        selectComputersDataTable.on('theadCellClickEvent', function(oArgs) {
+          var target = oArgs.target,
+              column = this.getColumn(target),
+              actualTarget = YAHOO.util.Event.getTarget(oArgs.event),
+              check = actualTarget.checked;
+
+          if (column.key == 'check') {
+            var recordSet = this.getRecordSet();
+            var len = recordSet.getLength();
+            for (var i = 0; i < len; i++) {
+              var rec = recordSet.getRecord(i);
+              rec.setData('check', check);
+            }
+            this.render();
+          }
+          this.unselectAllRows();
+        });
+
+        selectComputersDataTable.subscribe("rowClickEvent", selectComputersDataTable.onEventSelectRow);
+        selectComputersDataTable.subscribe("cellClickEvent", function() { selectComputersDataTable.clearTextSelection() });
+        selectComputersDataTable.subscribe("cellDblclickEvent", function(oArgs) {
+          var oRecord = this.getRecord(oArgs.target);
+          oRecord.setData("check", true);
+          var btns = paramdt.selectComputersPanel.cfg.getProperty("buttons");
+          for (var bIdx = 0; bIdx < btns.length; bIdx++) {
+            if (btns[bIdx].text === 'Ok') {
+              YAHOO.util.UserAction.click(btns[bIdx].htmlButton);
+              return false;
+            }
+          }
+        });
+
+        var oContextMenu = new YAHOO.widget.ContextMenu("selectcomputersmenu", { trigger: "selectComputersDTDiv", lazyload: true, container: "selectComputersDTDiv" });
+        oContextMenu.subscribe("beforeShow", onSelectComputersContextMenuBeforeShow);
+        oContextMenu.dt = selectComputersDataTable;
+
+        selectComputersDTDiv.selectComputersTable = selectComputersDataTable;
+        selectComputersDTDiv.selectComputersDataSource = selectComputersDataSource;
+      }
+
+      selectComputersDTDiv.selectComputersDataSource.handleResponse("", o, { success: selectComputersDTDiv.selectComputersTable.onDataReturnInitializeTable,
+        scope: selectComputersDTDiv.selectComputersTable
+      }, this, 999);
+
+      top.document.getElementById('SelectAllComputers').checked = false;
+      top.document.stopWait();
+    },
+    failure: function(o) {
+      top.document.stopWait();
+      alert(o.statusText);
+    },
+    scope: this
+  },
+  getFileName(true) + 'Cmd=Farms');
 }
 }
 
 
 function initSelectComputersPanel(paramdt, fnSave, enableNumNodes) {
 function initSelectComputersPanel(paramdt, fnSave, enableNumNodes) {
-  if (!paramdt.roxieClusterPanel) {
-    paramdt.roxieClusterPanel = new YAHOO.widget.Dialog("roxieClusterPanel",
-                            { width: "450px",
+  if (!paramdt.selectComputersPanel) {
+    paramdt.selectComputersPanel = new YAHOO.widget.Dialog("selectComputersPanel",
+                            { width: "520px",
                               height: "500px",
                               height: "500px",
                               resizable: true,
                               resizable: true,
                               fixedcenter: true,
                               fixedcenter: true,
                               close: true,
                               close: true,
                               draggable: true,
                               draggable: true,
-                              //zindex:9999,
                               modal: true,
                               modal: true,
                               visible: false,
                               visible: false,
                               underlay: 'none',
                               underlay: 'none',
@@ -2592,23 +2638,22 @@ function initSelectComputersPanel(paramdt, fnSave, enableNumNodes) {
                             }
                             }
                         );
                         );
 
 
-                            paramdt.roxieClusterPanel.renderEvent.subscribe(function() {
+                            paramdt.selectComputersPanel.renderEvent.subscribe(function() {
 
 
-                              if (!paramdt.roxieClusterPanel.layout) {
-                                paramdt.roxieClusterPanel.layout = new YAHOO.widget.Layout('roxieClusterLayout', {
-                                  height: (paramdt.roxieClusterPanel.body.offsetHeight - 40),
+                            if (!paramdt.selectComputersPanel.layout) {
+                              paramdt.selectComputersPanel.layout = new YAHOO.widget.Layout('selectComputersLayout', {
+                              height: (paramdt.selectComputersPanel.body.offsetHeight - 40),
                                   units: [
                                   units: [
-                                      { position: 'center', header: 'Computers', width: 400, resize: true, body: 'left3', gutter: '2px', /*collapse: true, collapseSize: 20,*/scroll: true}//,
-                                  //{ position: 'center', header: 'Filter', body: 'center3', gutter: '2px', resize: true, scroll: true }
+                                      { position: 'center', header: 'Computers', width: 490, resize: true, body: 'selectComputersDTDiv', gutter: '2px', scroll: true }
                                   ]
                                   ]
                                 });
                                 });
-                                paramdt.roxieClusterPanel.layout.render();
+                                paramdt.selectComputersPanel.layout.render();
                               }
                               }
 
 
                               populateSelectComputersPanel(paramdt);
                               populateSelectComputersPanel(paramdt);
                             });
                             });
 
 
-    paramdt.roxieClusterPanel.setHeader("Select computers");
+                            paramdt.selectComputersPanel.setHeader("Select computers");
   }
   }
 
 
   var fnCancel = function() {
   var fnCancel = function() {
@@ -2656,10 +2701,10 @@ function initSelectComputersPanel(paramdt, fnSave, enableNumNodes) {
   getFileName(true) + 'Params=' + params);
   getFileName(true) + 'Params=' + params);
   }
   }
 
 
-  var myButtons = [{ text: "Add Computers", handler: fnAddComputers },
+  var myButtons = [{ text: "Add Hardware", handler: fnAddComputers },
                    { text: "Ok", handler: fnSave, isDefault: true },
                    { text: "Ok", handler: fnSave, isDefault: true },
                    { text: "Cancel", handler: fnCancel}];
                    { text: "Cancel", handler: fnCancel}];
-  paramdt.roxieClusterPanel.cfg.queueProperty("buttons", myButtons);
+  paramdt.selectComputersPanel.cfg.queueProperty("buttons", myButtons);
   if (enableNumNodes) {
   if (enableNumNodes) {
     if (!document.getElementById('slavesPerNodeDiv')) {
     if (!document.getElementById('slavesPerNodeDiv')) {
       var newdiv = document.createElement("div");
       var newdiv = document.createElement("div");
@@ -2673,7 +2718,7 @@ function initSelectComputersPanel(paramdt, fnSave, enableNumNodes) {
       aTextBox.style.width = "50";
       aTextBox.style.width = "50";
       newdiv.appendChild(newtext);
       newdiv.appendChild(newtext);
       newdiv.appendChild(aTextBox);
       newdiv.appendChild(aTextBox);
-      var nodes = document.getElementById("roxieClusterPanel").childNodes;
+      var nodes = document.getElementById("selectComputersPanel").childNodes;
       for (var i = 0; i < nodes.length; i++) {
       for (var i = 0; i < nodes.length; i++) {
         if (nodes[i].className == "bd") {
         if (nodes[i].className == "bd") {
           nodes[i].appendChild(newdiv);
           nodes[i].appendChild(newdiv);
@@ -2773,7 +2818,7 @@ function initReplaceRoxieNodesPanel() {
   getFileName(true) + 'Params=' + params);
   getFileName(true) + 'Params=' + params);
   }
   }
 
 
-  var myButtons = [{ text: "Add Computers", handler: fnAddComputers },
+  var myButtons = [{ text: "Add Hardware", handler: fnAddComputers },
                    { text: "Close", handler: fnClose, isDefault: true }];
                    { text: "Close", handler: fnClose, isDefault: true }];
   top.document.navDT.roxieNodesReplacePanel.cfg.queueProperty("buttons", myButtons);
   top.document.navDT.roxieNodesReplacePanel.cfg.queueProperty("buttons", myButtons);
 }
 }
@@ -2896,8 +2941,10 @@ function enableRoxieConfigOptions(type) {
 }
 }
 
 
 function clearSelectComputersTable() {
 function clearSelectComputersTable() {
-  if (left3.roxieComputersDataSource)
-    left3.roxieComputersTable.unselectAllRows();
+  if (selectComputersDTDiv.selectComputersDataSource) {
+    selectComputersDTDiv.selectComputersTable.unselectAllRows();
+    top.document.getElementById('SelectAllComputers').checked = false;
+  }
 }
 }
 
 
 function thorInstSelToXML(self, selectedRows, paramdt, type, validateComputers, skip, slavesPerNode) {
 function thorInstSelToXML(self, selectedRows, paramdt, type, validateComputers, skip, slavesPerNode) {
@@ -2921,7 +2968,7 @@ function thorInstSelToXML(self, selectedRows, paramdt, type, validateComputers,
 function promptThorTopology(self, type) {
 function promptThorTopology(self, type) {
   var tmpdt = self;
   var tmpdt = self;
   var handleSubmit = function() {
   var handleSubmit = function() {
-    var selRows = left3.roxieComputersTable.getSelectedRows();
+    var selRows = selectComputersDTDiv.selectComputersTable.getUserSelectedRows();
     if (selRows.length === 0) {
     if (selRows.length === 0) {
       alert("please make a selection or press cancel");
       alert("please make a selection or press cancel");
       return;
       return;
@@ -2935,7 +2982,7 @@ function promptThorTopology(self, type) {
     this.hide();
     this.hide();
     top.document.startWait();
     top.document.startWait();
     var compName = tmpdt.getRecord(tmpdt.getSelectedRows()[0]).getData('Name');
     var compName = tmpdt.getRecord(tmpdt.getSelectedRows()[0]).getData('Name');
-    var xmlStr = thorInstSelToXML(left3.roxieComputersTable, selRows, tmpdt, type, true, false, document.getElementById("slavesPerNode").value);
+    var xmlStr = thorInstSelToXML(selectComputersDTDiv.selectComputersTable, selRows, tmpdt, type, true, false, document.getElementById("slavesPerNode").value);
 
 
     YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleThorTopology', {
     YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleThorTopology', {
       success: function(o) {
       success: function(o) {
@@ -2954,7 +3001,7 @@ function promptThorTopology(self, type) {
 
 
             var fnYes = function() {
             var fnYes = function() {
               this.hide();
               this.hide();
-              xmlStr = thorInstSelToXML(left3.roxieComputersTable, selRows, tmpdt, type, false, false, document.getElementById("slavesPerNode").value);
+              xmlStr = thorInstSelToXML(selectComputersDTDiv.selectComputersTable, selRows, tmpdt, type, false, false, document.getElementById("slavesPerNode").value);
               YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleThorTopology', {
               YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleThorTopology', {
                 success: function(o) {
                 success: function(o) {
                   clearSelectComputersTable();
                   clearSelectComputersTable();
@@ -2982,7 +3029,7 @@ function promptThorTopology(self, type) {
 
 
             var fnNo = function() {
             var fnNo = function() {
               this.hide();
               this.hide();
-              xmlStr = thorInstSelToXML(left3.roxieComputersTable, selRows, tmpdt, type, false, true, document.getElementById("slavesPerNode").value);
+              xmlStr = thorInstSelToXML(selectComputersDTDiv.selectComputersTable, selRows, tmpdt, type, false, true, document.getElementById("slavesPerNode").value);
               YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleThorTopology', {
               YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleThorTopology', {
                 success: function(o) {
                 success: function(o) {
                   clearSelectComputersTable();
                   clearSelectComputersTable();
@@ -3030,10 +3077,10 @@ function promptThorTopology(self, type) {
       getFileName(true) + 'Operation=Add&Type=' + type + '&XmlArgs=' + xmlStr);
       getFileName(true) + 'Operation=Add&Type=' + type + '&XmlArgs=' + xmlStr);
   }
   }
   initSelectComputersPanel(tmpdt, handleSubmit, type==="Slave" ? true : false);
   initSelectComputersPanel(tmpdt, handleSubmit, type==="Slave" ? true : false);
-  document.getElementById('roxieClusterPanel').style.display = 'block';
-  tmpdt.roxieClusterPanel.render(document.body);
-  tmpdt.roxieClusterPanel.center();
-  tmpdt.roxieClusterPanel.show();
+  document.getElementById('selectComputersPanel').style.display = 'block';
+  tmpdt.selectComputersPanel.render(document.body);
+  tmpdt.selectComputersPanel.center();
+  tmpdt.selectComputersPanel.show();
 }
 }
 
 
 function promptYesNoCancel(msg, fnYes, fnNo, fnCancel) {
 function promptYesNoCancel(msg, fnYes, fnNo, fnCancel) {
@@ -4601,3 +4648,57 @@ function getSummaryPage()
   updateWizCtrls();
   updateWizCtrls();
   return;
   return;
 }
 }
+
+function onSelectComputersContextMenuBeforeShow(p_sType, p_aArgs) {
+  if (!this.configContextMenuItems) {
+    this.configContextMenuItems = {
+      "Select": [{ text: "Select/Unselect", onclick: { fn: onMenuItemSelectUnselect} }]
+    };
+  }
+
+  if (this.getRoot() === this) {
+    this.clearContent();
+    this.addItems(this.configContextMenuItems['Select']);
+
+    if (top.document.forms['treeForm'].isLocked.value === 'false') {
+      var groups = this.getItemGroups();
+      for (iGroup = 0; iGroup < groups.length; iGroup++) {
+        if (typeof (groups[iGroup]) !== 'undefined')
+          for (i = 0; i < groups[iGroup].length; i++)
+          groups[iGroup][i].cfg.setProperty("disabled", true);
+      }
+    }
+
+    this.render();
+  }
+}
+
+function onMenuItemSelectUnselect() {
+  if (top.document.forms['treeForm'].isLocked.value === 'false')
+    return;
+
+  var oTarget = this.parent.contextEventTarget;
+  var Dom = YAHOO.util.Dom;
+  var oSelectedTR = oTarget.nodeName.toUpperCase() === "TR" ?
+                            oTarget : Dom.getAncestorByTagName(oTarget, "TR");
+  var dt = this.parent.dt;
+  var recSet = dt.getRecordSet();
+  var record = recSet.getRecord(oSelectedTR.id);
+  var selRows = dt.getSelectedRows();
+
+  if (selRows.length > 0) {
+    var flag = dt.getRecord(selRows[0]).getData('check');
+    for (var idx = 0; idx < selRows.length; idx++) {
+      var rec = dt.getRecord(selRows[idx]);
+
+      rec.setData('check', !flag);
+    }
+  }
+  else  {
+   var flag = record.getData('check');
+   record.setData('check', !flag);
+  }
+
+  top.document.getElementById('SelectAllComputers').checked = false;
+  dt.render();
+}