2 * Created by IntelliJ IDEA.
6 * To change template for new class use
7 * Code Style | Class Templates options (Tools | IDE Options).
9 package com
.intellij
.refactoring
.ui
;
11 import com
.intellij
.psi
.PsiMember
;
12 import com
.intellij
.psi
.PsiMethod
;
13 import com
.intellij
.psi
.PsiModifier
;
14 import com
.intellij
.psi
.PsiModifierList
;
15 import com
.intellij
.refactoring
.classMembers
.MemberInfoModel
;
16 import com
.intellij
.refactoring
.util
.classMembers
.MemberInfo
;
17 import com
.intellij
.ui
.RowIcon
;
18 import com
.intellij
.util
.IconUtil
;
19 import com
.intellij
.util
.VisibilityIcons
;
22 import java
.util
.List
;
24 public class MemberSelectionTable
extends AbstractMemberSelectionTable
<PsiMember
, MemberInfo
> {
26 public MemberSelectionTable(final List
<MemberInfo
> memberInfos
, String abstractColumnHeader
) {
27 this(memberInfos
, null, abstractColumnHeader
);
30 public MemberSelectionTable(final List
<MemberInfo
> memberInfos
, MemberInfoModel
<PsiMember
, MemberInfo
> memberInfoModel
, String abstractColumnHeader
) {
31 super(memberInfos
, memberInfoModel
, abstractColumnHeader
);
35 protected Object
getAbstractColumnValue(MemberInfo memberInfo
) {
36 if (!(memberInfo
.getMember() instanceof PsiMethod
)) return null;
37 if (memberInfo
.isStatic()) return null;
39 PsiMethod method
= (PsiMethod
)memberInfo
.getMember();
40 if (method
.hasModifierProperty(PsiModifier
.ABSTRACT
)) {
41 final Boolean fixedAbstract
= myMemberInfoModel
.isFixedAbstract(memberInfo
);
42 if (fixedAbstract
!= null) return fixedAbstract
;
45 if (!myMemberInfoModel
.isAbstractEnabled(memberInfo
)) {
46 return myMemberInfoModel
.isAbstractWhenDisabled(memberInfo
);
49 return memberInfo
.isToAbstract() ? Boolean
.TRUE
: Boolean
.FALSE
;
54 protected boolean isAbstractColumnEditable(int rowIndex
) {
55 MemberInfo info
= myMemberInfos
.get(rowIndex
);
56 if (!(info
.getMember() instanceof PsiMethod
)) return false;
58 PsiMethod method
= (PsiMethod
)info
.getMember();
59 if (method
.hasModifierProperty(PsiModifier
.ABSTRACT
)) {
60 if (myMemberInfoModel
.isFixedAbstract(info
) != null) {
65 return info
.isChecked() && myMemberInfoModel
.isAbstractEnabled(info
);
70 protected void setVisibilityIcon(MemberInfo memberInfo
, RowIcon icon
) {
71 PsiMember member
= memberInfo
.getMember();
72 PsiModifierList modifiers
= member
!= null ? member
.getModifierList() : null;
73 if (modifiers
!= null) {
74 VisibilityIcons
.setVisibilityIcon(modifiers
, icon
);
77 icon
.setIcon(IconUtil
.getEmptyIcon(true), VISIBILITY_ICON_POSITION
);
82 protected Icon
getOverrideIcon(MemberInfo memberInfo
) {
83 PsiMember member
= memberInfo
.getMember();
84 Icon overrideIcon
= MemberSelectionTable
.EMPTY_OVERRIDE_ICON
;
85 if (member
instanceof PsiMethod
) {
86 if (Boolean
.TRUE
.equals(memberInfo
.getOverrides())) {
87 overrideIcon
= MemberSelectionTable
.OVERRIDING_METHOD_ICON
;
89 else if (Boolean
.FALSE
.equals(memberInfo
.getOverrides())) {
90 overrideIcon
= MemberSelectionTable
.IMPLEMENTING_METHOD_ICON
;
93 overrideIcon
= MemberSelectionTable
.EMPTY_OVERRIDE_ICON
;