5090e2effecf969d1b2e52fa6e3e0df9d61f9bdf
[idea/community.git] / java / idea-ui / src / com / intellij / jarRepository / RepositoryLibraryType.java
1 /*
2  * Copyright 2000-2017 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.jarRepository;
17
18 import com.intellij.ide.JavaUiBundle;
19 import com.intellij.openapi.project.Project;
20 import com.intellij.openapi.roots.libraries.LibraryType;
21 import com.intellij.openapi.roots.libraries.NewLibraryConfiguration;
22 import com.intellij.openapi.roots.libraries.PersistentLibraryKind;
23 import com.intellij.openapi.roots.libraries.ui.LibraryEditorComponent;
24 import com.intellij.openapi.roots.libraries.ui.LibraryPropertiesEditor;
25 import com.intellij.openapi.roots.libraries.ui.LibraryRootsComponentDescriptor;
26 import com.intellij.openapi.util.NlsContexts;
27 import com.intellij.openapi.vfs.VirtualFile;
28 import org.jetbrains.annotations.NotNull;
29 import org.jetbrains.annotations.Nullable;
30 import org.jetbrains.idea.maven.utils.library.RepositoryLibraryDescription;
31 import org.jetbrains.idea.maven.utils.library.RepositoryLibraryProperties;
32
33 import javax.swing.*;
34
35 public class RepositoryLibraryType extends LibraryType<RepositoryLibraryProperties> {
36
37   public static final PersistentLibraryKind<RepositoryLibraryProperties>
38     REPOSITORY_LIBRARY_KIND = new PersistentLibraryKind<RepositoryLibraryProperties>("repository") {
39     @NotNull
40     @Override
41     public RepositoryLibraryProperties createDefaultProperties() {
42       return new RepositoryLibraryProperties();
43     }
44   };
45
46   protected RepositoryLibraryType() {
47     super(REPOSITORY_LIBRARY_KIND);
48   }
49
50   public static RepositoryLibraryType getInstance() {
51     return EP_NAME.findExtension(RepositoryLibraryType.class);
52   }
53
54   @Nullable
55   @Override
56   public @NlsContexts.Label String getCreateActionName() {
57     return JavaUiBundle.message("repository.library.type.action.name.label");
58   }
59
60   @Override
61   public NewLibraryConfiguration createNewLibrary(@NotNull JComponent parentComponent,
62                                                   @Nullable VirtualFile contextDirectory,
63                                                   @NotNull Project project) {
64     return JarRepositoryManager.chooseLibraryAndDownload(project, null, parentComponent);
65   }
66
67   @Override
68   public LibraryPropertiesEditor createPropertiesEditor(@NotNull LibraryEditorComponent<RepositoryLibraryProperties> component) {
69     return new RepositoryLibraryWithDescriptionEditor(component);
70   }
71
72   @Nullable
73   @Override
74   public Icon getIcon(@Nullable RepositoryLibraryProperties properties) {
75     if (properties == null || properties.getGroupId() == null || properties.getArtifactId() == null) {
76       return RepositoryLibraryDescription.DEFAULT_ICON;
77     }
78     return RepositoryLibraryDescription.findDescription(properties).getIcon();
79   }
80
81   @NotNull
82   @Override
83   public String getDescription(@NotNull RepositoryLibraryProperties properties) {
84     RepositoryLibraryDescription description = RepositoryLibraryDescription.findDescription(properties);
85     return "Maven: " + description.getDisplayName(properties.getVersion());
86   }
87
88   @Nullable
89   @Override
90   public LibraryRootsComponentDescriptor createLibraryRootsComponentDescriptor() {
91     return new RepositoryLibraryRootsComponentDescriptor();
92   }
93 }