2 * Copyright 2000-2009 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.
18 * Created by IntelliJ IDEA.
22 * To change template for new class use
23 * Code Style | Class Templates options (Tools | IDE Options).
25 package com
.intellij
.refactoring
.ui
;
27 import com
.intellij
.psi
.PsiMember
;
28 import com
.intellij
.psi
.PsiMethod
;
29 import com
.intellij
.psi
.PsiModifier
;
30 import com
.intellij
.psi
.PsiModifierList
;
31 import com
.intellij
.refactoring
.classMembers
.MemberInfoModel
;
32 import com
.intellij
.refactoring
.util
.classMembers
.MemberInfo
;
33 import com
.intellij
.ui
.RowIcon
;
34 import com
.intellij
.util
.IconUtil
;
35 import com
.intellij
.util
.VisibilityIcons
;
38 import java
.util
.List
;
40 public class MemberSelectionTable
extends AbstractMemberSelectionTable
<PsiMember
, MemberInfo
> {
42 public MemberSelectionTable(final List
<MemberInfo
> memberInfos
, String abstractColumnHeader
) {
43 this(memberInfos
, null, abstractColumnHeader
);
46 public MemberSelectionTable(final List
<MemberInfo
> memberInfos
, MemberInfoModel
<PsiMember
, MemberInfo
> memberInfoModel
, String abstractColumnHeader
) {
47 super(memberInfos
, memberInfoModel
, abstractColumnHeader
);
51 protected Object
getAbstractColumnValue(MemberInfo memberInfo
) {
52 if (!(memberInfo
.getMember() instanceof PsiMethod
)) return null;
53 if (memberInfo
.isStatic()) return null;
55 PsiMethod method
= (PsiMethod
)memberInfo
.getMember();
56 if (method
.hasModifierProperty(PsiModifier
.ABSTRACT
)) {
57 final Boolean fixedAbstract
= myMemberInfoModel
.isFixedAbstract(memberInfo
);
58 if (fixedAbstract
!= null) return fixedAbstract
;
61 if (!myMemberInfoModel
.isAbstractEnabled(memberInfo
)) {
62 return myMemberInfoModel
.isAbstractWhenDisabled(memberInfo
);
65 return memberInfo
.isToAbstract() ? Boolean
.TRUE
: Boolean
.FALSE
;
70 protected boolean isAbstractColumnEditable(int rowIndex
) {
71 MemberInfo info
= myMemberInfos
.get(rowIndex
);
72 if (!(info
.getMember() instanceof PsiMethod
)) return false;
74 PsiMethod method
= (PsiMethod
)info
.getMember();
75 if (method
.hasModifierProperty(PsiModifier
.ABSTRACT
)) {
76 if (myMemberInfoModel
.isFixedAbstract(info
) != null) {
81 return info
.isChecked() && myMemberInfoModel
.isAbstractEnabled(info
);
86 protected void setVisibilityIcon(MemberInfo memberInfo
, RowIcon icon
) {
87 PsiMember member
= memberInfo
.getMember();
88 PsiModifierList modifiers
= member
!= null ? member
.getModifierList() : null;
89 if (modifiers
!= null) {
90 VisibilityIcons
.setVisibilityIcon(modifiers
, icon
);
93 icon
.setIcon(IconUtil
.getEmptyIcon(true), VISIBILITY_ICON_POSITION
);
98 protected Icon
getOverrideIcon(MemberInfo memberInfo
) {
99 PsiMember member
= memberInfo
.getMember();
100 Icon overrideIcon
= MemberSelectionTable
.EMPTY_OVERRIDE_ICON
;
101 if (member
instanceof PsiMethod
) {
102 if (Boolean
.TRUE
.equals(memberInfo
.getOverrides())) {
103 overrideIcon
= MemberSelectionTable
.OVERRIDING_METHOD_ICON
;
105 else if (Boolean
.FALSE
.equals(memberInfo
.getOverrides())) {
106 overrideIcon
= MemberSelectionTable
.IMPLEMENTING_METHOD_ICON
;
109 overrideIcon
= MemberSelectionTable
.EMPTY_OVERRIDE_ICON
;