# Context Menu
The context menu is displayed after right clicking on the viewer. It displays commands that may depends on the contexts and can be customized.
# Get the context menu
The context menu can be accessed on the $viewer
object:
$viewer.contextMenu;
# Interface
Property | Description |
---|---|
registerContextCommand(command: ContextMenuCommand): number | Add command for the openning context menu. Returns the command id. |
registerCommand(command: ContextMenuCommand): number | Add command on context menu, displayed if the predicate exists and returns true. Returns the command id. |
unregisterCommand(commandId: number): boolean | Remove the command corresponding to the given id. Returns true if a command was removed, false otherwise. |
preventDefault(): void; | Prevent registered commands to show. Usefull when only context commands are needed. |
groupPositions: Object | An object with select , visibility and color properties that represent the group positions of corresponding default commands. |
# Command Interface
Property | Description |
---|---|
label: string | The text displayed on the menu. |
picto: string | Usually a letter to show the associated shortcut. |
execute() | The function to execute when the command is clicked. |
predicate()? | An optional predicate function that is run when the context menu opens. The command is displayed if the function returns true . If the predicate is an async function, the command is displayed when the Promise returned by the function resolves. |
group?: number | The group the command belongs to. Default to 0. |
position?: number | The position where to display the command in its group. Default to 0. |
# Examples
This examples are plugins or plugin components.
# Command with predicate
Description: The following plugin register a command using the startupScript method. The command is displayed on the context menu only if at least one element is selected. Once clicked, the selected objects are logged.
const MyPlugin = {
name: "selection-log",
startupScript($viewer) {
const myCommand = {
label: "Log selection",
execute: () => console.log($viewer.state.selectedObjects),
predicate: () => $viewer.state.selectedObjects.length > 0,
};
$viewer.contextMenu.registerCommand(myCommand);
},
};
# Context command
Description: Right clicking on the button element clear default commands and add a custom command to the context menu. The command is called "Hello" and log "Hello World !" on the console.
{
methods: {
onContextMenu() {
this.$viewer.contextMenu.registerContextCommand({
label: "Hello",
execute: () => console.log("Hello World !"),
});
},
},
template: `
<div>
<button type="button" @click="onClick" @contextmenu="onContextMenu">Click me!</button>
</div>`,
}