| package org.jetbrains.android.compiler.artifact; |
| |
| import com.intellij.facet.pointers.FacetPointersManager; |
| import com.intellij.openapi.module.Module; |
| import com.intellij.openapi.roots.ui.configuration.artifacts.sourceItems.FacetBasedPackagingSourceItemsProvider; |
| import com.intellij.openapi.roots.ui.configuration.artifacts.sourceItems.ModuleSourceItemGroup; |
| import com.intellij.packaging.artifacts.Artifact; |
| import com.intellij.packaging.ui.ArtifactEditorContext; |
| import com.intellij.packaging.ui.PackagingSourceItem; |
| import org.jetbrains.android.facet.AndroidFacet; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| import java.util.Collection; |
| import java.util.Collections; |
| import java.util.HashSet; |
| import java.util.Set; |
| |
| /** |
| * @author Eugene.Kudelevsky |
| */ |
| public class AndroidSourceItemsProvider extends FacetBasedPackagingSourceItemsProvider<AndroidFacet, AndroidFinalPackageElement> { |
| public AndroidSourceItemsProvider() { |
| super(AndroidFacet.ID, AndroidFinalPackageElementType.getInstance()); |
| } |
| |
| @Override |
| protected AndroidFinalPackagePresentation createPresentation(AndroidFacet facet) { |
| return new AndroidFinalPackagePresentation(FacetPointersManager.getInstance(facet.getModule().getProject()).create(facet)); |
| } |
| |
| @Override |
| protected AndroidFinalPackageElement createElement(ArtifactEditorContext context, AndroidFacet facet) { |
| return new AndroidFinalPackageElement(context.getProject(), facet); |
| } |
| |
| @NotNull |
| @Override |
| public Collection<? extends PackagingSourceItem> getSourceItems(@NotNull ArtifactEditorContext editorContext, |
| @NotNull Artifact artifact, |
| @Nullable PackagingSourceItem parent) { |
| |
| if (parent instanceof ModuleSourceItemGroup && !AndroidArtifactUtil.containsAndroidPackage(editorContext, artifact)) { |
| final Module module = ((ModuleSourceItemGroup)parent).getModule(); |
| final Set<AndroidFacet> facets = |
| new HashSet<AndroidFacet>(editorContext.getFacetsProvider().getFacetsByType(module, AndroidFacet.ID)); |
| if (facets.size() > 0) { |
| return Collections.singletonList(new FacetBasedSourceItem<AndroidFacet>(this, facets.iterator().next())); |
| } |
| } |
| return Collections.emptyList(); |
| } |
| |
| @Override |
| protected AndroidFacet getFacet(AndroidFinalPackageElement element) { |
| return element.getFacet(); |
| } |
| } |