property tests: don't expect completion to suggest the word under caret in texts
[idea/community.git] / java / compiler / openapi / src / com / intellij / packaging / elements / PackagingElementType.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.elements;
3
4 import com.intellij.openapi.extensions.ExtensionPointName;
5 import com.intellij.openapi.project.Project;
6 import com.intellij.packaging.artifacts.Artifact;
7 import com.intellij.packaging.ui.ArtifactEditorContext;
8 import com.intellij.packaging.ui.PackagingElementPropertiesPanel;
9 import org.jetbrains.annotations.Nls;
10 import org.jetbrains.annotations.NonNls;
11 import org.jetbrains.annotations.NotNull;
12 import org.jetbrains.annotations.Nullable;
13
14 import javax.swing.*;
15 import java.util.List;
16
17 public abstract class PackagingElementType<E extends PackagingElement<?>> {
18   public static final ExtensionPointName<PackagingElementType> EP_NAME = ExtensionPointName.create("com.intellij.packaging.elementType");
19   private final String myId;
20   private final @Nls(capitalization = Nls.Capitalization.Title) String myPresentableName;
21
22   protected PackagingElementType(@NotNull @NonNls String id, @NotNull @Nls(capitalization = Nls.Capitalization.Title) String presentableName) {
23     myId = id;
24     myPresentableName = presentableName;
25   }
26
27   public final String getId() {
28     return myId;
29   }
30
31   public @Nls(capitalization = Nls.Capitalization.Title) String getPresentableName() {
32     return myPresentableName;
33   }
34
35   @Nullable
36   public Icon getCreateElementIcon() {
37     return null;
38   }
39
40   public abstract boolean canCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact);
41
42   @NotNull
43   public abstract List<? extends PackagingElement<?>> chooseAndCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact,
44                                                                       @NotNull CompositePackagingElement<?> parent);
45
46   @NotNull
47   public abstract E createEmpty(@NotNull Project project);
48
49   protected static <T extends PackagingElementType<?>> T getInstance(final Class<T> aClass) {
50     for (PackagingElementType type : EP_NAME.getExtensionList()) {
51       if (aClass.isInstance(type)) {
52         return aClass.cast(type);
53       }
54     }
55     throw new AssertionError();
56   }
57
58   @Nullable
59   public PackagingElementPropertiesPanel createElementPropertiesPanel(@NotNull E element, @NotNull ArtifactEditorContext context) {
60     return null;
61   }
62 }