update copyrights
[idea/community.git] / platform / lang-api / src / com / intellij / codeInspection / lang / RefManagerExtension.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
17 /*
18  * User: anna
19  * Date: 20-Dec-2007
20  */
21 package com.intellij.codeInspection.lang;
22
23 import com.intellij.codeInspection.reference.RefElement;
24 import com.intellij.codeInspection.reference.RefEntity;
25 import com.intellij.codeInspection.reference.RefVisitor;
26 import com.intellij.lang.Language;
27 import com.intellij.openapi.util.Key;
28 import com.intellij.psi.PsiElement;
29 import org.jdom.Element;
30 import org.jetbrains.annotations.Nullable;
31
32 public interface RefManagerExtension<T> {
33   Key<T> getID();
34
35   Language getLanguage();
36
37   void iterate(RefVisitor visitor);
38
39   void cleanup();
40
41   void removeReference(RefElement refElement);
42
43   @Nullable
44   RefElement createRefElement(PsiElement psiElement);
45
46   @Nullable
47   RefEntity getReference(final String type, final String fqName);
48
49   @Nullable
50   String getType(RefEntity entity);
51
52   RefEntity getRefinedElement(final RefEntity ref);
53
54   void visitElement(final PsiElement element);
55
56   @Nullable
57   String getGroupName(final RefEntity entity);
58
59   boolean belongsToScope(final PsiElement psiElement);
60
61   void export(final RefEntity refEntity, final Element element);
62 }