1616
1717package com .tang .intellij .lua .project ;
1818
19- import com .intellij .ide .util .projectWizard .ModuleBuilder ;
20- import com .intellij .ide .util .projectWizard .ModuleWizardStep ;
21- import com .intellij .ide .util .projectWizard .SdkSettingsStep ;
22- import com .intellij .ide .util .projectWizard .SettingsStep ;
19+ import com .intellij .ide .util .projectWizard .*;
2320import com .intellij .openapi .module .ModuleType ;
2421import com .intellij .openapi .options .ConfigurationException ;
2522import com .intellij .openapi .projectRoots .Sdk ;
23+ import com .intellij .openapi .roots .ContentEntry ;
2624import com .intellij .openapi .roots .ModifiableRootModel ;
25+ import com .intellij .openapi .util .Pair ;
26+ import com .intellij .openapi .util .io .FileUtil ;
27+ import com .intellij .openapi .vfs .LocalFileSystem ;
28+ import com .intellij .openapi .vfs .VirtualFile ;
29+ import org .jetbrains .annotations .NonNls ;
2730import org .jetbrains .annotations .NotNull ;
2831
32+ import java .io .File ;
33+ import java .util .ArrayList ;
34+ import java .util .List ;
35+
2936/**
3037 * lua ModuleBuilder
3138 * Created by tangzx on 2016/12/24.
3239 */
33- public class LuaModuleBuilder extends ModuleBuilder {
40+ public class LuaModuleBuilder extends ModuleBuilder implements SourcePathsBuilder {
3441 private Sdk selectedSDK ;
42+ private List <Pair <String , String >> sourcePaths ;
3543
3644 @ Override
3745 public void setupRootModel (ModifiableRootModel rootModel ) throws ConfigurationException {
@@ -40,7 +48,22 @@ public void setupRootModel(ModifiableRootModel rootModel) throws ConfigurationEx
4048 else
4149 rootModel .inheritSdk ();
4250
43- doAddContentEntry (rootModel );
51+ ContentEntry contentEntry = doAddContentEntry (rootModel );
52+ if (contentEntry != null ) {
53+ final List <Pair <String ,String >> sourcePaths = getSourcePaths ();
54+
55+ if (sourcePaths != null ) {
56+ for (final Pair <String , String > sourcePath : sourcePaths ) {
57+ String first = sourcePath .first ;
58+ new File (first ).mkdirs ();
59+ final VirtualFile sourceRoot = LocalFileSystem .getInstance ()
60+ .refreshAndFindFileByPath (FileUtil .toSystemIndependentName (first ));
61+ if (sourceRoot != null ) {
62+ contentEntry .addSourceFolder (sourceRoot , false , sourcePath .second );
63+ }
64+ }
65+ }
66+ }
4467 }
4568
4669 @ Override
@@ -59,4 +82,25 @@ public void updateDataModel() {
5982 }
6083 };
6184 }
85+
86+ @ Override
87+ public List <Pair <String , String >> getSourcePaths () throws ConfigurationException {
88+ if (sourcePaths == null ) {
89+ sourcePaths = new ArrayList <>();
90+ @ NonNls final String path = getContentEntryPath () + File .separator + "src" ;
91+ new File (path ).mkdirs ();
92+ sourcePaths .add (Pair .create (path , "" ));
93+ }
94+ return sourcePaths ;
95+ }
96+
97+ @ Override
98+ public void setSourcePaths (List <Pair <String , String >> list ) {
99+ this .sourcePaths = list ;
100+ }
101+
102+ @ Override
103+ public void addSourcePath (Pair <String , String > pair ) {
104+ sourcePaths .add (pair );
105+ }
62106}
0 commit comments