diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactProjectStructureElement.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactProjectStructureElement.java index 02cd94f77590..9adc9590653a 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactProjectStructureElement.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactProjectStructureElement.java @@ -24,6 +24,7 @@ import com.intellij.packaging.elements.CompositePackagingElement; import com.intellij.packaging.elements.PackagingElement; import com.intellij.packaging.impl.artifacts.ArtifactUtil; import com.intellij.packaging.impl.artifacts.PackagingElementProcessor; +import com.intellij.packaging.impl.elements.ArtifactPackagingElement; import com.intellij.packaging.impl.elements.LibraryPackagingElement; import com.intellij.packaging.impl.elements.ModuleOutputPackagingElement; import org.jetbrains.annotations.NotNull; @@ -39,10 +40,10 @@ public class ArtifactProjectStructureElement extends ProjectStructureElement { private final Artifact myOriginalArtifact; public ArtifactProjectStructureElement(StructureConfigurableContext context, - ArtifactsStructureConfigurableContext artifactsStructureContext, Artifact originalArtifact) { + ArtifactsStructureConfigurableContext artifactsStructureContext, Artifact artifact) { super(context); myArtifactsStructureContext = artifactsStructureContext; - myOriginalArtifact = originalArtifact; + myOriginalArtifact = artifactsStructureContext.getOriginalArtifact(artifact); } @Override @@ -70,6 +71,15 @@ public class ArtifactProjectStructureElement extends ProjectStructureElement { ArtifactProjectStructureElement.this, getPathFromRoot(parents, "/"), packagingElement)); } } + else if (packagingElement instanceof ArtifactPackagingElement) { + final Artifact usedArtifact = ((ArtifactPackagingElement)packagingElement).findArtifact(myArtifactsStructureContext); + if (usedArtifact != null) { + final ArtifactProjectStructureElement artifactElement = + new ArtifactProjectStructureElement(myContext, myArtifactsStructureContext, usedArtifact); + usages.add(new UsageInArtifact(myOriginalArtifact, myArtifactsStructureContext, artifactElement, + ArtifactProjectStructureElement.this, getPathFromRoot(parents, "/"), packagingElement)); + } + } return true; } }, myArtifactsStructureContext, false, artifact.getArtifactType()); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurableContext.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurableContext.java index 5dfe4c10a5ec..3096eb3b7b41 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurableContext.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurableContext.java @@ -39,4 +39,7 @@ public interface ArtifactsStructureConfigurableContext extends PackagingElementR void editLayout(@NotNull Artifact artifact, Runnable action); ArtifactEditor getOrCreateEditor(Artifact artifact); + + @NotNull + Artifact getOriginalArtifact(@NotNull Artifact artifact); } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurableContextImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurableContextImpl.java index 5f1a7344fc04..46c61d1d8a25 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurableContextImpl.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurableContextImpl.java @@ -63,7 +63,7 @@ class ArtifactsStructureConfigurableContextImpl implements ArtifactsStructureCon } @NotNull - private Artifact getOriginalArtifact(@NotNull Artifact artifact) { + public Artifact getOriginalArtifact(@NotNull Artifact artifact) { if (myModifiableModel != null) { return ((ArtifactModelImpl)myModifiableModel).getOriginalArtifact(artifact); } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/UsageInArtifact.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/UsageInArtifact.java index 69a16cababb6..41c8b68c4f83 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/UsageInArtifact.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/UsageInArtifact.java @@ -43,9 +43,12 @@ public class UsageInArtifact extends ProjectStructureElementUsage { @Override public void navigate() { final Artifact artifact = myContext.getArtifactModel().getArtifactByOriginal(myOriginalArtifact); - final ArtifactEditorEx artifactEditor = (ArtifactEditorEx)myContext.getOrCreateEditor(artifact); - artifactEditor.getLayoutTreeComponent().selectNode(myParentPath, myPackagingElement); - ProjectStructureConfigurable.getInstance(myContext.getProject()).select(myOriginalArtifact, true); + ProjectStructureConfigurable.getInstance(myContext.getProject()).select(myOriginalArtifact, true).doWhenDone(new Runnable() { + public void run() { + final ArtifactEditorEx artifactEditor = (ArtifactEditorEx)myContext.getOrCreateEditor(artifact); + artifactEditor.getLayoutTreeComponent().selectNode(myParentPath, myPackagingElement); + } + }); } @Override