1 package com
.intellij
.openapi
.roots
.ui
.configuration
.artifacts
;
3 import com
.intellij
.openapi
.actionSystem
.AnAction
;
4 import com
.intellij
.openapi
.actionSystem
.AnActionEvent
;
5 import com
.intellij
.openapi
.project
.ProjectBundle
;
6 import com
.intellij
.packaging
.elements
.CompositePackagingElementType
;
7 import com
.intellij
.packaging
.elements
.PackagingElementFactory
;
8 import com
.intellij
.packaging
.elements
.PackagingElementType
;
9 import org
.jetbrains
.annotations
.NotNull
;
10 import org
.jetbrains
.annotations
.Nullable
;
12 import java
.util
.ArrayList
;
13 import java
.util
.List
;
18 public class AddCompositeElementActionGroup
extends AnAction
{
19 private final ArtifactsEditor myArtifactsEditor
;
20 private final CompositePackagingElementType
<?
> myElementType
;
22 public AddCompositeElementActionGroup(ArtifactsEditor artifactsEditor
, CompositePackagingElementType elementType
) {
23 super(ProjectBundle
.message("artifacts.create.action", elementType
.getPresentableName()));
24 myArtifactsEditor
= artifactsEditor
;
25 myElementType
= elementType
;
26 getTemplatePresentation().setIcon(elementType
.getCreateElementIcon());
30 public AnAction
[] getChildren(@Nullable AnActionEvent e
) {
31 if (e
== null) return EMPTY_ARRAY
;
33 List
<AnAction
> actions
= new ArrayList
<AnAction
>();
35 final PackagingElementType
<?
>[] types
= PackagingElementFactory
.getInstance().getNonCompositeElementTypes();
36 for (final PackagingElementType
<?
> type
: types
) {
37 final AnAction action
= new AnAction(type
.getPresentableName()) {
39 public void actionPerformed(AnActionEvent e
) {
40 myArtifactsEditor
.addNewPackagingElement(myElementType
, type
);
43 action
.getTemplatePresentation().setIcon(type
.getCreateElementIcon());
46 return actions
.toArray(new AnAction
[actions
.size()]);
49 public void actionPerformed(AnActionEvent e
) {
50 myArtifactsEditor
.addNewPackagingElement(null, myElementType
);
53 public static void addCompositeCreateActions(List
<AnAction
> actions
, final ArtifactsEditor artifactsEditor
) {
54 for (CompositePackagingElementType packagingElementType
: PackagingElementFactory
.getInstance().getCompositeElementTypes()) {
55 actions
.add(new AddCompositeElementActionGroup(artifactsEditor
, packagingElementType
));