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 / UsageInModuleClasspath.java
blob9a0ead0e66b5d55b89fe1401bacaf10be6cf3a87
1 package com.intellij.openapi.roots.ui.configuration.projectRoot.daemon;
3 import com.intellij.openapi.module.Module;
4 import com.intellij.openapi.roots.ModuleRootModel;
5 import com.intellij.openapi.roots.OrderEntry;
6 import com.intellij.openapi.roots.impl.OrderEntryUtil;
7 import com.intellij.openapi.roots.ui.configuration.ModulesConfigurator;
8 import com.intellij.openapi.roots.ui.configuration.projectRoot.ModuleStructureConfigurable;
9 import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext;
10 import org.jetbrains.annotations.NotNull;
12 import javax.swing.*;
14 /**
15 * @author nik
17 public class UsageInModuleClasspath extends ProjectStructureElementUsage {
18 private final StructureConfigurableContext myContext;
19 private final ModuleProjectStructureElement myContainingElement;
20 private ProjectStructureElement mySourceElement;
21 private Module myModule;
23 public UsageInModuleClasspath(@NotNull StructureConfigurableContext context, @NotNull ModuleProjectStructureElement containingElement, ProjectStructureElement sourceElement) {
24 myContext = context;
25 myContainingElement = containingElement;
26 myModule = containingElement.getModule();
27 mySourceElement = sourceElement;
31 @Override
32 public ProjectStructureElement getSourceElement() {
33 return mySourceElement;
36 @Override
37 public ProjectStructureElement getContainingElement() {
38 return myContainingElement;
41 @Override
42 public String getPresentableName() {
43 return myModule.getName();
46 public String getModuleName() {
47 return myModule.getName();
50 @Override
51 public void navigate() {
52 ModulesConfigurator modulesConfigurator = myContext.getModulesConfigurator();
54 ModuleRootModel rootModel = modulesConfigurator.getRootModel(myModule);
55 OrderEntry entry;
56 if (mySourceElement instanceof LibraryProjectStructureElement) {
57 entry = OrderEntryUtil.findLibraryOrderEntry(rootModel, ((LibraryProjectStructureElement)mySourceElement).getLibrary());
59 else if (mySourceElement instanceof ModuleProjectStructureElement) {
60 entry = OrderEntryUtil.findModuleOrderEntry(rootModel, ((ModuleProjectStructureElement)mySourceElement).getModule());
62 else if (mySourceElement instanceof SdkProjectStructureElement) {
63 entry = OrderEntryUtil.findJdkOrderEntry(rootModel, ((SdkProjectStructureElement)mySourceElement).getSdk());
65 else {
66 entry = null;
68 ModuleStructureConfigurable.getInstance(myContext.getProject()).selectOrderEntry(myModule, entry);
71 @Override
72 public int hashCode() {
73 return myModule.hashCode()*31 + mySourceElement.hashCode();
76 @Override
77 public boolean equals(Object obj) {
78 return obj instanceof UsageInModuleClasspath && myModule.equals(((UsageInModuleClasspath)obj).myModule)
79 && mySourceElement.equals(((UsageInModuleClasspath)obj).mySourceElement);
82 @Override
83 public Icon getIcon() {
84 return myModule.getModuleType().getNodeIcon(false);