Search in sources :

Example 1 with ArtifactEditorImpl

use of com.intellij.openapi.roots.ui.configuration.artifacts.ArtifactEditorImpl in project intellij-community by JetBrains.

the class PutSourceItemIntoParentAndLinkViaManifestAction method actionPerformed.

@Override
public void actionPerformed(AnActionEvent e) {
    final List<PackagingSourceItem> items = mySourceItemsTree.getSelectedItems();
    ParentElementsInfo parentsInfo = findParentAndGrandParent(myArtifactEditor.getArtifact());
    if (parentsInfo == null) {
        return;
    }
    final Artifact artifact = parentsInfo.getGrandparentArtifact();
    final ArtifactEditorContext context = myArtifactEditor.getContext();
    //todo[nik] improve
    final Runnable emptyRunnable = EmptyRunnable.getInstance();
    context.editLayout(artifact, emptyRunnable);
    context.editLayout(parentsInfo.getParentArtifact(), emptyRunnable);
    //find elements under modifiable root
    parentsInfo = findParentAndGrandParent(myArtifactEditor.getArtifact());
    if (parentsInfo == null) {
        return;
    }
    final CompositePackagingElement<?> grandParent = parentsInfo.getGrandparentElement();
    final List<String> classpath = new ArrayList<>();
    context.editLayout(artifact, () -> {
        for (PackagingSourceItem item : items) {
            final List<? extends PackagingElement<?>> elements = item.createElements(context);
            grandParent.addOrFindChildren(elements);
            classpath.addAll(ManifestFileUtil.getClasspathForElements(elements, context, artifact.getArtifactType()));
        }
    });
    final ArtifactEditor parentArtifactEditor = context.getOrCreateEditor(parentsInfo.getParentArtifact());
    parentArtifactEditor.addToClasspath(parentsInfo.getParentElement(), classpath);
    ((ArtifactEditorImpl) context.getOrCreateEditor(parentsInfo.getGrandparentArtifact())).rebuildTries();
}
Also used : PackagingSourceItem(com.intellij.packaging.ui.PackagingSourceItem) ArtifactEditor(com.intellij.packaging.ui.ArtifactEditor) ArrayList(java.util.ArrayList) Artifact(com.intellij.packaging.artifacts.Artifact) EmptyRunnable(com.intellij.openapi.util.EmptyRunnable) ArtifactEditorImpl(com.intellij.openapi.roots.ui.configuration.artifacts.ArtifactEditorImpl) ArtifactEditorContext(com.intellij.packaging.ui.ArtifactEditorContext)

Aggregations

ArtifactEditorImpl (com.intellij.openapi.roots.ui.configuration.artifacts.ArtifactEditorImpl)1 EmptyRunnable (com.intellij.openapi.util.EmptyRunnable)1 Artifact (com.intellij.packaging.artifacts.Artifact)1 ArtifactEditor (com.intellij.packaging.ui.ArtifactEditor)1 ArtifactEditorContext (com.intellij.packaging.ui.ArtifactEditorContext)1 PackagingSourceItem (com.intellij.packaging.ui.PackagingSourceItem)1 ArrayList (java.util.ArrayList)1