e5fbf845bd3ad8736e9865597ad57fdc28b42dc9
[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.ide.JavaUiBundle;
5 import org.jetbrains.annotations.Nullable;
6
7 import java.io.File;
8 import java.util.ArrayList;
9 import java.util.Collection;
10 import java.util.Collections;
11 import java.util.List;
12
13 /**
14  * @author Eugene Zhuravlev
15  */
16 public class ModulesLayoutPanel extends ProjectLayoutPanel<ModuleDescriptor>{
17   private final LibraryFilter myLibrariesFilter;
18
19   public interface LibraryFilter {
20     boolean isLibraryChosen(LibraryDescriptor libDescriptor);
21   }
22   public ModulesLayoutPanel(ModuleInsight insight, final LibraryFilter libFilter) {
23     super(insight);
24     myLibrariesFilter = libFilter;
25   }
26
27   @Override
28   protected String getElementName(final ModuleDescriptor entry) {
29     return entry.getName();
30   }
31
32   @Override
33   protected void setElementName(final ModuleDescriptor entry, final String name) {
34     entry.setName(name);
35   }
36
37   @Override
38   protected List<ModuleDescriptor> getEntries() {
39     final List<ModuleDescriptor> modules = getInsight().getSuggestedModules();
40     return modules != null? modules : Collections.emptyList();
41   }
42
43   @Override
44   protected Collection getDependencies(final ModuleDescriptor entry) {
45     final List<Object> deps = new ArrayList<>(entry.getDependencies());
46     final Collection<LibraryDescriptor> libDependencies = getInsight().getLibraryDependencies(entry);
47     for (LibraryDescriptor libDependency : libDependencies) {
48       if (myLibrariesFilter.isLibraryChosen(libDependency)) {
49         deps.add(libDependency);
50       }
51     }
52     return deps;
53   }
54
55   @Override
56   @Nullable
57   protected ModuleDescriptor merge(final List<? extends ModuleDescriptor> entries) {
58     final ModuleInsight insight = getInsight();
59     ModuleDescriptor mainDescr = null;
60     for (ModuleDescriptor entry : entries) {
61       if (mainDescr == null) {
62         mainDescr = entry;
63       }
64       else {
65         insight.merge(mainDescr, entry);
66       }
67     }
68     return mainDescr;
69   }
70
71   @Override
72   protected ModuleDescriptor split(final ModuleDescriptor entry, final String newEntryName, final Collection<? extends File> extractedData) {
73     return getInsight().splitModule(entry, newEntryName, extractedData);
74   }
75
76   @Override
77   protected Collection<File> getContent(final ModuleDescriptor entry) {
78     return entry.getContentRoots();
79   }
80
81   @Override
82   protected String getEntriesChooserTitle() {
83     return JavaUiBundle.message("title.modules");
84   }
85
86   @Override
87   protected String getDependenciesTitle() {
88     return JavaUiBundle.message("title.module.dependencies");
89   }
90
91   @Override
92   protected String getElementTypeName() {
93     return "module";
94   }
95
96   @Override
97   protected String getSplitDialogChooseFilesPrompt() {
98     return JavaUiBundle.message("label.select.content.roots.to.extract.to.new.module");
99   }
100
101   @Override
102   protected String getNameAlreadyUsedMessage(final String name) {
103     return JavaUiBundle.message("error.module.with.name.already.exists", name);
104   }
105
106   @Override
107   protected String getStepDescriptionText() {
108     return JavaUiBundle.message("module.structure.step.description");
109   }
110 }