Skip to content

Commit 9be3aa5

Browse files
Additional interface added for resolver fix
1 parent 202e579 commit 9be3aa5

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

src/com/magento/idea/magento2plugin/inspections/php/fix/PhpImplementResolverClassQuickFix.java

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,57 @@
77

88
import com.intellij.codeInspection.LocalQuickFix;
99
import com.intellij.codeInspection.ProblemDescriptor;
10+
import com.intellij.openapi.command.WriteCommandAction;
1011
import com.intellij.openapi.project.Project;
12+
import com.intellij.openapi.ui.DialogBuilder;
1113
import com.intellij.psi.PsiElement;
1214
import com.jetbrains.php.lang.psi.PhpPsiElementFactory;
1315
import com.jetbrains.php.lang.psi.elements.PhpClass;
1416
import com.magento.idea.magento2plugin.magento.files.GraphQlResolver;
1517
import org.jetbrains.annotations.NotNull;
18+
import javax.swing.*;
1619

1720
public class PhpImplementResolverClassQuickFix implements LocalQuickFix {
21+
public static final String FAMILY_NAME = "Implements Resolver interface";
22+
public static final String DIALOG_TITLE = "Select one of the following interface";
1823
@NotNull
1924
@Override
2025
public String getFamilyName() {
21-
return "Implements Resolver interface";
26+
return FAMILY_NAME;
2227
}
2328

2429
@Override
2530
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
26-
PsiElement correctInterface = PhpPsiElementFactory.createImplementsList(project, GraphQlResolver.RESOLVER_INTERFACE);
27-
PhpClass graphQlResolverClass = (PhpClass) descriptor.getPsiElement().getParent();
28-
graphQlResolverClass.getImplementsList().replace(correctInterface);
31+
String[] expectedInterface = { GraphQlResolver.BATCH_RESOLVER_INTERFACE,
32+
GraphQlResolver.BATCH_SERVICE_CONTRACT_RESOLVER_INTERFACE,
33+
GraphQlResolver.RESOLVER_INTERFACE
34+
};
35+
final JComboBox expectedInterfaceDropdown = new JComboBox(expectedInterface);
36+
DialogBuilder dialogBox = createDialogBox(expectedInterfaceDropdown, project);
37+
if (dialogBox.showAndGet()) {
38+
String getSelectedInterface = expectedInterfaceDropdown.getSelectedItem().toString();
39+
PsiElement correctInterface = PhpPsiElementFactory.createImplementsList(project, getSelectedInterface);
40+
PhpClass graphQlResolverClass = (PhpClass) descriptor.getPsiElement().getParent();
41+
WriteCommandAction.writeCommandAction(project).run(() -> {
42+
graphQlResolverClass.getImplementsList().replace(correctInterface);
43+
});
44+
}
45+
}
46+
47+
private DialogBuilder createDialogBox(JComboBox selectedClass, Project project)
48+
{
49+
JPanel panel = new JPanel();
50+
panel.add(selectedClass);
51+
DialogBuilder builder = new DialogBuilder(project);
52+
builder.setTitle(DIALOG_TITLE);
53+
builder.setCenterPanel(panel);
54+
builder.addOkAction();
55+
builder.addCancelAction();
56+
return builder;
57+
}
58+
59+
@Override
60+
public boolean startInWriteAction() {
61+
return false;
2962
}
3063
}

src/com/magento/idea/magento2plugin/magento/files/GraphQlResolver.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@
66

77
public class GraphQlResolver {
88
public static final String RESOLVER_INTERFACE = "\\Magento\\Framework\\GraphQl\\Query\\ResolverInterface";
9+
public static final String BATCH_RESOLVER_INTERFACE = "\\Magento\\Framework\\GraphQl\\Query\\Resolver\\BatchResolverInterface";
10+
public static final String BATCH_SERVICE_CONTRACT_RESOLVER_INTERFACE = "\\Magento\\Framework\\GraphQl\\Query\\Resolver\\BatchServiceContractResolverInterface";
911
public static final String CLASS_ARGUMENT = "class";
1012
}

0 commit comments

Comments
 (0)