e5c64b7569a87cff0647bc1507e8e9ced109c1c4
[idea/community.git] / java / compiler / openapi / src / com / intellij / packaging / artifacts / ArtifactType.java
1 // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.packaging.artifacts;
3
4 import com.intellij.openapi.extensions.ExtensionPointName;
5 import com.intellij.packaging.elements.CompositePackagingElement;
6 import com.intellij.packaging.elements.PackagingElement;
7 import com.intellij.packaging.elements.PackagingElementOutputKind;
8 import com.intellij.packaging.elements.PackagingElementResolvingContext;
9 import com.intellij.packaging.ui.ArtifactProblemsHolder;
10 import com.intellij.packaging.ui.PackagingSourceItem;
11 import org.jetbrains.annotations.NonNls;
12 import org.jetbrains.annotations.NotNull;
13 import org.jetbrains.annotations.Nullable;
14
15 import javax.swing.*;
16 import java.util.Collections;
17 import java.util.List;
18
19 public abstract class ArtifactType {
20   public static final ExtensionPointName<ArtifactType> EP_NAME = ExtensionPointName.create("com.intellij.packaging.artifactType");
21   private final String myId;
22   private final String myTitle;
23
24   protected ArtifactType(@NonNls String id, String title) {
25     myId = id;
26     myTitle = title;
27   }
28
29   public final String getId() {
30     return myId;
31   }
32
33   public String getPresentableName() {
34     return myTitle;
35   }
36
37   @NotNull
38   public abstract Icon getIcon();
39
40   @Nullable
41   public String getDefaultPathFor(@NotNull PackagingSourceItem sourceItem) {
42     return getDefaultPathFor(sourceItem.getKindOfProducedElements());
43   }
44
45   @Nullable
46   public abstract String getDefaultPathFor(@NotNull PackagingElementOutputKind kind);
47
48   public boolean isSuitableItem(@NotNull PackagingSourceItem sourceItem) {
49     return true;
50   }
51
52   public static ArtifactType[] getAllTypes() {
53     return EP_NAME.getExtensions();
54   }
55
56   @Nullable
57   public static ArtifactType findById(@NotNull @NonNls String id) {
58     for (ArtifactType type : getAllTypes()) {
59       if (id.equals(type.getId())) {
60         return type;
61       }
62     }
63     return null;
64   }
65
66   @NotNull
67   public abstract CompositePackagingElement<?> createRootElement(@NotNull String artifactName);
68
69   @NotNull
70   public List<? extends ArtifactTemplate> getNewArtifactTemplates(@NotNull PackagingElementResolvingContext context) {
71     return Collections.emptyList();
72   }
73
74   public void checkRootElement(@NotNull CompositePackagingElement<?> rootElement, @NotNull Artifact artifact, @NotNull ArtifactProblemsHolder manager) {
75   }
76
77   @Nullable
78   public List<? extends PackagingElement<?>> getSubstitution(@NotNull Artifact artifact, @NotNull PackagingElementResolvingContext context,
79                                                              @NotNull ArtifactType parentType) {
80     return null;
81   }
82 }