// Rename (refactor) an object name by changing all // references found in script. // Recursive function for finding scripts function findScripts(vNode, vScripts) { if (vNode.className === "script") { vScripts.push(vNode); } for (var i = 0; i < vNode.nodes.length; i++) { findScripts(vNode.nodes.item(i), vScripts); } } // Get the list of selected nodes var selection = designer.getSelection(); // Clear any remnant sourceName designer.setDialogString("sourceName", ""); // Set the sourceName according to the first // selected item if (selection.length > 0) { designer.setDialogString("sourceName", selection.item(0).name); } // Gather a list of all the scripts var vScripts = []; findScripts(xfa.template, vScripts); // Populate a series of variables with the script // contents var vScriptNames = []; var i = 0; for (i = 0; i < vScripts.length; i++) { designer.setDialogString(vScripts[i].somExpression, vScripts[i].value); vScriptNames.push(vScripts[i].somExpression); } // Create a variable with a list of script names that the // flash dialog can access designer.setDialogString("ScriptNames", vScriptNames.join(",")); // Launch the dialog if (designer.showFlexDialog("Refactor.swf", 850, 455) == "ok") { if (selection.length > 0) { // Rename the field from the targetName variable selection.item(0).name = designer.getDialogString("targetName"); } // get a list of all the changed scripts var sDirtyScriptNames = designer.getDialogString("DirtyScriptNames"); if (sDirtyScriptNames.length > 0) { var aDirtyScriptNames = sDirtyScriptNames.split(","); for (i = 0; i < aDirtyScriptNames.length; i++) { var sScriptSOM = aDirtyScriptNames[i]; var sScript = designer.getDialogString(sScriptSOM); xfa.resolveNode(sScriptSOM).value = sScript; } } }