home *** CD-ROM | disk | FTP | other *** search
/ Flash MX Savvy / FlashMX Savvy.iso / pc / WIN / UltraDev / UltraDev_Trial.exe / Disk1 / data1.cab / Configuration_En / Commands / Radio Properties.js < prev    next >
Encoding:
JavaScript  |  2000-12-11  |  7.7 KB  |  263 lines

  1.  
  2. // Copyright 2000 Macromedia, Inc. All rights reserved. 
  3.  
  4. //************************GLOBALS**************************
  5.  
  6. var EMPTY_LIST = new Array();
  7. var GRID_RADIO;
  8. var LAYER_MANUAL;
  9. var LAYER_DATABASE;
  10. var TF_RADIO_LABEL;
  11. var TF_RADIO_VALUE;
  12. var TF_DEFAULT_MANUAL;
  13. var MENU_RECORDSET;
  14. var MENU_LABELS;
  15. var MENU_VALUES;
  16. var TF_DEFAULT_DATABASE;
  17. var RADIO_GROUP_TYPE;
  18.  
  19.  
  20. //********************API FUNCTIONS**************************
  21.  
  22. function commandButtons(){
  23.  
  24.    return new Array(BTN_OK,    "okClicked()",
  25.                     BTN_Cancel,"cancelClicked()");
  26. }
  27.  
  28. //******************LOCAL FUNCTIONS**************************
  29.  
  30. function okClicked(){
  31.   if (LAYER_MANUAL.visibility == "visible"){ // static radio object created
  32.     var allRows = GRID_RADIO.list, nRows = allRows.length, currRowText, dividerInd;
  33.     var labelArr = new Array(),valArr = new Array();
  34.  
  35.     for (i=0;i<nRows;i++){
  36.       currRowText = allRows[i];
  37.       dividerInd = currRowText.indexOf("|");
  38.       labelArr.push(currRowText.substring(0,dividerInd));
  39.       valArr.push(currRowText.substring(dividerInd +1));
  40.     }
  41.  
  42.   MM.commandReturnValue = new eoRadioGroup(labelArr,valArr,TF_DEFAULT_MANUAL.value);
  43.   } else { // dynamic radio group created
  44.  
  45.     dynRadGrObj = new eoDynamicRadioGroup();
  46.     dynRadGrObj.recordset = MENU_RECORDSET.getValue();
  47.     dynRadGrObj.labelCol = MENU_LABELS.getValue();
  48.     dynRadGrObj.valCol = MENU_VALUES.getValue();
  49.     dynRadGrObj.defaultChecked = TF_DEFAULT_DATABASE.value;
  50.  
  51.     MM.commandReturnValue = dynRadGrObj;
  52.   }
  53.   clearUI();
  54.   window.close();
  55. }
  56.  
  57. function cancelClicked(){
  58.   MM.commandReturnValue = "";
  59.   clearUI();
  60.   window.close();
  61. }
  62.  
  63. function clearUI(){
  64.   GRID_RADIO.setAllRows(new Array(),new Array());
  65.   TF_RADIO_LABEL.value = "";
  66.   TF_RADIO_VALUE.value = "";
  67.   TF_DEFAULT_MANUAL.value = "";
  68.   TF_DEFAULT_DATABASE.value = "";
  69.   
  70.   LAYER_MANUAL.visibility="hidden";
  71.   LAYER_DATABASE.visibility="hidden";
  72.   MENU_RECORDSET.setIndex(0);
  73.   MENU_LABELS.setIndex(0);
  74.   MENU_VALUES.setIndex(0);
  75. }
  76.  
  77.  
  78. function initializeUI(){
  79.  
  80.   LAYER_MANUAL   = document.layers["manualLayer"];
  81.   LAYER_DATABASE = document.layers["databaseLayer"];
  82.  
  83.   RADIO_GROUP_TYPE = new RadioGroup("Populate");
  84.   GRID_RADIO = new GridWithNavControls("MenuGrid",LAYER_MANUAL,true);
  85.   GRID_RADIO.setColumnNames(MM.LABEL_RadioGrid);
  86.     
  87.   TF_RADIO_LABEL = findObject("MenuText",LAYER_MANUAL);
  88.   TF_RADIO_VALUE = findObject("MenuValue",LAYER_MANUAL);
  89.   TF_DEFAULT_MANUAL = findObject("DefaultValueManual",LAYER_MANUAL);
  90.   MENU_RECORDSET = new ListControl("Recordset",LAYER_DATABASE);
  91.   MENU_LABELS = new ListControl("GetMenuText",LAYER_DATABASE);
  92.   MENU_VALUES = new ListControl("GetMenuValues",LAYER_DATABASE);
  93.   TF_DEFAULT_DATABASE = findObject("DefaultValueDatabase",LAYER_DATABASE);
  94.  
  95.   var radioGroupInfoObj = MM.commandArgument;
  96.  
  97.   if (radioGroupInfoObj.type == "radioGroup"){ // if a static radio group
  98.     initManualLayer();
  99.     showDifferentLayer('manual');
  100.     RADIO_GROUP_TYPE.setSelectedIndex(0);
  101.     if (radioGroupInfoObj.labelArr != "" || radioGroupInfoObj.defaultChecked != ""){ // if there are prior values
  102.       var nOptions = radioGroupInfoObj.labelArr.length,i;
  103.       var gridDisplayArr = new Array();
  104.       var labelArr = radioGroupInfoObj.labelArr;
  105.       var valArr  = radioGroupInfoObj.valArr;
  106.       for (i=0;i<nOptions;i++){
  107.         gridDisplayArr[i] = labelArr[i] + "|";
  108.         if (valArr[i])
  109.           gridDisplayArr[i] += valArr[i];
  110.       }
  111.  
  112.       if (gridDisplayArr.length && gridDisplayArr.length > 0) {
  113.         GRID_RADIO.setAllRows(gridDisplayArr);
  114.         GRID_RADIO.setRowIndex(0);
  115.         displayGridValues();
  116.       }
  117.     
  118.       TF_RADIO_LABEL.focus();
  119.       if (TF_RADIO_LABEL.value != "")
  120.         TF_RADIO_LABEL.select();
  121.       TF_DEFAULT_MANUAL.value = radioGroupInfoObj.defaultChecked;
  122.    }
  123.   } else { // if a dynamic radio group
  124.     RADIO_GROUP_TYPE.setSelectedIndex(1);
  125.     showDifferentLayer('database');
  126.     // next line is work-around for bug that buttons disappeared
  127.     document.layers["topLayer"].visibility = "visible"; 
  128.     initDatabaseLayer();
  129.     if (radioGroupInfoObj.recordset){ // if there are prior values
  130.       MENU_RECORDSET.pickValue(radioGroupInfoObj.recordset);
  131.       updateColumns();
  132.       MENU_LABELS.pickValue(radioGroupInfoObj.labelCol);
  133.       MENU_VALUES.pickValue(radioGroupInfoObj.valCol);
  134.       TF_DEFAULT_DATABASE.value = radioGroupInfoObj.defaultChecked;
  135.     }
  136.  
  137.   }
  138.  
  139.  
  140. }
  141.  
  142. function initDatabaseLayer(){
  143.   var rsNames = findAllRecordsetNames(), colNames;
  144.   MENU_RECORDSET.setAll(rsNames,rsNames);
  145.   updateColumns();
  146.   TF_DEFAULT_DATABASE.value = "";
  147.   if (TF_DEFAULT_MANUAL.value != ""){
  148.     TF_DEFAULT_DATABASE.value = TF_DEFAULT_MANUAL.value;
  149.   }
  150. }
  151.  
  152.  
  153. function initManualLayer(){
  154.   if (GRID_RADIO.list.length == 0){
  155.     TF_DEFAULT_MANUAL.value = "";
  156.     addNewRow();
  157.     GRID_RADIO.setRowIndex(0);
  158.   } else {
  159.     if (GRID_RADIO.list.length == 1 && GRID_RADIO.getRow() == "|"){
  160.       GRID_RADIO.setRow(" |");
  161.       GRID_RADIO.setRowIndex(0);
  162.     }
  163.     TF_RADIO_LABEL.focus();
  164.     TF_RADIO_LABEL.select();
  165.   }
  166.   
  167.   if (TF_DEFAULT_DATABASE.value !=""){
  168.     TF_DEFAULT_MANUAL.value = TF_DEFAULT_DATABASE.value;
  169.   }
  170. }
  171.  
  172.  
  173.  
  174. function addNewRow(){
  175.   GRID_RADIO.addRow(MM.LABEL_radioPropLabelPrefix + "|");
  176.   displayGridValues();
  177.   var newLabel = getUniqueLabel(MM.LABEL_radioPropLabelPrefix);
  178.   TF_RADIO_LABEL.value = newLabel;
  179.   updateGridRow();
  180.   TF_RADIO_LABEL.focus();
  181.   TF_RADIO_LABEL.select();
  182. }
  183.  
  184.  
  185.  
  186. function showDifferentLayer(whichOne){
  187.   if (whichOne == 'database'){
  188.      if (findAllRecordsetNames().length == 0){
  189.        alert (MM.MSG_NeedRecordsetForOption);
  190.        RADIO_GROUP_TYPE.setSelectedIndex(0);
  191.        return;
  192.      }
  193.      LAYER_MANUAL.visibility   = "hidden";
  194.      LAYER_DATABASE.visibility = "visible";
  195.    initDatabaseLayer();
  196.   } else {
  197.      LAYER_DATABASE.visibility = "hidden";
  198.      LAYER_MANUAL.visibility   = "visible";
  199.      initManualLayer();
  200.   }
  201. }
  202.  
  203.  
  204. function updateGridRow(){
  205.    GRID_RADIO.setRow(TF_RADIO_LABEL.value + "|" + TF_RADIO_VALUE.value);
  206. }
  207.  
  208. function displayGridValues(){
  209.    var currRow = GRID_RADIO.getRow();
  210.    var dividerIndex = currRow.indexOf("|");
  211.    TF_RADIO_LABEL.value = currRow.substring( 0,dividerIndex);
  212.    TF_RADIO_VALUE.value = currRow.substring(dividerIndex+1);
  213. }
  214.  
  215.  
  216. // function: displayDynamicDataDialog
  217. // description: pops up the dialog allowing the user to choose dynamic data
  218. function displayDynamicDataDialog(textFieldObj){
  219.   var serverModel = dw.getDocumentDOM().serverModel.getServerName();
  220.   var expression = dw.showDynamicDataDialog(textFieldObj.value);
  221.   
  222.    if (expression) {
  223.      if (serverModel == "Cold Fusion") {
  224.        expression = stripCFOutput(expression);
  225.      }
  226.      textFieldObj.value = expression;
  227.    }
  228. }
  229.  
  230. function updateColumns(){
  231.     colNames = findAllColumnNames(MENU_RECORDSET.getValue());
  232.     
  233.     if (colNames && colNames.length > 0) {
  234.       MENU_LABELS.setAll(colNames, colNames);
  235.       MENU_LABELS.setIndex(0);
  236.     } else {
  237.       MENU_LABELS.setAll(new Array(MM.LABEL_NoColumns), EMPTY_LIST);
  238.     }
  239.   
  240.     if (colNames && colNames.length > 0) {
  241.       MENU_VALUES.setAll(colNames, colNames);
  242.       MENU_VALUES.setIndex(0);
  243.     } else {
  244.       MENU_VALUES.setAll(new Array(MM.LABEL_NoColumns), EMPTY_LIST);
  245.     }
  246. }
  247.  
  248.  
  249.  
  250. function getUniqueLabel(baseName) {
  251.   var label, i, num=1, isUnique,rowText,menuLabel;
  252.  
  253.   for (isUnique=false; !isUnique; num++) {
  254.     label = baseName + num;
  255.     isUnique = true;
  256.     for (i=0; i<GRID_RADIO.list.length && isUnique; i++) {
  257.       rowText = GRID_RADIO.list[i];
  258.       menuLabel = rowText.substring(0,rowText.indexOf("|"));
  259.       if (menuLabel == label) isUnique=false;
  260.     }
  261.   }
  262.   return label;
  263. }