update copyrights
[idea/community.git] / platform / lang-api / src / com / intellij / lang / refactoring / RefactoringSupportProvider.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 com.intellij.lang.refactoring;
17
18 import com.intellij.psi.PsiElement;
19 import com.intellij.refactoring.RefactoringActionHandler;
20 import org.jetbrains.annotations.Nullable;
21
22 /**
23  * Allows a custom language plugin to control the operation of refactorings for
24  * files in the language.
25  *
26  * @author ven
27  */
28
29 public interface RefactoringSupportProvider {
30   /**
31    * Checks if the Safe Delete refactoring can be applied to the specified element
32    * in the language. The Safe Delete refactoring also requires the plugin to implement
33    * Find Usages functionality.
34    *
35    * @param element the element for which Safe Delete was invoked
36    * @return true if Safe Delete is available, false otherwise.
37    */
38   boolean isSafeDeleteAvailable(PsiElement element);
39
40   /**
41    * @return handler for introducing local variables in this language
42    * @see com.intellij.refactoring.RefactoringActionHandler
43    */
44   @Nullable RefactoringActionHandler getIntroduceVariableHandler();
45
46   /**
47    * @return handler for extracting methods in this language
48    * @see com.intellij.refactoring.RefactoringActionHandler
49    */
50   @Nullable RefactoringActionHandler getExtractMethodHandler();
51
52   /**
53    * @return handler for introducing constants in this language
54    * @see com.intellij.refactoring.RefactoringActionHandler
55    */
56   @Nullable RefactoringActionHandler getIntroduceConstantHandler();
57
58   /**
59    * @return handler for introducing fields in this language
60    * @see com.intellij.refactoring.RefactoringActionHandler
61    */
62   @Nullable RefactoringActionHandler getIntroduceFieldHandler();
63
64   /**
65    * @return  handler for introducing parameters in this language
66    * @see com.intellij.refactoring.RefactoringActionHandler
67    */
68   @Nullable RefactoringActionHandler getIntroduceParameterHandler();
69
70   /**
71    * @return  handler for pulling up members in this language
72    * @see com.intellij.refactoring.RefactoringActionHandler
73    */
74   @Nullable RefactoringActionHandler getPullUpHandler();
75
76   /**
77    * @return  handler for pushing down members in this language
78    * @see com.intellij.refactoring.RefactoringActionHandler
79    */
80   @Nullable RefactoringActionHandler getPushDownHandler();
81
82   /**
83    * @return  handler for extracting members to some module in this language
84    * @see com.intellij.refactoring.RefactoringActionHandler
85    */
86   @Nullable RefactoringActionHandler getExtractModuleHandler();
87
88   /**
89    * @return  handler for extracting super class in this language
90    * @see com.intellij.refactoring.RefactoringActionHandler
91    */
92   @Nullable RefactoringActionHandler getExtractSuperClassHandler();
93
94   boolean doInplaceRenameFor(PsiElement element, PsiElement context);
95 }