IDEA-251030 Icons are not shown in Database toolwindow popup menu
[idea/community.git] / plugins / groovy / src / org / jetbrains / plugins / groovy / config / GroovyLibraryPresentationProviderBase.java
1 /*
2  * Copyright 2000-2014 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 org.jetbrains.plugins.groovy.config;
17
18 import com.intellij.openapi.roots.libraries.LibraryKind;
19 import com.intellij.openapi.roots.libraries.LibraryPresentationProvider;
20 import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor;
21 import com.intellij.openapi.util.text.StringUtil;
22 import com.intellij.openapi.vfs.VfsUtilCore;
23 import com.intellij.openapi.vfs.VirtualFile;
24 import org.jetbrains.annotations.Nls;
25 import org.jetbrains.annotations.NotNull;
26 import org.jetbrains.annotations.Nullable;
27 import org.jetbrains.plugins.groovy.GroovyBundle;
28
29 import javax.swing.*;
30 import java.util.List;
31
32 public abstract class GroovyLibraryPresentationProviderBase extends LibraryPresentationProvider<GroovyLibraryProperties> {
33   public GroovyLibraryPresentationProviderBase(LibraryKind kind) {
34     super(kind);
35   }
36
37   @Override
38   public @Nls String getDescription(@NotNull GroovyLibraryProperties properties) {
39     final String version = properties.getVersion();
40     return GroovyBundle.message("library.presentation.provider.description", getLibraryCategoryName(), version, version != null ? 0 : 1);
41   }
42
43   @Override
44   public GroovyLibraryProperties detect(@NotNull List<VirtualFile> classesRoots) {
45     final VirtualFile[] libraryFiles = VfsUtilCore.toVirtualFileArray(classesRoots);
46     if (managesLibrary(libraryFiles)) {
47       final String version = getLibraryVersion(libraryFiles);
48       return new GroovyLibraryProperties(version);
49     }
50     return null;
51   }
52
53   protected abstract void fillLibrary(String path, LibraryEditor libraryEditor);
54
55   public abstract boolean managesLibrary(final VirtualFile[] libraryFiles);
56
57   @Nullable
58   @Nls
59   public abstract String getLibraryVersion(final VirtualFile[] libraryFiles);
60
61   @Override
62   @NotNull
63   public abstract Icon getIcon(GroovyLibraryProperties properties);
64
65   public abstract boolean isSDKHome(@NotNull VirtualFile file);
66
67   @NotNull
68   public abstract String getSDKVersion(String path);
69
70   @NotNull @Nls public abstract String getLibraryCategoryName();
71
72   @NotNull
73   @Nls
74   public String getLibraryPrefix() {
75     return StringUtil.toLowerCase(getLibraryCategoryName());
76   }
77
78   public boolean managesName(@NotNull String name) {
79     return StringUtil.startsWithIgnoreCase(name, getLibraryPrefix());
80   }
81 }