distinguish annotation interfaces in Ctrl-hover popup (IDEADEV-40633)
[fedora-idea.git] / java / idea-ui / src / com / intellij / openapi / roots / ui / configuration / packaging / ModuleOutputBaseNode.java
blob1ec00c76b9321c742f25c4f650642d4018742e0f
1 package com.intellij.openapi.roots.ui.configuration.packaging;
3 import com.intellij.openapi.deployment.ContainerElement;
4 import com.intellij.openapi.deployment.ModuleLink;
5 import com.intellij.openapi.diagnostic.Logger;
6 import com.intellij.openapi.module.Module;
7 import com.intellij.openapi.project.ProjectBundle;
8 import com.intellij.openapi.roots.ModuleOrderEntry;
9 import com.intellij.openapi.roots.ModuleRootModel;
10 import com.intellij.openapi.roots.impl.OrderEntryUtil;
11 import com.intellij.openapi.roots.ui.configuration.ModulesConfigurator;
12 import com.intellij.openapi.roots.ui.configuration.projectRoot.ModuleStructureConfigurable;
13 import org.jetbrains.annotations.Nullable;
15 /**
16 * @author nik
18 abstract class ModuleOutputBaseNode extends PackagingTreeNode {
19 private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.roots.ui.configuration.packaging.ModuleOutputBaseNode");
20 protected final ModuleLink myModuleLink;
22 public ModuleOutputBaseNode(final @Nullable PackagingArtifact owner, final ModuleLink moduleLink) {
23 super(owner);
24 myModuleLink = moduleLink;
27 public ModuleLink getModuleLink() {
28 return myModuleLink;
31 public boolean canNavigate() {
32 return true;
35 public void navigate(final ModuleStructureConfigurable configurable) {
36 Module parentModule = myModuleLink.getParentModule();
38 PackagingArtifact owner = getOwner();
39 if (owner != null) {
40 owner.navigate(configurable, myModuleLink);
42 else {
43 ModulesConfigurator modulesConfigurator = configurable.getContext().getModulesConfigurator();
44 ModuleRootModel rootModel = modulesConfigurator.getRootModel(parentModule);
45 ModuleOrderEntry orderEntry = OrderEntryUtil.findModuleOrderEntry(rootModel, myModuleLink.getModule(), true, modulesConfigurator);
46 configurable.selectOrderEntry(orderEntry != null ? orderEntry.getOwnerModule() : parentModule, orderEntry);
50 public double getWeight() {
51 return PackagingNodeWeights.MODULE;
54 @Override
55 public String getTooltipText() {
56 if (belongsToIncludedArtifact()) {
57 PackagingArtifact owner = getOwner();
58 LOG.assertTrue(owner != null);
59 return ProjectBundle.message("node.text.packaging.included.from.0", owner.getDisplayName());
61 return null;
64 public Object getSourceObject() {
65 return myModuleLink.getModule();
68 public ContainerElement getContainerElement() {
69 return myModuleLink;