Adobe 65009333 Scripting Guide - Page 68

Working with script menu actions

Page 68 highlights

Menus Working with script menu actions 68 Working with script menu actions You can use scriptMenuAction to create a new menuAction whose behavior is implemented through the script registered to run when the onInvoke event is triggered. The following script shows how to create a scriptMenuAction and attach it to a menu item (for the complete script, see MakeScriptMenuAction). This script simply displays an alert when the menu item is selected. var mySampleScriptAction = app.scriptMenuActions.add("Display Message"); var myEventListener = mySampleScriptAction.eventListeners.add("onInvoke", function(){alert("This menu item was added by a script.");}); //If the submenu "Script Menu Action" does not already exist, create it. try{ var mySampleScriptMenu = app.menus.item("$ID/Main").submenus.item( "Script Menu Action"); mySampleScriptMenu.title; } catch (myError){ var mySampleScriptMenu = app.menus.item("$ID/Main").submenus.add ("Script Menu Action"); } var mySampleScriptMenuItem = mySampleScriptMenu.menuItems.add(mySampleScriptAction); To remove the menu, submenu, menuItem, and scriptMenuAction created by the above script, run the following script fragment (from the RemoveScriptMenuAction tutorial script): #targetengine "session" var mySampleScriptAction = app.scriptMenuActions.item("Display Message"); mySampleScriptAction.remove(); var mySampleScriptMenu = app.menus.item("$ID/Main").submenus.item ("Script Menu Action"); mySampleScriptMenu.remove(); You also can remove all scriptMenuAction, as shown in the following script fragment (from the RemoveAllScriptMenuActions tutorial script). This script also removes the menu listings of the scriptMenuAction, but it does not delete any menus or submenus you might have created. #targetengine "session" app.scriptMenuActions.everyItem().remove(); You can create a list of all current scriptMenuActions, as shown in the following script fragment (from the GetScriptMenuActions tutorial script): var myScriptMenuActionNames = app.scriptMenuActions.everyItem().name; //Open a new text file. var myTextFile = File.saveDialog("Save Script Menu Action Names As", undefined); //If the user clicked the Cancel button, the result is null. if(myTextFile != null){ //Open the file with write access. myTextFile.open("w"); for(var myCounter = 0; myCounter < myScriptMenuActionNames.length; myCounter++){ myTextFile.writeln(myScriptMenuActionNames[myCounter]); } myTextFile.close(); } scriptMenuAction also can run scripts during their beforeDisplay event, in which case they are executed before an internal request for the state of the scriptMenuAction (e.g., when the menu item is

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88

Menus
Working with script menu actions
68
Working with script menu actions
You can use
scriptMenuAction
to create a new
menuAction
whose behavior is implemented through the
script registered to run when the
onInvoke
event
is triggered.
The following script shows how to create a
scriptMenuAction
and attach it to a menu item (for the
complete script, see MakeScriptMenuAction). This script simply displays an alert when the menu item is
selected.
var mySampleScriptAction = app.scriptMenuActions.add("Display Message");
var myEventListener = mySampleScriptAction.eventListeners.add("onInvoke",
function(){alert("This menu item was added by a script.");});
//If the submenu "Script Menu Action" does not already exist, create it.
try{
var mySampleScriptMenu = app.menus.item("$ID/Main").submenus.item(
"Script Menu Action");
mySampleScriptMenu.title;
}
catch (myError){
var mySampleScriptMenu = app.menus.item("$ID/Main").submenus.add
("Script Menu Action");
}
var mySampleScriptMenuItem = mySampleScriptMenu.menuItems.add(mySampleScriptAction);
To remove the
menu
,
submenu
,
menuItem
, and
scriptMenuAction
created by the above script, run the
following script fragment (from the RemoveScriptMenuAction tutorial script):
#targetengine "session"
var mySampleScriptAction = app.scriptMenuActions.item("Display Message");
mySampleScriptAction.remove();
var mySampleScriptMenu = app.menus.item("$ID/Main").submenus.item
("Script Menu Action");
mySampleScriptMenu.remove();
You also can remove all
scriptMenuAction
, as shown in the following script fragment (from the
RemoveAllScriptMenuActions tutorial script). This script also removes the menu listings of the
scriptMenuAction
, but it does not delete any menus or submenus you might have created.
#targetengine "session"
app.scriptMenuActions.everyItem().remove();
You can create a list of all current
scriptMenuActions
, as shown in the following script fragment (from
the GetScriptMenuActions tutorial script):
var myScriptMenuActionNames = app.scriptMenuActions.everyItem().name;
//Open a new text file.
var myTextFile = File.saveDialog("Save Script Menu Action Names As", undefined);
//If the user clicked the Cancel button, the result is null.
if(myTextFile != null){
//Open the file with write access.
myTextFile.open("w");
for(var myCounter = 0; myCounter < myScriptMenuActionNames.length; myCounter++){
myTextFile.writeln(myScriptMenuActionNames[myCounter]);
}
myTextFile.close();
}
scriptMenuAction
also can run scripts during their
beforeDisplay
event
, in which case they are
executed before an internal request for the state of the
scriptMenuAction
(e.g., when the menu item is