blob: 10d1d19a0109c14b3a69c9e2183bfbc829f5b892 [file] [log] [blame]
package org.jetbrains.android.compiler.artifact;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.packaging.elements.CompositePackagingElement;
import com.intellij.packaging.elements.PackagingElement;
import com.intellij.packaging.elements.PackagingElementType;
import com.intellij.packaging.ui.ArtifactEditorContext;
import icons.AndroidIcons;
import org.jetbrains.android.facet.AndroidFacet;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @author Eugene.Kudelevsky
*/
public class AndroidFinalPackageElementType extends PackagingElementType<AndroidFinalPackageElement> {
@NonNls public static final String TYPE_ID = "android-final-package";
protected AndroidFinalPackageElementType() {
super(TYPE_ID, "Android Final Package");
}
public static AndroidFinalPackageElementType getInstance() {
return getInstance(AndroidFinalPackageElementType.class);
}
@Override
public Icon getCreateElementIcon() {
return AndroidIcons.Android;
}
@Override
public boolean canCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact) {
return getAndroidApplicationFacets(context, context.getModulesProvider().getModules()).size() > 0 &&
!AndroidArtifactUtil.containsAndroidPackage(context, artifact);
}
@NotNull
private static List<AndroidFacet> getAndroidApplicationFacets(@NotNull ArtifactEditorContext context, @NotNull Module[] modules) {
final List<AndroidFacet> result = new ArrayList<AndroidFacet>();
for (Module module : modules) {
for (AndroidFacet facet : context.getFacetsProvider().getFacetsByType(module, AndroidFacet.ID)) {
if (!facet.isLibraryProject()) {
result.add(facet);
}
}
}
return result;
}
@NotNull
@Override
public List<? extends PackagingElement<?>> chooseAndCreate(@NotNull ArtifactEditorContext context,
@NotNull Artifact artifact,
@NotNull CompositePackagingElement<?> parent) {
final List<AndroidFacet> facets = getAndroidApplicationFacets(context, context.getModulesProvider().getModules());
final AndroidFacet facet = AndroidArtifactUtil.chooseAndroidApplicationModule(context.getProject(), facets);
if (facet == null) {
return Collections.emptyList();
}
return Collections.singletonList(new AndroidFinalPackageElement(context.getProject(), facet));
}
@NotNull
@Override
public AndroidFinalPackageElement createEmpty(@NotNull Project project) {
return new AndroidFinalPackageElement(project, null);
}
}