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
;
19 public class ModuleProjectStructureElement
extends ProjectStructureElement
{
20 private Module myModule
;
22 public ModuleProjectStructureElement(@NotNull StructureConfigurableContext context
, @NotNull Module module
) {
27 public Module
getModule() {
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"));
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"));
50 problemsHolder
.registerError(ProjectBundle
.message("project.roots.library.problem.message", entry
.getPresentableName()));
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();
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();
77 usages
.add(new UsageInModuleClasspath(myContext
, this, new SdkProjectStructureElement(myContext
, jdk
)));
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
);
95 public int hashCode() {
96 return myModule
.hashCode();
100 public String
toString() {
101 return "module:" + myModule
.getName();
105 public boolean highlightIfUnused() {