How do I add an action to a project node’s popup menu of my own project type?
-
To add the Copy/Delete/Move/Rename action to your project’s node, you should:
-
Implement the corresponding interface such as
org.netbeans.spi.project.CopyOperationImplementation
. -
Implement
org.netbeans.spi.project.ActionProvider
:
-
public final class AddActionActions implements ActionProvider { private final AddActionProject project; //suppose this is your project public AddActionActions(AddActionProject project) { this.project = project; } public String[] getSupportedActions() { return new String[] { ActionProvider.COMMAND_COPY }; } public boolean isActionEnabled(String command, Lookup context) { if (command.equals(ActionProvider.COMMAND_COPY)) { return true; } else { throw new IllegalArgumentException(command); } } public void invokeAction(String command, Lookup context) { if (command.equalsIgnoreCase(ActionProvider.COMMAND_COPY)){ DefaultProjectOperations.performDefaultCopyOperation(project); } } }
-
1. Add these implementations to your project’s lookup:
lookup = Lookups.fixed( // ... as before new AddActionOperation(this), new AddActionActions(this), );
-
1. Register the actions into the project node’s context menu:
public @Override Action[] getActions(boolean context) { Action[[ | ]] nodeActions = new Action[2]; nodeActions[0] = CommonProjectActions.copyProjectAction(); nodeActions[1] = CommonProjectActions.closeProjectAction(); return nodeActions; }
-
To add the other actions specified in the Project API such as
closeProjectAction
, just add it to the list of actions of your node. -
To add an action you created yourself, just add it to the list of actions of your node.
See also: Common Project Actions