07133eb3dcebfa0205b529097a806080c723160d
[idea/community.git] / java / compiler / impl / src / com / intellij / packaging / impl / elements / DirectoryCopyElementType.java
1 /*
2  * Copyright 2000-2012 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.packaging.impl.elements;
17
18 import com.intellij.icons.AllIcons;
19 import com.intellij.openapi.fileChooser.FileChooser;
20 import com.intellij.openapi.fileChooser.FileChooserDescriptor;
21 import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
22 import com.intellij.openapi.project.Project;
23 import com.intellij.openapi.vfs.VirtualFile;
24 import com.intellij.packaging.artifacts.Artifact;
25 import com.intellij.packaging.elements.CompositePackagingElement;
26 import com.intellij.packaging.elements.PackagingElementType;
27 import com.intellij.packaging.ui.ArtifactEditorContext;
28 import org.jetbrains.annotations.NotNull;
29
30 import javax.swing.*;
31 import java.util.ArrayList;
32 import java.util.List;
33
34 public class DirectoryCopyElementType extends PackagingElementType<DirectoryCopyPackagingElement> {
35
36   DirectoryCopyElementType() {
37     super("dir-copy", "Directory Content");
38   }
39
40   @Override
41   public Icon getCreateElementIcon() {
42     return AllIcons.Nodes.CopyOfFolder;
43   }
44
45   @Override
46   public boolean canCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact) {
47     return true;
48   }
49
50   @Override
51   @NotNull
52   public List<? extends DirectoryCopyPackagingElement> chooseAndCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact,
53                                                                    @NotNull CompositePackagingElement<?> parent) {
54     final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createMultipleFoldersDescriptor();
55     final VirtualFile[] files = FileChooser.chooseFiles(descriptor, context.getProject(), null);
56     final List<DirectoryCopyPackagingElement> list = new ArrayList<>();
57     for (VirtualFile file : files) {
58       list.add(new DirectoryCopyPackagingElement(file.getPath()));
59     }
60     return list;
61   }
62
63   @Override
64   @NotNull
65   public DirectoryCopyPackagingElement createEmpty(@NotNull Project project) {
66     return new DirectoryCopyPackagingElement();
67   }
68 }