mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Extract delegate class action moved to lang-impl (take 2)
This commit is contained in:
@@ -27,6 +27,7 @@ import com.intellij.refactoring.changeSignature.JavaChangeSignatureHandler;
|
||||
import com.intellij.refactoring.extractInterface.ExtractInterfaceHandler;
|
||||
import com.intellij.refactoring.extractMethod.ExtractMethodHandler;
|
||||
import com.intellij.refactoring.extractSuperclass.ExtractSuperclassHandler;
|
||||
import com.intellij.refactoring.extractclass.ExtractClassHandler;
|
||||
import com.intellij.refactoring.introduceField.IntroduceConstantHandler;
|
||||
import com.intellij.refactoring.introduceField.IntroduceFieldHandler;
|
||||
import com.intellij.refactoring.introduceParameter.IntroduceParameterHandler;
|
||||
@@ -91,6 +92,11 @@ public class JavaRefactoringSupportProvider extends RefactoringSupportProvider {
|
||||
return new JavaChangeSignatureHandler();
|
||||
}
|
||||
|
||||
@Override
|
||||
public RefactoringActionHandler getExtractClassHandler() {
|
||||
return new ExtractClassHandler();
|
||||
}
|
||||
|
||||
public static boolean mayRenameInplace(PsiElement elementToRename, final PsiElement nameSuggestionContext) {
|
||||
if (!(elementToRename instanceof PsiVariable)) return false;
|
||||
if (nameSuggestionContext != null && nameSuggestionContext.getContainingFile() != elementToRename.getContainingFile()) return false;
|
||||
|
||||
@@ -25,16 +25,21 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.HelpID;
|
||||
import com.intellij.refactoring.RefactorJBundle;
|
||||
import com.intellij.refactoring.RefactoringActionHandler;
|
||||
import com.intellij.refactoring.lang.ElementsHandler;
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ExtractClassHandler implements RefactoringActionHandler {
|
||||
public class ExtractClassHandler implements ElementsHandler {
|
||||
|
||||
protected static String getHelpID() {
|
||||
return HelpID.ExtractClass;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabledOnElements(PsiElement[] elements) {
|
||||
return elements.length == 1 && PsiTreeUtil.getParentOfType(elements[0], PsiClass.class, false) != null;
|
||||
}
|
||||
|
||||
public void invoke(@NotNull Project project, Editor editor, PsiFile file, DataContext dataContext) {
|
||||
final ScrollingModel scrollingModel = editor.getScrollingModel();
|
||||
scrollingModel.scrollToCaret(ScrollType.MAKE_VISIBLE);
|
||||
|
||||
@@ -124,4 +124,13 @@ public abstract class RefactoringSupportProvider {
|
||||
public ChangeSignatureHandler getChangeSignatureHandler() { return null; }
|
||||
|
||||
public boolean isInplaceRenameAvailable(PsiElement element, PsiElement context) { return false; }
|
||||
|
||||
/**
|
||||
* @return handler for extracting [delegate] class in this language
|
||||
* @see com.intellij.refactoring.RefactoringActionHandler
|
||||
*/
|
||||
@Nullable
|
||||
public RefactoringActionHandler getExtractClassHandler() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,24 +15,31 @@
|
||||
*/
|
||||
package com.intellij.refactoring.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.LanguageRefactoringSupport;
|
||||
import com.intellij.lang.refactoring.RefactoringSupportProvider;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.RefactoringActionHandler;
|
||||
import com.intellij.refactoring.extractclass.ExtractClassHandler;
|
||||
import com.intellij.refactoring.lang.ElementsHandler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ExtractClassAction extends BaseRefactoringAction{
|
||||
public class ExtractClassAction extends BasePlatformRefactoringAction {
|
||||
|
||||
protected RefactoringActionHandler getHandler(DataContext context){
|
||||
return new ExtractClassHandler();
|
||||
}
|
||||
@Override
|
||||
protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) {
|
||||
return provider.getExtractClassHandler();
|
||||
}
|
||||
|
||||
public boolean isAvailableInEditorOnly(){
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isEnabledOnElements(PsiElement[] elements) {
|
||||
return elements.length == 1 && PsiTreeUtil.getParentOfType(elements[0], PsiClass.class, false) != null;
|
||||
if (elements.length > 0) {
|
||||
final Language language = elements[0].getLanguage();
|
||||
final RefactoringActionHandler handler = getRefactoringHandler(LanguageRefactoringSupport.INSTANCE.forLanguage(language));
|
||||
return handler instanceof ElementsHandler && ((ElementsHandler)handler).isEnabledOnElements(elements);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,6 +282,7 @@
|
||||
<action id="SafeDelete" class="com.intellij.refactoring.actions.SafeDeleteAction"/>
|
||||
<separator/>
|
||||
<action id="ExtractMethod" class="com.intellij.refactoring.actions.ExtractMethodAction"/>
|
||||
<action id="ExtractClass" class="com.intellij.refactoring.actions.ExtractClassAction"/>
|
||||
<action id="IntroduceVariable" class="com.intellij.refactoring.actions.IntroduceVariableAction"/>
|
||||
<action id="IntroduceConstant" class="com.intellij.refactoring.actions.IntroduceConstantAction"/>
|
||||
<action id="IntroduceField" class="com.intellij.refactoring.actions.IntroduceFieldAction"/>
|
||||
|
||||
@@ -186,10 +186,6 @@
|
||||
<add-to-group group-id="RefactoringMenu" anchor="after" relative-to-action="ExtractMethod"/>
|
||||
</action>
|
||||
|
||||
<action id="ExtractClass" class="com.intellij.refactoring.actions.ExtractClassAction">
|
||||
<add-to-group group-id="RefactoringMenu" anchor="after" relative-to-action="ReplaceMethodWithMethodObject"/>
|
||||
</action>
|
||||
|
||||
<group id="BuildMenu" popup="true">
|
||||
<action id="CompileDirty" class="com.intellij.compiler.actions.CompileDirtyAction" icon="/actions/compile.png"/>
|
||||
<action id="MakeModule" class="com.intellij.compiler.actions.MakeModuleAction"/>
|
||||
|
||||
Reference in New Issue
Block a user