mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
find usages and implementations should start in a transaction
This commit is contained in:
@@ -20,9 +20,9 @@ import com.intellij.find.FindBundle;
|
||||
import com.intellij.ide.util.SuperMethodWarningUtil;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.TransactionGuard;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.VariableKind;
|
||||
@@ -90,6 +90,7 @@ public class JavaFindUsagesHandler extends FindUsagesHandler{
|
||||
}
|
||||
|
||||
private static boolean askWhetherShouldSearchForParameterInOverridingMethods(@NotNull PsiElement psiElement, @NotNull PsiParameter parameter) {
|
||||
assertInTransaction();
|
||||
return Messages.showOkCancelDialog(psiElement.getProject(),
|
||||
FindBundle.message("find.parameter.usages.in.overriding.methods.prompt", parameter.getName()),
|
||||
FindBundle.message("find.parameter.usages.in.overriding.methods.title"),
|
||||
@@ -164,12 +165,7 @@ public class JavaFindUsagesHandler extends FindUsagesHandler{
|
||||
accessors.addAll(PropertyUtil.getAccessors(containingClass, fieldName));
|
||||
if (!accessors.isEmpty()) {
|
||||
boolean containsPhysical = ContainerUtil.find(accessors, psiMethod -> psiMethod.isPhysical()) != null;
|
||||
final boolean doSearch = !containsPhysical ||
|
||||
Messages.showOkCancelDialog(FindBundle.message("find.field.accessors.prompt", fieldName),
|
||||
FindBundle.message("find.field.accessors.title"),
|
||||
CommonBundle.getYesButtonText(),
|
||||
CommonBundle.getNoButtonText(), Messages.getQuestionIcon()) ==
|
||||
Messages.OK;
|
||||
final boolean doSearch = !containsPhysical || askShouldSearchAccessors(fieldName);
|
||||
if (doSearch) {
|
||||
final Set<PsiElement> elements = new THashSet<>();
|
||||
for (PsiMethod accessor : accessors) {
|
||||
@@ -183,6 +179,18 @@ public class JavaFindUsagesHandler extends FindUsagesHandler{
|
||||
return super.getSecondaryElements();
|
||||
}
|
||||
|
||||
private static boolean askShouldSearchAccessors(String fieldName) {
|
||||
assertInTransaction();
|
||||
return Messages.showOkCancelDialog(FindBundle.message("find.field.accessors.prompt", fieldName),
|
||||
FindBundle.message("find.field.accessors.title"),
|
||||
CommonBundle.getYesButtonText(),
|
||||
CommonBundle.getNoButtonText(), Messages.getQuestionIcon()) == Messages.OK;
|
||||
}
|
||||
|
||||
private static void assertInTransaction() {
|
||||
LOG.assertTrue(TransactionGuard.getInstance().getContextTransaction() != null, "Find Usages should be shown in a transaction, see AnAction#startInTransaction");
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public FindUsagesOptions getFindUsagesOptions(@Nullable final DataContext dataContext) {
|
||||
|
||||
Reference in New Issue
Block a user