2 * Copyright 2000-2014 JetBrains s.r.o.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
20 package com.intellij.util;
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;
31 public class VisibilityIcons {
32 private VisibilityIcons() {}
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);
39 else if (modifierList.hasModifierProperty(PsiModifier.PRIVATE)) {
40 setVisibilityIcon(PsiUtil.ACCESS_LEVEL_PRIVATE, baseIcon);
42 else if (modifierList.hasModifierProperty(PsiModifier.PROTECTED)) {
43 setVisibilityIcon(PsiUtil.ACCESS_LEVEL_PROTECTED, baseIcon);
45 else if (modifierList.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) {
46 setVisibilityIcon(PsiUtil.ACCESS_LEVEL_PACKAGE_LOCAL, baseIcon);
49 Icon emptyIcon = EmptyIcon.create(PlatformIcons.PUBLIC_ICON);
50 baseIcon.setIcon(emptyIcon, 1);
53 else if (PlatformIcons.PUBLIC_ICON != null) {
54 Icon emptyIcon = EmptyIcon.create(PlatformIcons.PUBLIC_ICON);
55 baseIcon.setIcon(emptyIcon, 1);
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) {
61 switch (accessLevel) {
62 case PsiUtil.ACCESS_LEVEL_PUBLIC:
63 icon = PlatformIcons.PUBLIC_ICON;
65 case PsiUtil.ACCESS_LEVEL_PROTECTED:
66 icon = PlatformIcons.PROTECTED_ICON;
68 case PsiUtil.ACCESS_LEVEL_PACKAGE_LOCAL:
69 icon = PlatformIcons.PACKAGE_LOCAL_ICON;
71 case PsiUtil.ACCESS_LEVEL_PRIVATE:
72 icon = PlatformIcons.PRIVATE_ICON;
75 if (PlatformIcons.PUBLIC_ICON != null) {
76 icon = EmptyIcon.create(PlatformIcons.PUBLIC_ICON);
82 baseIcon.setIcon(icon, 1);