home *** CD-ROM | disk | FTP | other *** search
-
- // Copyright 2000 Macromedia, Inc. All rights reserved.
-
- //************************GLOBALS**************************
-
- var EMPTY_LIST = new Array();
- var GRID_RADIO;
- var LAYER_MANUAL;
- var LAYER_DATABASE;
- var TF_RADIO_LABEL;
- var TF_RADIO_VALUE;
- var TF_DEFAULT_MANUAL;
- var MENU_RECORDSET;
- var MENU_LABELS;
- var MENU_VALUES;
- var TF_DEFAULT_DATABASE;
- var RADIO_GROUP_TYPE;
-
-
- //********************API FUNCTIONS**************************
-
- function commandButtons(){
-
- return new Array(BTN_OK, "okClicked()",
- BTN_Cancel,"cancelClicked()");
- }
-
- //******************LOCAL FUNCTIONS**************************
-
- function okClicked(){
- if (LAYER_MANUAL.visibility == "visible"){ // static radio object created
- var allRows = GRID_RADIO.list, nRows = allRows.length, currRowText, dividerInd;
- var labelArr = new Array(),valArr = new Array();
-
- for (i=0;i<nRows;i++){
- currRowText = allRows[i];
- dividerInd = currRowText.indexOf("|");
- labelArr.push(currRowText.substring(0,dividerInd));
- valArr.push(currRowText.substring(dividerInd +1));
- }
-
- MM.commandReturnValue = new eoRadioGroup(labelArr,valArr,TF_DEFAULT_MANUAL.value);
- } else { // dynamic radio group created
-
- dynRadGrObj = new eoDynamicRadioGroup();
- dynRadGrObj.recordset = MENU_RECORDSET.getValue();
- dynRadGrObj.labelCol = MENU_LABELS.getValue();
- dynRadGrObj.valCol = MENU_VALUES.getValue();
- dynRadGrObj.defaultChecked = TF_DEFAULT_DATABASE.value;
-
- MM.commandReturnValue = dynRadGrObj;
- }
- clearUI();
- window.close();
- }
-
- function cancelClicked(){
- MM.commandReturnValue = "";
- clearUI();
- window.close();
- }
-
- function clearUI(){
- GRID_RADIO.setAllRows(new Array(),new Array());
- TF_RADIO_LABEL.value = "";
- TF_RADIO_VALUE.value = "";
- TF_DEFAULT_MANUAL.value = "";
- TF_DEFAULT_DATABASE.value = "";
-
- LAYER_MANUAL.visibility="hidden";
- LAYER_DATABASE.visibility="hidden";
- MENU_RECORDSET.setIndex(0);
- MENU_LABELS.setIndex(0);
- MENU_VALUES.setIndex(0);
- }
-
-
- function initializeUI(){
-
- LAYER_MANUAL = document.layers["manualLayer"];
- LAYER_DATABASE = document.layers["databaseLayer"];
-
- RADIO_GROUP_TYPE = new RadioGroup("Populate");
- GRID_RADIO = new GridWithNavControls("MenuGrid",LAYER_MANUAL,true);
- GRID_RADIO.setColumnNames(MM.LABEL_RadioGrid);
-
- TF_RADIO_LABEL = findObject("MenuText",LAYER_MANUAL);
- TF_RADIO_VALUE = findObject("MenuValue",LAYER_MANUAL);
- TF_DEFAULT_MANUAL = findObject("DefaultValueManual",LAYER_MANUAL);
- MENU_RECORDSET = new ListControl("Recordset",LAYER_DATABASE);
- MENU_LABELS = new ListControl("GetMenuText",LAYER_DATABASE);
- MENU_VALUES = new ListControl("GetMenuValues",LAYER_DATABASE);
- TF_DEFAULT_DATABASE = findObject("DefaultValueDatabase",LAYER_DATABASE);
-
- var radioGroupInfoObj = MM.commandArgument;
-
- if (radioGroupInfoObj.type == "radioGroup"){ // if a static radio group
- initManualLayer();
- showDifferentLayer('manual');
- RADIO_GROUP_TYPE.setSelectedIndex(0);
- if (radioGroupInfoObj.labelArr != "" || radioGroupInfoObj.defaultChecked != ""){ // if there are prior values
- var nOptions = radioGroupInfoObj.labelArr.length,i;
- var gridDisplayArr = new Array();
- var labelArr = radioGroupInfoObj.labelArr;
- var valArr = radioGroupInfoObj.valArr;
- for (i=0;i<nOptions;i++){
- gridDisplayArr[i] = labelArr[i] + "|";
- if (valArr[i])
- gridDisplayArr[i] += valArr[i];
- }
-
- if (gridDisplayArr.length && gridDisplayArr.length > 0) {
- GRID_RADIO.setAllRows(gridDisplayArr);
- GRID_RADIO.setRowIndex(0);
- displayGridValues();
- }
-
- TF_RADIO_LABEL.focus();
- if (TF_RADIO_LABEL.value != "")
- TF_RADIO_LABEL.select();
- TF_DEFAULT_MANUAL.value = radioGroupInfoObj.defaultChecked;
- }
- } else { // if a dynamic radio group
- RADIO_GROUP_TYPE.setSelectedIndex(1);
- showDifferentLayer('database');
- // next line is work-around for bug that buttons disappeared
- document.layers["topLayer"].visibility = "visible";
- initDatabaseLayer();
- if (radioGroupInfoObj.recordset){ // if there are prior values
- MENU_RECORDSET.pickValue(radioGroupInfoObj.recordset);
- updateColumns();
- MENU_LABELS.pickValue(radioGroupInfoObj.labelCol);
- MENU_VALUES.pickValue(radioGroupInfoObj.valCol);
- TF_DEFAULT_DATABASE.value = radioGroupInfoObj.defaultChecked;
- }
-
- }
-
-
- }
-
- function initDatabaseLayer(){
- var rsNames = findAllRecordsetNames(), colNames;
- MENU_RECORDSET.setAll(rsNames,rsNames);
- updateColumns();
- TF_DEFAULT_DATABASE.value = "";
- if (TF_DEFAULT_MANUAL.value != ""){
- TF_DEFAULT_DATABASE.value = TF_DEFAULT_MANUAL.value;
- }
- }
-
-
- function initManualLayer(){
- if (GRID_RADIO.list.length == 0){
- TF_DEFAULT_MANUAL.value = "";
- addNewRow();
- GRID_RADIO.setRowIndex(0);
- } else {
- if (GRID_RADIO.list.length == 1 && GRID_RADIO.getRow() == "|"){
- GRID_RADIO.setRow(" |");
- GRID_RADIO.setRowIndex(0);
- }
- TF_RADIO_LABEL.focus();
- TF_RADIO_LABEL.select();
- }
-
- if (TF_DEFAULT_DATABASE.value !=""){
- TF_DEFAULT_MANUAL.value = TF_DEFAULT_DATABASE.value;
- }
- }
-
-
-
- function addNewRow(){
- GRID_RADIO.addRow(MM.LABEL_radioPropLabelPrefix + "|");
- displayGridValues();
- var newLabel = getUniqueLabel(MM.LABEL_radioPropLabelPrefix);
- TF_RADIO_LABEL.value = newLabel;
- updateGridRow();
- TF_RADIO_LABEL.focus();
- TF_RADIO_LABEL.select();
- }
-
-
-
- function showDifferentLayer(whichOne){
- if (whichOne == 'database'){
- if (findAllRecordsetNames().length == 0){
- alert (MM.MSG_NeedRecordsetForOption);
- RADIO_GROUP_TYPE.setSelectedIndex(0);
- return;
- }
- LAYER_MANUAL.visibility = "hidden";
- LAYER_DATABASE.visibility = "visible";
- initDatabaseLayer();
- } else {
- LAYER_DATABASE.visibility = "hidden";
- LAYER_MANUAL.visibility = "visible";
- initManualLayer();
- }
- }
-
-
- function updateGridRow(){
- GRID_RADIO.setRow(TF_RADIO_LABEL.value + "|" + TF_RADIO_VALUE.value);
- }
-
- function displayGridValues(){
- var currRow = GRID_RADIO.getRow();
- var dividerIndex = currRow.indexOf("|");
- TF_RADIO_LABEL.value = currRow.substring( 0,dividerIndex);
- TF_RADIO_VALUE.value = currRow.substring(dividerIndex+1);
- }
-
-
- // function: displayDynamicDataDialog
- // description: pops up the dialog allowing the user to choose dynamic data
- function displayDynamicDataDialog(textFieldObj){
- var serverModel = dw.getDocumentDOM().serverModel.getServerName();
- var expression = dw.showDynamicDataDialog(textFieldObj.value);
-
- if (expression) {
- if (serverModel == "Cold Fusion") {
- expression = stripCFOutput(expression);
- }
- textFieldObj.value = expression;
- }
- }
-
- function updateColumns(){
- colNames = findAllColumnNames(MENU_RECORDSET.getValue());
-
- if (colNames && colNames.length > 0) {
- MENU_LABELS.setAll(colNames, colNames);
- MENU_LABELS.setIndex(0);
- } else {
- MENU_LABELS.setAll(new Array(MM.LABEL_NoColumns), EMPTY_LIST);
- }
-
- if (colNames && colNames.length > 0) {
- MENU_VALUES.setAll(colNames, colNames);
- MENU_VALUES.setIndex(0);
- } else {
- MENU_VALUES.setAll(new Array(MM.LABEL_NoColumns), EMPTY_LIST);
- }
- }
-
-
-
- function getUniqueLabel(baseName) {
- var label, i, num=1, isUnique,rowText,menuLabel;
-
- for (isUnique=false; !isUnique; num++) {
- label = baseName + num;
- isUnique = true;
- for (i=0; i<GRID_RADIO.list.length && isUnique; i++) {
- rowText = GRID_RADIO.list[i];
- menuLabel = rowText.substring(0,rowText.indexOf("|"));
- if (menuLabel == label) isUnique=false;
- }
- }
- return label;
- }