Hi, I've got a javascript function that draws a dialog. I'd like to have it return the value the user specifies. The problem is, the dialog is closed when a user clicks on of two buttons, which have onClick events assigned to them. The only way I know to grab these events is by assigning functions to them, which means that a return causes the assigned function to return, and not my inputDialog function. I'm sure I'm just doing this in a stupid way.
In case you're wondering, this script is using Adobe's ExtendScript API for extending After Effects.
Thanks in advance! Here's the code:
function inputDialog (queryString, title){
// Create a window of type dialog.
var dia = new Window("dialog", title, [100,100,330,200]); // bounds = [left, top, right, bottom]
this.windowRef = dia;
// Add the components, a label, two buttons and input
dia.label = dia.add("statictext", [20, 10, 210, 30]);
dia.label.text = queryString;
dia.input = dia.add("edittext", [20, 30, 210, 50]);
dia.input.textselection = "New Selection";
dia.input.active = true;
dia.okBtn = dia.add("button", [20,65,105,85], "OK");
dia.cancelBtn = dia.add("button", [120, 65, 210, 85], "Cancel");
// Register event listeners that define the button behavior
//user clicked OK
dia.okBtn.onClick = function() {
if(dia.input.text != "") { //check that the text input wasn't empty
var result = dia.input.text;
dia.close(); //close the window
if(debug) alert(result);
return result;
} else { //the text box is blank
alert("Please enter a value."); //don't close the window, ask the user to enter something
}
};
//user clicked Cancel
dia.cancelBtn.onClick = function() {
dia.close();
if(debug) alert("dialog cancelled");
return false;
};
// Display the window
dia.show();
}