@Override protected boolean isAvailable(PsiElement element, Editor editor, PsiFile file) { PsiElement nameSuggestionContext = file.findElementAt(editor.getCaretModel().getOffset()); if (nameSuggestionContext == null && editor.getCaretModel().getOffset() > 0) { nameSuggestionContext = file.findElementAt(editor.getCaretModel().getOffset() - 1); } if (element == null && LookupManager.getActiveLookup(editor) != null) { element = PsiTreeUtil.getParentOfType(nameSuggestionContext, PsiNamedElement.class); } final RefactoringSupportProvider supportProvider = element == null ? null : LanguageRefactoringSupport.INSTANCE.forLanguage(element.getLanguage()); return editor.getSettings().isVariableInplaceRenameEnabled() && supportProvider != null && supportProvider.isMemberInplaceRenameAvailable(element, nameSuggestionContext); }
private void doTest(String newName) { final String testName = getTestName(false); final String beforeName = testName + ".before.py"; final String afterName = testName + ".after.py"; final String dir = "refactoring/extractmethod/"; myFixture.configureByFile(dir + beforeName); final RefactoringSupportProvider provider = LanguageRefactoringSupport.INSTANCE.forLanguage(PythonLanguage.getInstance()); assertNotNull(provider); final RefactoringActionHandler handler = provider.getExtractMethodHandler(); assertNotNull(handler); System.setProperty(PyExtractMethodUtil.NAME, newName); try { refactorUsingHandler(handler); } finally { System.clearProperty(PyExtractMethodUtil.NAME); } myFixture.checkResultByFile(dir + afterName); }
protected boolean isAvailable(PsiElement element, Editor editor, PsiFile file) { final PsiElement nameSuggestionContext = file.findElementAt(editor.getCaretModel().getOffset()); RefactoringSupportProvider supportProvider = element == null ? null : LanguageRefactoringSupport.INSTANCE.forLanguage(element.getLanguage()); return supportProvider != null && editor.getSettings().isVariableInplaceRenameEnabled() && supportProvider.isInplaceRenameAvailable(element, nameSuggestionContext); }
@Nullable protected RefactoringActionHandler getHandler(@NotNull Language language, PsiElement element) { List<RefactoringSupportProvider> providers = LanguageRefactoringSupport.INSTANCE.allForLanguage(language); if (providers.isEmpty()) return null; if (element == null) return getRefactoringHandler(providers.get(0)); for (RefactoringSupportProvider provider : providers) { if (provider.isAvailable(element)) { return getRefactoringHandler(provider, element); } } return null; }
public static boolean isInplace(@NotNull Editor editor, @NotNull PsiElement place) { final RefactoringSupportProvider supportProvider = LanguageRefactoringSupport.INSTANCE.forLanguage(place.getLanguage()); return supportProvider != null && (editor.getUserData(InplaceRefactoring.INTRODUCE_RESTART) == null || !editor.getUserData(InplaceRefactoring.INTRODUCE_RESTART)) && editor.getUserData(AbstractInplaceIntroducer.ACTIVE_INTRODUCE) == null && editor.getSettings().isVariableInplaceRenameEnabled() && supportProvider.isInplaceIntroduceAvailable(place, place) && !ApplicationManager.getApplication().isUnitTestMode(); }
protected boolean isAvailable(PsiElement element, Editor editor, PsiFile file) { final PsiElement nameSuggestionContext = file.findElementAt(editor.getCaretModel().getOffset()); final RefactoringSupportProvider supportProvider = element != null ? LanguageRefactoringSupport.INSTANCE.forLanguage(element.getLanguage()):null; return supportProvider != null && editor.getSettings().isVariableInplaceRenameEnabled() && supportProvider.isInplaceRenameAvailable(element, nameSuggestionContext); }
@Override protected boolean isAvailable(PsiElement element, Editor editor, PsiFile file) { final PsiElement nameSuggestionContext = file.findElementAt(editor.getCaretModel().getOffset()); if (element == null && LookupManager.getActiveLookup(editor) != null) { element = PsiTreeUtil.getParentOfType(nameSuggestionContext, PsiNamedElement.class); } final RefactoringSupportProvider supportProvider = element != null ? LanguageRefactoringSupport.INSTANCE.forLanguage(element.getLanguage()) : null; return editor.getSettings().isVariableInplaceRenameEnabled() && supportProvider != null && supportProvider.isMemberInplaceRenameAvailable(element, nameSuggestionContext); }
@Nullable protected RefactoringActionHandler getHandler(@NotNull Language language, PsiElement element) { List<RefactoringSupportProvider> providers = LanguageRefactoringSupport.INSTANCE.allForLanguage(language); if (providers.isEmpty()) return null; if (element == null && !providers.isEmpty()) return getRefactoringHandler(providers.get(0)); if (element != null) { for (RefactoringSupportProvider provider : providers) { if (provider.isAvailable(element)) { return getRefactoringHandler(provider); } } } return null; }
protected boolean isInplace(GrIntroduceContext context) { final RefactoringSupportProvider supportProvider = LanguageRefactoringSupport.INSTANCE.forLanguage(context.getPlace().getLanguage()); return supportProvider != null && context.getEditor().getSettings().isVariableInplaceRenameEnabled() && supportProvider.isInplaceIntroduceAvailable(context.getPlace(), context.getPlace()) && !ApplicationManager.getApplication().isUnitTestMode(); }
@Override @RequiredReadAction protected boolean isAvailable(PsiElement element, Editor editor, PsiFile file) { final PsiElement nameSuggestionContext = file.findElementAt(editor.getCaretModel().getOffset()); if(element == null && LookupManager.getActiveLookup(editor) != null) { element = PsiTreeUtil.getParentOfType(nameSuggestionContext, PsiNamedElement.class); } final RefactoringSupportProvider supportProvider = element != null ? LanguageRefactoringSupport.INSTANCE.forLanguage(element.getLanguage()) : null; return editor.getSettings().isVariableInplaceRenameEnabled() && supportProvider != null && supportProvider.isMemberInplaceRenameAvailable(element, nameSuggestionContext) && element instanceof CSharpNamedElement; }
@Nullable protected RefactoringActionHandler getHandler(@Nonnull Language language, PsiElement element) { List<RefactoringSupportProvider> providers = LanguageRefactoringSupport.INSTANCE.allForLanguage(language); if (providers.isEmpty()) return null; if (element == null) return getRefactoringHandler(providers.get(0)); for (RefactoringSupportProvider provider : providers) { if (provider.isAvailable(element)) { return getRefactoringHandler(provider, element); } } return null; }
private LanguageRefactoringSupport() { super("com.intellij.lang.refactoringSupport", new RefactoringSupportProvider() {}); }
@Nullable @Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) { return provider.getChangeSignatureHandler(); }
@Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider supportProvider) { return supportProvider.getExtractSuperClassHandler(); }
@Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) { return provider.getIntroduceParameterHandler(); }
@Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) { return provider.getExtractMethodHandler(); }
@Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) { return provider.getIntroduceConstantHandler(); }
@Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider supportProvider) { return supportProvider.getExtractModuleHandler(); }
@Nullable @Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider supportProvider) { return supportProvider.getExtractInterfaceHandler(); }
@Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) { return provider.getPushDownHandler(); }
@Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) { return new InlineRefactoringActionHandler(); }
@Nullable @Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) { return null; }
@Nullable protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider, PsiElement element) { PsiFile file = element.getContainingFile(); if (file == null) return null; return LanguageExtractInclude.INSTANCE.forLanguage(file.getViewProvider().getBaseLanguage()); }
@Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) { return provider.getPullUpHandler(); }
@Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) { return provider.getIntroduceFieldHandler(); }
@Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) { return provider.getIntroduceVariableHandler(); }
@Nullable @Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider, PsiElement element) { return provider.getIntroduceVariableHandler(element); }
@Override public boolean value(RefactoringSupportProvider provider) { return getRefactoringHandler(provider) != null; }
@Override protected boolean isAvailableForLanguage(final Language language) { List<RefactoringSupportProvider> providers = LanguageRefactoringSupport.INSTANCE.allForLanguage(language); return ContainerUtil.find(providers, myCondition) != null; }
@Nullable protected abstract RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider);
@Nullable protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider, PsiElement element) { return getRefactoringHandler(provider); }
@Override protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider) { return provider.getExtractClassHandler(); }
public static boolean validElement(@NotNull PsiElement element) { if (element instanceof PsiFile) return true; if (!element.isPhysical()) return false; final RefactoringSupportProvider provider = LanguageRefactoringSupport.INSTANCE.forLanguage(element.getLanguage()); return provider.isSafeDeleteAvailable(element); }