simplify GTDUCollector a bit more
[idea/community.git] / java / idea-ui / src / com / intellij / ide / util / importProject / ModulesLayoutPanel.java
1 // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.ide.util.importProject;
3
4 import com.intellij.CommonBundle;
5 import com.intellij.ide.JavaUiBundle;
6 import com.intellij.java.JavaBundle;
7 import org.jetbrains.annotations.Nls;
8 import org.jetbrains.annotations.Nullable;
9
10 import java.io.File;
11 import java.util.ArrayList;
12 import java.util.Collection;
13 import java.util.Collections;
14 import java.util.List;
15
16 /**
17  * @author Eugene Zhuravlev
18  */
19 public class ModulesLayoutPanel extends ProjectLayoutPanel<ModuleDescriptor>{
20   private final LibraryFilter myLibrariesFilter;
21
22   public interface LibraryFilter {
23     boolean isLibraryChosen(LibraryDescriptor libDescriptor);
24   }
25   public ModulesLayoutPanel(ModuleInsight insight, final LibraryFilter libFilter) {
26     super(insight);
27     myLibrariesFilter = libFilter;
28   }
29
30   @Override
31   protected String getElementName(final ModuleDescriptor entry) {
32     return entry.getName();
33   }
34
35   @Override
36   protected void setElementName(final ModuleDescriptor entry, final String name) {
37     entry.setName(name);
38   }
39
40   @Override
41   protected List<ModuleDescriptor> getEntries() {
42     final List<ModuleDescriptor> modules = getInsight().getSuggestedModules();
43     return modules != null? modules : Collections.emptyList();
44   }
45
46   @Override
47   protected Collection getDependencies(final ModuleDescriptor entry) {
48     final List<Object> deps = new ArrayList<>(entry.getDependencies());
49     final Collection<LibraryDescriptor> libDependencies = getInsight().getLibraryDependencies(entry);
50     for (LibraryDescriptor libDependency : libDependencies) {
51       if (myLibrariesFilter.isLibraryChosen(libDependency)) {
52         deps.add(libDependency);
53       }
54     }
55     return deps;
56   }
57
58   @Override
59   @Nullable
60   protected ModuleDescriptor merge(final List<? extends ModuleDescriptor> entries) {
61     final ModuleInsight insight = getInsight();
62     ModuleDescriptor mainDescr = null;
63     for (ModuleDescriptor entry : entries) {
64       if (mainDescr == null) {
65         mainDescr = entry;
66       }
67       else {
68         insight.merge(mainDescr, entry);
69       }
70     }
71     return mainDescr;
72   }
73
74   @Override
75   protected ModuleDescriptor split(final ModuleDescriptor entry, final String newEntryName, final Collection<? extends File> extractedData) {
76     return getInsight().splitModule(entry, newEntryName, extractedData);
77   }
78
79   @Override
80   protected Collection<File> getContent(final ModuleDescriptor entry) {
81     return entry.getContentRoots();
82   }
83
84   @Override
85   protected String getEntriesChooserTitle() {
86     return JavaUiBundle.message("title.modules");
87   }
88
89   @Override
90   protected @Nls(capitalization = Nls.Capitalization.Title) String getDependenciesTitle() {
91     return JavaUiBundle.message("title.module.dependencies");
92   }
93
94   @Override
95   protected String getElementTypeName() {
96     return JavaBundle.message("java.terms.module");
97   }
98
99   @Override
100   protected @Nls(capitalization = Nls.Capitalization.Title) String getElementTypeNameTitle() {
101     return CommonBundle.message("label.module");
102   }
103
104   @Override
105   protected @Nls(capitalization = Nls.Capitalization.Title) String getElementTypeNamePlural() {
106     return JavaUiBundle.message("title.modules");
107   }
108
109   @Override
110   protected String getSplitDialogChooseFilesPrompt() {
111     return JavaUiBundle.message("label.select.content.roots.to.extract.to.new.module");
112   }
113
114   @Override
115   protected String getNameAlreadyUsedMessage(final String name) {
116     return JavaUiBundle.message("error.module.with.name.already.exists", name);
117   }
118
119   @Override
120   protected String getStepDescriptionText() {
121     return JavaUiBundle.message("module.structure.step.description");
122   }
123 }