diff --git a/src/main/java/com/jfrog/ide/idea/ui/LocalComponentsTree.java b/src/main/java/com/jfrog/ide/idea/ui/LocalComponentsTree.java index a2e9c1da..a5002e23 100644 --- a/src/main/java/com/jfrog/ide/idea/ui/LocalComponentsTree.java +++ b/src/main/java/com/jfrog/ide/idea/ui/LocalComponentsTree.java @@ -29,6 +29,7 @@ import java.io.IOException; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * @author yahavi @@ -113,12 +114,12 @@ private void handleContextMenu(ComponentsTree tree, MouseEvent e) { if (selectedPath == null) { return; } - Object selected = selectedPath.getLastPathComponent(); if (selected instanceof DependencyNode) { - - this.createNodePopupMenu((DependencyNode) selected); + DescriptorFileTreeNode descriptorFileTreeNode = (DescriptorFileTreeNode) selectedPath.getParentPath().getLastPathComponent(); + String descriptorPath = descriptorFileTreeNode.getSubtitle(); + this.createNodePopupMenu((DependencyNode) selected, descriptorPath); } else if (selected instanceof VulnerabilityNode) { createIgnoreRuleOption((VulnerabilityNode) selected, e); } else if (selected instanceof ApplicableIssueNode) { @@ -138,11 +139,20 @@ private void createIgnoreRuleOption(VulnerabilityNode selectedIssue, MouseEvent toolTip.setEnabled(true); } - private void createNodePopupMenu(DependencyNode selectedNode) { + private void createNodePopupMenu(DependencyNode selectedNode, String descriptorPath) { popupMenu.removeAll(); NavigationService navigationService = NavigationService.getInstance(project); Set navigationCandidates = navigationService.getNavigation(selectedNode); - addNodeNavigation(navigationCandidates); + //filtering candidates in case of multi module project + Set filteredCandidates = navigationCandidates.stream() + .filter(navigationTarget -> + descriptorPath.equals(navigationTarget.getElement() + .getContainingFile() + .getVirtualFile() + .getPath())) + .collect(Collectors.toSet()); + + addNodeNavigation(filteredCandidates); } private void addNodeNavigation(Set navigationCandidates) {