Appearance
如何为视图添加上下文菜单?
文件感知型上下文菜单
如果要为视图添加上下文菜单,可以在Workspace上触发file-menu
事件。
触发file-menu
意味着所有监听该事件的插件都有机会在菜单通过.showAtPosition()
显示前添加MenuItem
。默认情况下,这会添加一些文件相关选项,如"复制链接"、"在文件管理器中显示"等。其他插件也可以监听此事件并添加自己的条目。
示例代码
ts
const fileMenu = new Menu(); // 创建空文件菜单
// 钩子函数让插件可以添加"文件感知"菜单项
this.app.workspace.trigger(
"file-menu",
fileMenu,
file,
"my-context-menu",
null
);
fileMenu.showAtPosition({ x: event.pageX, y: event.pageY }); // 实际打开菜单
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
完全自定义的上下文菜单
如果不想在上下文菜单中包含这些默认条目,可以不触发file-menu
事件,而是直接添加自己的MenuItem
。
示例代码
ts
const myMenu = new Menu();
myMenu.addItem((item) =>
item
.setTitle("我的自定义操作")
.setIcon("trash")
.onClick(() => {
myCustomFunction();
})
);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9