diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/LayoutTreeComponent.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/LayoutTreeComponent.java index 2e6930ece00d..e7941f3069f9 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/LayoutTreeComponent.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/LayoutTreeComponent.java @@ -47,6 +47,7 @@ import com.intellij.ui.treeStructure.SimpleTreeStructure; import com.intellij.ui.treeStructure.WeightBasedComparator; import com.intellij.util.ArrayUtil; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.io.URLUtil; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.tree.TreeUtil; import org.jetbrains.annotations.NonNls; @@ -540,9 +541,15 @@ public class LayoutTreeComponent implements DnDTarget, Disposable { for (PackagingSourceItem item : items) { final String path = artifactType.getDefaultPathFor(item); if (path != null) { - final CompositePackagingElement directory = PackagingElementFactory.getInstance().getOrCreateDirectory(rootElement, path); + final CompositePackagingElement parent; + if (path.endsWith(URLUtil.JAR_SEPARATOR)) { + parent = PackagingElementFactory.getInstance().getOrCreateArchive(rootElement, StringUtil.trimEnd(path, URLUtil.JAR_SEPARATOR)); + } + else { + parent = PackagingElementFactory.getInstance().getOrCreateDirectory(rootElement, path); + } final List> elements = item.createElements(myContext); - toSelect.addAll(directory.addOrFindChildren(elements)); + toSelect.addAll(parent.addOrFindChildren(elements)); } } }