distinguish annotation interfaces in Ctrl-hover popup (IDEADEV-40633)
[fedora-idea.git] / java / idea-ui / src / com / intellij / openapi / roots / ui / configuration / packaging / LibraryNodeBase.java
blob6ae32c1d3771f1785ca5e013f0ab2ba7da2f338b
1 package com.intellij.openapi.roots.ui.configuration.packaging;
3 import com.intellij.openapi.deployment.ContainerElement;
4 import com.intellij.openapi.deployment.LibraryLink;
5 import com.intellij.openapi.project.ProjectBundle;
6 import com.intellij.openapi.roots.ui.configuration.projectRoot.ModuleStructureConfigurable;
7 import com.intellij.openapi.roots.ui.configuration.ModulesConfigurator;
8 import com.intellij.openapi.roots.ModuleRootModel;
9 import com.intellij.openapi.roots.LibraryOrderEntry;
10 import com.intellij.openapi.roots.impl.OrderEntryUtil;
11 import com.intellij.openapi.diagnostic.Logger;
12 import com.intellij.openapi.module.Module;
13 import org.jetbrains.annotations.NotNull;
14 import org.jetbrains.annotations.Nullable;
16 /**
17 * @author nik
19 abstract class LibraryNodeBase extends PackagingTreeNode {
20 private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.roots.ui.configuration.packaging.LibraryNodeBase");
21 protected final LibraryLink myLibraryLink;
23 public LibraryNodeBase(final @Nullable PackagingArtifact owner, @NotNull LibraryLink libraryLink) {
24 super(owner);
25 myLibraryLink = libraryLink;
28 @Override
29 public ContainerElement getContainerElement() {
30 return myLibraryLink;
33 public boolean canNavigate() {
34 return true;
37 @Override
38 public String getTooltipText() {
39 if (belongsToIncludedArtifact()) {
40 PackagingArtifact owner = getOwner();
41 LOG.assertTrue(owner != null);
42 return ProjectBundle.message("node.text.packaging.included.from.0", owner.getDisplayName());
44 return null;
47 public void navigate(final ModuleStructureConfigurable configurable) {
48 Module parentModule = myLibraryLink.getParentModule();
50 final PackagingArtifact owner = getOwner();
51 if (owner != null) {
52 owner.navigate(configurable, myLibraryLink);
54 else {
55 ModulesConfigurator modulesConfigurator = configurable.getContext().getModulesConfigurator();
56 ModuleRootModel rootModel = modulesConfigurator.getRootModel(parentModule);
57 LibraryOrderEntry orderEntry = OrderEntryUtil.findLibraryOrderEntry(rootModel, myLibraryLink.getLibrary(), true, modulesConfigurator);
58 configurable.selectOrderEntry(orderEntry != null ? orderEntry.getOwnerModule() : parentModule, orderEntry);
62 public Object getSourceObject() {
63 return myLibraryLink.getLibrary();
66 public LibraryLink getLibraryLink() {
67 return myLibraryLink;