Cleanup: NotNull/Nullable
[idea/community.git] / java / java-psi-api / src / com / intellij / util / VisibilityIcons.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
17 /*
18  * @author max
19  */
20 package com.intellij.util;
21
22 import com.intellij.psi.PsiModifier;
23 import com.intellij.psi.PsiModifierList;
24 import com.intellij.psi.util.PsiUtil;
25 import com.intellij.ui.RowIcon;
26 import com.intellij.util.ui.EmptyIcon;
27 import org.intellij.lang.annotations.MagicConstant;
28
29 import javax.swing.*;
30
31 public class VisibilityIcons {
32   private VisibilityIcons() {}
33
34   public static void setVisibilityIcon(PsiModifierList modifierList, RowIcon baseIcon) {
35     if (modifierList != null) {
36       if (modifierList.hasModifierProperty(PsiModifier.PUBLIC)) {
37         setVisibilityIcon(PsiUtil.ACCESS_LEVEL_PUBLIC, baseIcon);
38       }
39       else if (modifierList.hasModifierProperty(PsiModifier.PRIVATE)) {
40         setVisibilityIcon(PsiUtil.ACCESS_LEVEL_PRIVATE, baseIcon);
41       }
42       else if (modifierList.hasModifierProperty(PsiModifier.PROTECTED)) {
43         setVisibilityIcon(PsiUtil.ACCESS_LEVEL_PROTECTED, baseIcon);
44       }
45       else if (modifierList.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) {
46         setVisibilityIcon(PsiUtil.ACCESS_LEVEL_PACKAGE_LOCAL, baseIcon);
47       }
48       else {
49         Icon emptyIcon = EmptyIcon.create(PlatformIcons.PUBLIC_ICON);
50         baseIcon.setIcon(emptyIcon, 1);
51       }
52     }
53     else if (PlatformIcons.PUBLIC_ICON != null) {
54         Icon emptyIcon = EmptyIcon.create(PlatformIcons.PUBLIC_ICON);
55         baseIcon.setIcon(emptyIcon, 1);
56       }
57   }
58
59   public static void setVisibilityIcon(@MagicConstant(intValues = {PsiUtil.ACCESS_LEVEL_PUBLIC, PsiUtil.ACCESS_LEVEL_PROTECTED, PsiUtil.ACCESS_LEVEL_PACKAGE_LOCAL, PsiUtil.ACCESS_LEVEL_PRIVATE}) int accessLevel, RowIcon baseIcon) {
60     Icon icon;
61     switch (accessLevel) {
62       case PsiUtil.ACCESS_LEVEL_PUBLIC:
63         icon = PlatformIcons.PUBLIC_ICON;
64         break;
65       case PsiUtil.ACCESS_LEVEL_PROTECTED:
66         icon = PlatformIcons.PROTECTED_ICON;
67         break;
68       case PsiUtil.ACCESS_LEVEL_PACKAGE_LOCAL:
69         icon = PlatformIcons.PACKAGE_LOCAL_ICON;
70         break;
71       case PsiUtil.ACCESS_LEVEL_PRIVATE:
72         icon = PlatformIcons.PRIVATE_ICON;
73         break;
74       default:
75         if (PlatformIcons.PUBLIC_ICON != null) {
76           icon = EmptyIcon.create(PlatformIcons.PUBLIC_ICON);
77         }
78         else {
79           return;
80         }
81     }
82     baseIcon.setIcon(icon, 1);
83   }
84 }