Skip to content

Commit b08f56f

Browse files
zhangtengjinwewoor
authored andcommitted
feat: define contextMenu command id
define contextMenu command id
1 parent ea609ea commit b08f56f

File tree

2 files changed

+60
-49
lines changed

2 files changed

+60
-49
lines changed

src/controller/explorer/folderTree.tsx

+20-42
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@ import { editorService, explorerService } from 'mo';
66
import { EditorController } from 'mo/controller/editor';
77
import { IMenuItem } from 'mo/components/menu';
88
import Modal from 'mo/components/dialog';
9-
import { IFolderInputEvent, TreeNodeModel } from 'mo/model';
9+
import {
10+
IFolderInputEvent, TreeNodeModel,
11+
baseContextMenu, rootFolderContextMenu, fileContextMenu,
12+
NEW_FILE_COMMAND_ID, NEW_FOLDER_COMMAND_ID, RENAME_COMMAND_ID,
13+
REMOVE_COMMAND_ID, DELETE_COMMAND_ID, OPEN_TO_SIDE_COMMAND_ID,
14+
ADD_ROOT_FOLDER_COMMAND_ID
15+
} from 'mo/model';
1016
const confirm = Modal.confirm;
1117

1218
export interface IFolderTreeController {
@@ -35,7 +41,7 @@ export class FolderTreeController
3541
this.initView();
3642
}
3743

38-
private initView() {}
44+
private initView() { }
3945

4046
public readonly onSelectFile = (file: ITreeNodeItem, isAuto?: boolean) => {
4147
const tabData = {
@@ -90,14 +96,14 @@ export class FolderTreeController
9096
const { id: nodeId, name } = node as any;
9197
console.log('onClickContextMenu => Item', item);
9298
switch (menuId) {
93-
case 'rename': {
99+
case RENAME_COMMAND_ID: {
94100
explorerService.rename(nodeId, () => {
95101
events?.setValue?.(name);
96102
events?.onFocus();
97103
});
98104
break;
99105
}
100-
case 'delete': {
106+
case DELETE_COMMAND_ID: {
101107
confirm({
102108
title: `Are you sure you want to delete '${name}' ?`,
103109
content: 'This action is irreversible!',
@@ -112,23 +118,23 @@ export class FolderTreeController
112118
});
113119
break;
114120
}
115-
case 'newFile': {
121+
case NEW_FILE_COMMAND_ID: {
116122
explorerService.newFile(nodeId, () => {
117123
events?.onFocus();
118124
});
119125
break;
120126
}
121-
case 'newFolder': {
127+
case NEW_FOLDER_COMMAND_ID: {
122128
explorerService.newFolder(nodeId, () => {
123129
events?.onFocus();
124130
});
125131
break;
126132
}
127-
case 'remove': {
133+
case REMOVE_COMMAND_ID: {
128134
explorerService.removeRootFolder(nodeId);
129135
break;
130136
}
131-
case 'addRootFolder': {
137+
case ADD_ROOT_FOLDER_COMMAND_ID: {
132138
explorerService.addRootFolder?.(
133139
new TreeNodeModel({
134140
name: `molecule_temp${Math.random()}`,
@@ -137,7 +143,7 @@ export class FolderTreeController
137143
);
138144
break;
139145
}
140-
case 'openTab': {
146+
case OPEN_TO_SIDE_COMMAND_ID: {
141147
console.log('OpenTab');
142148
break;
143149
// editorService.open();
@@ -147,48 +153,20 @@ export class FolderTreeController
147153

148154
public readonly filterContextMenu = (menus, node) => {
149155
let menu;
150-
const baseContextMenu = [
151-
{
152-
id: 'newFile',
153-
name: 'New File',
154-
},
155-
{
156-
id: 'newFolder',
157-
name: 'New Folder',
158-
},
159-
];
160-
161-
const rootFolderContextMenu = [
162-
{
163-
id: 'remove',
164-
name: 'Remove Folder',
165-
},
166-
];
167-
168-
const folderContextMenu = baseContextMenu.concat(menus);
169-
170-
const fileContextMenu = [
171-
{
172-
id: 'openToSide',
173-
name: 'Open to the side',
174-
},
175-
].concat(menus);
176-
177-
const rootFodlerContextMenu = baseContextMenu.concat(
178-
rootFolderContextMenu
179-
);
180156

181157
switch (node.fileType) {
182158
case FileTypes.file: {
183-
menu = fileContextMenu;
159+
menu = fileContextMenu.concat(menus);
184160
break;
185161
}
186162
case FileTypes.folder: {
187-
menu = folderContextMenu;
163+
menu = baseContextMenu.concat(menus);
188164
break;
189165
}
190166
case FileTypes.rootFolder: {
191-
menu = rootFodlerContextMenu;
167+
menu = baseContextMenu.concat(
168+
rootFolderContextMenu
169+
);;
192170
break;
193171
}
194172
default:

src/model/workbench/explorer.tsx

+40-7
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,16 @@ export interface IExplorer {
3030
folderTree?: IFolderTree;
3131
}
3232

33+
export const NEW_FILE_COMMAND_ID = 'explorer.newFile';
34+
export const NEW_FOLDER_COMMAND_ID = 'explorer.newFolder';
35+
export const RENAME_COMMAND_ID = 'explorer.rename';
36+
export const REMOVE_COMMAND_ID = 'explorer.remove';
37+
export const DELETE_COMMAND_ID = 'explorer.delete';
38+
export const OPEN_TO_SIDE_COMMAND_ID = 'explorer.openToSide';
39+
export const ADD_ROOT_FOLDER_COMMAND_ID = 'addRootFolder';
40+
export const FIND_IN_WORKSPACE_ID = 'filesExplorer.findInWorkspace';
41+
export const DOWNLOAD_COMMAND_ID = 'explorer.download';
42+
3343
const builtInHeaderToolbar: IActivityBarItem[] = [
3444
{
3545
id: 'explorer-more',
@@ -56,29 +66,52 @@ const builtInHeaderToolbar: IActivityBarItem[] = [
5666
},
5767
];
5868

59-
const commonContextMenu = [
69+
// TODO: name property extract, to adapt Localize
70+
export const commonContextMenu = [
6071
{
61-
id: 'rename',
72+
id: RENAME_COMMAND_ID,
6273
name: 'Rename',
6374
},
6475
{
65-
id: 'delete',
76+
id: DELETE_COMMAND_ID,
6677
name: 'Delete',
6778
},
6879
];
80+
export const baseContextMenu = [
81+
{
82+
id: NEW_FILE_COMMAND_ID,
83+
name: 'New File',
84+
},
85+
{
86+
id: NEW_FOLDER_COMMAND_ID,
87+
name: 'New Folder',
88+
},
89+
];
6990

91+
export const rootFolderContextMenu = [
92+
{
93+
id: RENAME_COMMAND_ID,
94+
name: 'Remove Folder',
95+
},
96+
];
97+
export const fileContextMenu = [
98+
{
99+
id: OPEN_TO_SIDE_COMMAND_ID,
100+
name: 'Open to the Side',
101+
},
102+
]
70103
// Sample folder panel area ContextMenu
71-
const folderPanelContextMenu = [
104+
export const folderPanelContextMenu = [
72105
{
73-
id: 'addRootFolder',
106+
id: ADD_ROOT_FOLDER_COMMAND_ID,
74107
name: 'Add Folder to Workspace...',
75108
},
76109
{
77-
id: 'find',
110+
id: FIND_IN_WORKSPACE_ID,
78111
name: 'Find in Workspace...',
79112
},
80113
{
81-
id: 'download',
114+
id: DOWNLOAD_COMMAND_ID,
82115
name: 'Download...',
83116
},
84117
];

0 commit comments

Comments
 (0)