[memory-agent] Use shortcut jetbrainsLibrary for memory agent library in licenses...
[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.Nls;
12 import org.jetbrains.annotations.NonNls;
13 import org.jetbrains.annotations.NotNull;
14 import org.jetbrains.annotations.Nullable;
15
16 import javax.swing.*;
17 import java.util.Collections;
18 import java.util.List;
19
20 public abstract class ArtifactType {
21   public static final ExtensionPointName<ArtifactType> EP_NAME = ExtensionPointName.create("com.intellij.packaging.artifactType");
22   private final String myId;
23   private final @Nls(capitalization = Nls.Capitalization.Sentence) String myTitle;
24
25   protected ArtifactType(@NonNls String id, @Nls(capitalization = Nls.Capitalization.Sentence) String title) {
26     myId = id;
27     myTitle = title;
28   }
29
30   public final String getId() {
31     return myId;
32   }
33
34   public @Nls(capitalization = Nls.Capitalization.Sentence) String getPresentableName() {
35     return myTitle;
36   }
37
38   @NotNull
39   public abstract Icon getIcon();
40
41   @Nullable
42   public String getDefaultPathFor(@NotNull PackagingSourceItem sourceItem) {
43     return getDefaultPathFor(sourceItem.getKindOfProducedElements());
44   }
45
46   @Nullable
47   public abstract String getDefaultPathFor(@NotNull PackagingElementOutputKind kind);
48
49   public boolean isSuitableItem(@NotNull PackagingSourceItem sourceItem) {
50     return true;
51   }
52
53   public static ArtifactType[] getAllTypes() {
54     return EP_NAME.getExtensions();
55   }
56
57   @Nullable
58   public static ArtifactType findById(@NotNull @NonNls String id) {
59     for (ArtifactType type : getAllTypes()) {
60       if (id.equals(type.getId())) {
61         return type;
62       }
63     }
64     return null;
65   }
66
67   @NotNull
68   public abstract CompositePackagingElement<?> createRootElement(@NotNull String artifactName);
69
70   @NotNull
71   public List<? extends ArtifactTemplate> getNewArtifactTemplates(@NotNull PackagingElementResolvingContext context) {
72     return Collections.emptyList();
73   }
74
75   public void checkRootElement(@NotNull CompositePackagingElement<?> rootElement, @NotNull Artifact artifact, @NotNull ArtifactProblemsHolder manager) {
76   }
77
78   @Nullable
79   public List<? extends PackagingElement<?>> getSubstitution(@NotNull Artifact artifact, @NotNull PackagingElementResolvingContext context,
80                                                              @NotNull ArtifactType parentType) {
81     return null;
82   }
83 }