IDEADEV-41116: exploded war artefact: add warning for dependent module
[fedora-idea.git] / java / idea-ui / src / com / intellij / openapi / roots / ui / configuration / projectRoot / daemon / ModuleProjectStructureElement.java
blob7eef60439e94ebd74e49120b1fb92b585afcda84
1 package com.intellij.openapi.roots.ui.configuration.projectRoot.daemon;
3 import com.intellij.openapi.module.ModifiableModuleModel;
4 import com.intellij.openapi.module.Module;
5 import com.intellij.openapi.project.ProjectBundle;
6 import com.intellij.openapi.projectRoots.Sdk;
7 import com.intellij.openapi.roots.*;
8 import com.intellij.openapi.roots.libraries.Library;
9 import com.intellij.openapi.roots.ui.configuration.ModuleEditor;
10 import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext;
11 import org.jetbrains.annotations.NotNull;
13 import java.util.ArrayList;
14 import java.util.List;
16 /**
17 * @author nik
19 public class ModuleProjectStructureElement extends ProjectStructureElement {
20 private Module myModule;
22 public ModuleProjectStructureElement(@NotNull StructureConfigurableContext context, @NotNull Module module) {
23 super(context);
24 myModule = module;
27 public Module getModule() {
28 return myModule;
31 @Override
32 public void check(ProjectStructureProblemsHolder problemsHolder) {
33 final ModifiableModuleModel moduleModel = myContext.getModulesConfigurator().getModuleModel();
34 final Module[] all = moduleModel.getModules();
35 for (Module each : all) {
36 if (each != myModule && myContext.getRealName(each).equals(myContext.getRealName(myModule))) {
37 problemsHolder.registerError(ProjectBundle.message("project.roots.module.duplicate.name.message"));
38 break;
42 final ModuleRootModel rootModel = myContext.getModulesConfigurator().getRootModel(myModule);
43 if (rootModel == null) return; //already disposed
44 final OrderEntry[] entries = rootModel.getOrderEntries();
45 for (OrderEntry entry : entries) {
46 if (!entry.isValid()){
47 if (entry instanceof JdkOrderEntry && ((JdkOrderEntry)entry).getJdkName() == null) {
48 problemsHolder.registerError(ProjectBundle.message("project.roots.module.jdk.problem.message"));
49 } else {
50 problemsHolder.registerError(ProjectBundle.message("project.roots.library.problem.message", entry.getPresentableName()));
56 @Override
57 public List<ProjectStructureElementUsage> getUsagesInElement() {
58 final List<ProjectStructureElementUsage> usages = new ArrayList<ProjectStructureElementUsage>();
59 final ModuleEditor moduleEditor = myContext.getModulesConfigurator().getModuleEditor(myModule);
60 if (moduleEditor != null) {
61 for (OrderEntry entry : moduleEditor.getOrderEntries()) {
62 if (entry instanceof ModuleOrderEntry) {
63 final Module module = ((ModuleOrderEntry)entry).getModule();
64 if (module != null) {
65 usages.add(new UsageInModuleClasspath(myContext, this, new ModuleProjectStructureElement(myContext, module)));
68 else if (entry instanceof LibraryOrderEntry) {
69 final Library library = ((LibraryOrderEntry)entry).getLibrary();
70 if (library != null) {
71 usages.add(new UsageInModuleClasspath(myContext, this, new LibraryProjectStructureElement(myContext, library)));
74 else if (entry instanceof JdkOrderEntry) {
75 final Sdk jdk = ((JdkOrderEntry)entry).getJdk();
76 if (jdk != null) {
77 usages.add(new UsageInModuleClasspath(myContext, this, new SdkProjectStructureElement(myContext, jdk)));
82 return usages;
85 @Override
86 public boolean equals(Object o) {
87 if (this == o) return true;
88 if (!(o instanceof ModuleProjectStructureElement)) return false;
90 return myModule.equals(((ModuleProjectStructureElement)o).myModule);
94 @Override
95 public int hashCode() {
96 return myModule.hashCode();
99 @Override
100 public String toString() {
101 return "module:" + myModule.getName();
104 @Override
105 public boolean highlightIfUnused() {
106 return false;