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.
16 package com
.intellij
.codeInsight
.generation
;
18 import com
.intellij
.openapi
.diagnostic
.Logger
;
19 import com
.intellij
.openapi
.util
.Condition
;
20 import com
.intellij
.psi
.PsiClass
;
21 import com
.intellij
.psi
.PsiEnumConstant
;
22 import com
.intellij
.psi
.PsiField
;
23 import com
.intellij
.util
.IncorrectOperationException
;
24 import com
.intellij
.util
.NotNullFunction
;
25 import com
.intellij
.util
.containers
.ContainerUtil
;
26 import org
.jetbrains
.annotations
.NotNull
;
28 import java
.util
.ArrayList
;
29 import java
.util
.Collection
;
30 import java
.util
.List
;
32 abstract class GenerateGetterSetterHandlerBase
extends GenerateMembersHandlerBase
{
33 private static final Logger LOG
= Logger
.getInstance("#com.intellij.codeInsight.generation.GenerateGetterSetterHandlerBase");
36 GenerateAccessorProviderRegistrar
.registerProvider(new NotNullFunction
<PsiClass
, Collection
<EncapsulatableClassMember
>>() {
38 public Collection
<EncapsulatableClassMember
> fun(PsiClass s
) {
39 final List
<EncapsulatableClassMember
> result
= new ArrayList
<EncapsulatableClassMember
>();
40 for(PsiField field
: s
.getFields()) {
41 if (!(field
instanceof PsiEnumConstant
)) {
42 result
.add(new PsiFieldMember(field
));
50 public GenerateGetterSetterHandlerBase(String chooserTitle
) {
54 protected ClassMember
[] getAllOriginalMembers(final PsiClass aClass
) {
55 final List
<EncapsulatableClassMember
> list
= GenerateAccessorProviderRegistrar
.getEncapsulatableClassMembers(aClass
);
56 final List
<EncapsulatableClassMember
> members
= ContainerUtil
.findAll(list
, new Condition
<EncapsulatableClassMember
>() {
57 public boolean value(EncapsulatableClassMember member
) {
59 return generateMemberPrototypes(aClass
, member
).length
> 0;
61 catch (IncorrectOperationException e
) {
67 return members
.toArray(new ClassMember
[members
.size()]);