@@ -13,6 +13,54 @@ import { resourceRoots } from "../views/packageRootNode";
13
13
import { checkJavaQualifiedName } from "./utility" ;
14
14
import { sendError , setUserError } from "vscode-extension-telemetry-wrapper" ;
15
15
16
+ export async function newResource ( node : DataNode ) : Promise < void > {
17
+ const availableTypes : string [ ] = [ ] ;
18
+ // add options for Java nodes
19
+ if ( node . nodeData . kind === NodeKind . Project ||
20
+ ( node . nodeData . kind === NodeKind . PackageRoot && ! resourceRoots . includes ( node . nodeData . name ) ) ||
21
+ node . nodeData . kind === NodeKind . Package ||
22
+ node . nodeData . kind === NodeKind . PrimaryType ||
23
+ node . nodeData . kind === NodeKind . CompilationUnit ) {
24
+ availableTypes . push ( "$(symbol-class) Java Class" , "$(symbol-namespace) Package" ) ;
25
+ }
26
+
27
+ // add new file option
28
+ availableTypes . push ( "$(file) File" ) ;
29
+
30
+ // add new folder option
31
+ if ( node . nodeData . kind === NodeKind . Project ||
32
+ ( node . nodeData . kind === NodeKind . PackageRoot && resourceRoots . includes ( node . nodeData . name ) ) ||
33
+ node . nodeData . kind === NodeKind . Folder ||
34
+ node . nodeData . kind === NodeKind . File ) {
35
+ availableTypes . push ( "$(folder) Folder" ) ;
36
+ }
37
+
38
+ const type = await window . showQuickPick (
39
+ availableTypes ,
40
+ {
41
+ placeHolder : "Select resource type to create." ,
42
+ ignoreFocusOut : true ,
43
+ }
44
+ ) ;
45
+
46
+ switch ( type ) {
47
+ case "$(symbol-class) Java Class" :
48
+ await newJavaClass ( node ) ;
49
+ break ;
50
+ case "$(symbol-namespace) Package" :
51
+ await newPackage ( node ) ;
52
+ break ;
53
+ case "$(file) File" :
54
+ await newFile ( node ) ;
55
+ break ;
56
+ case "$(folder) Folder" :
57
+ await newFolder ( node ) ;
58
+ break ;
59
+ default :
60
+ break ;
61
+ }
62
+ }
63
+
16
64
// TODO: separate to two function to handle creation from menu bar and explorer.
17
65
export async function newJavaClass ( node ?: DataNode ) : Promise < void > {
18
66
let packageFsPath : string | undefined ;
0 commit comments