use of com.intellij.refactoring.changeSignature.ChangeSignatureHandler in project intellij-community by JetBrains.
the class ChangeSignatureAction method findTargetMember.
@Nullable
private static PsiElement findTargetMember(@Nullable PsiElement element) {
if (element == null)
return null;
final ChangeSignatureHandler fileHandler = getChangeSignatureHandler(element.getLanguage());
if (fileHandler != null) {
final PsiElement targetMember = fileHandler.findTargetMember(element);
if (targetMember != null)
return targetMember;
}
PsiReference reference = element.getReference();
if (reference == null && element instanceof PsiNameIdentifierOwner) {
return element;
}
if (reference != null) {
return reference.resolve();
}
return null;
}
use of com.intellij.refactoring.changeSignature.ChangeSignatureHandler in project intellij-community by JetBrains.
the class ChangeSignatureAction method isAvailableOnElementInEditorAndFile.
@Override
protected boolean isAvailableOnElementInEditorAndFile(@NotNull final PsiElement element, @NotNull final Editor editor, @NotNull PsiFile file, @NotNull DataContext context) {
PsiElement targetMember = findTargetMember(element);
if (targetMember == null) {
final ChangeSignatureHandler targetHandler = getChangeSignatureHandler(file.getLanguage());
if (targetHandler != null) {
return true;
}
return false;
}
final ChangeSignatureHandler targetHandler = getChangeSignatureHandler(targetMember.getLanguage());
if (targetHandler == null)
return false;
return true;
}
use of com.intellij.refactoring.changeSignature.ChangeSignatureHandler in project intellij-community by JetBrains.
the class ChangeSignatureAction method getRefactoringHandler.
@Nullable
@Override
protected RefactoringActionHandler getRefactoringHandler(@NotNull RefactoringSupportProvider provider, final PsiElement element) {
abstract class ContextAwareChangeSignatureHandler implements RefactoringActionHandler, ContextAwareActionHandler {
}
return new ContextAwareChangeSignatureHandler() {
@Override
public boolean isAvailableForQuickList(@NotNull Editor editor, @NotNull PsiFile file, @NotNull DataContext dataContext) {
return findTargetMember(element) != null;
}
@Override
public void invoke(@NotNull Project project, Editor editor, PsiFile file, DataContext dataContext) {
editor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE);
final PsiElement targetMember = findTargetMember(element);
if (targetMember == null) {
final ChangeSignatureHandler handler = getChangeSignatureHandler(file.getLanguage());
if (handler != null) {
final String notFoundMessage = handler.getTargetNotFoundMessage();
if (notFoundMessage != null) {
CommonRefactoringUtil.showErrorHint(project, editor, notFoundMessage, ChangeSignatureHandler.REFACTORING_NAME, null);
}
}
return;
}
final ChangeSignatureHandler handler = getChangeSignatureHandler(targetMember.getLanguage());
if (handler == null)
return;
handler.invoke(project, new PsiElement[] { targetMember }, dataContext);
}
@Override
public void invoke(@NotNull Project project, @NotNull PsiElement[] elements, DataContext dataContext) {
if (elements.length != 1)
return;
final PsiElement targetMember = findTargetMember(elements[0]);
if (targetMember == null)
return;
final ChangeSignatureHandler handler = getChangeSignatureHandler(targetMember.getLanguage());
if (handler == null)
return;
handler.invoke(project, new PsiElement[] { targetMember }, dataContext);
}
};
}
Aggregations