df4a61a2876330a4412c1904ed77a200fab24637
[idea/community.git] / platform / lang-impl / src / com / intellij / openapi / roots / libraries / ui / AttachRootButtonDescriptor.java
1 /*
2  * Copyright 2000-2010 JetBrains s.r.o.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  * http://www.apache.org/licenses/LICENSE-2.0
7  * Unless required by applicable law or agreed to in writing, software
8  * distributed under the License is distributed on an "AS IS" BASIS,
9  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10  * See the License for the specific language governing permissions and
11  * limitations under the License.
12  */
13 package com.intellij.openapi.roots.libraries.ui;
14
15 import com.intellij.openapi.module.Module;
16 import com.intellij.openapi.roots.OrderRootType;
17 import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor;
18 import com.intellij.openapi.util.NlsContexts;
19 import com.intellij.openapi.vfs.VirtualFile;
20 import org.jetbrains.annotations.NotNull;
21 import org.jetbrains.annotations.Nullable;
22
23 import javax.swing.*;
24
25 /**
26  * Describes an 'attach' button in the library roots component.
27  *
28  * @see ChooserBasedAttachRootButtonDescriptor
29  */
30 public abstract class AttachRootButtonDescriptor {
31   private final OrderRootType myOrderRootType;
32   protected final String myButtonText;
33   private final Icon myToolbarIcon;
34
35   /**
36    * Creates a descriptor for 'attach' button shown in popup when user click on '+' button.
37    * Consider using {@link #AttachRootButtonDescriptor(OrderRootType, Icon, String)} instead.
38    */
39   protected AttachRootButtonDescriptor(@NotNull OrderRootType orderRootType, @NotNull @NlsContexts.Button String buttonText) {
40     myOrderRootType = orderRootType;
41     myButtonText = buttonText;
42     myToolbarIcon = null;
43   }
44
45   /**
46    * Creates a descriptor for 'attach' button shown in toolbar of a library editor
47    */
48   protected AttachRootButtonDescriptor(@NotNull OrderRootType orderRootType,
49                                        @NotNull Icon toolbarIcon,
50                                        @NotNull @NlsContexts.Button String buttonText) {
51     myOrderRootType = orderRootType;
52     myButtonText = buttonText;
53     myToolbarIcon = toolbarIcon;
54   }
55
56   public abstract VirtualFile[] selectFiles(@NotNull JComponent parent, @Nullable VirtualFile initialSelection,
57                                             @Nullable Module contextModule, @NotNull LibraryEditor libraryEditor);
58
59   public String getButtonText() {
60     return myButtonText;
61   }
62
63   public OrderRootType getRootType() {
64     return myOrderRootType;
65   }
66
67   public boolean addAsJarDirectories() {
68     return false;
69   }
70
71   public VirtualFile @NotNull [] scanForActualRoots(VirtualFile @NotNull [] rootCandidates, JComponent parent) {
72     return rootCandidates;
73   }
74
75   @Nullable
76   public Icon getToolbarIcon() {
77     return myToolbarIcon;
78   }
79 }