98c98b5315de91ac8507b59fd9fc0e71c5804a4a
[idea/community.git] / plugins / groovy / src / org / jetbrains / plugins / groovy / annotator / intentions / dynamic / elements / DItemElement.java
1 /*
2  * Copyright 2000-2009 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 package org.jetbrains.plugins.groovy.annotator.intentions.dynamic.elements;
17
18 import com.intellij.psi.PsiManager;
19 import com.intellij.psi.PsiNamedElement;
20 import org.jetbrains.annotations.NotNull;
21
22 /**
23  * User: Dmitry.Krasilschikov
24  * Date: 13.02.2008
25  */
26
27 /*
28  * Base class for Dynamic property and method
29  */
30
31 public abstract class DItemElement implements DNamedElement, DTypedElement, Comparable {
32   public String myType = null;
33   public Boolean myStatic = false;
34   public String myName = null;
35
36 //  @NotNull
37   public String myHightlightedText = null;
38
39   public DItemElement(Boolean isStatic, String name, String type) {
40     myStatic = isStatic;
41     myName = name;
42     myType = type;
43   }
44
45   public String getHightlightedText() {
46     return myHightlightedText;
47   }
48
49   public void setHightlightedText(String hightlightedText) {
50     myHightlightedText = hightlightedText;
51   }
52
53   public boolean equals(Object o) {
54     if (this == o) return true;
55     if (o == null || getClass() != o.getClass()) return false;
56
57     DItemElement that = (DItemElement)o;
58
59     if (myName != null ? !myName.equals(that.myName) : that.myName != null) return false;
60     if (myType != null ? !myType.equals(that.myType) : that.myType != null) return false;
61     if (myStatic != that.myStatic) return false;
62
63     return true;
64   }
65
66   public int hashCode() {
67     int result;
68     result = (myType != null ? myType.hashCode() : 0);
69     result = 31 * result + (myName != null ? myName.hashCode() : 0);
70     return result;
71   }
72
73   public String getType() {
74     return myType;
75   }
76
77   public void setType(String type) {
78     this.myType = type;
79     clearCache();
80   }
81
82   public abstract void clearCache();
83
84   public String getName() {
85     return myName;
86   }
87
88   public void setName(String name) {
89     this.myName = name;
90     clearCache();
91   }
92
93   public Boolean isStatic() {
94     return myStatic;
95   }
96
97   public void setStatic(Boolean aStatic) {
98     myStatic = aStatic;
99     clearCache();
100   }
101
102   public int compareTo(Object o) {
103     if (!(o instanceof DItemElement)) return 0;
104     final DItemElement otherProperty = (DItemElement)o;
105
106     return getName().compareTo(otherProperty.getName()) + getType().compareTo(otherProperty.getType());
107   }
108
109
110   @NotNull
111   public abstract PsiNamedElement getPsi(PsiManager manager, String containingClassName);
112 }