From 85b61b612b13a05b8ab47d1e31523f296535b9f8 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Sun, 23 Jan 2022 14:51:41 +0200 Subject: [PATCH 1/3] 853: Code refactoring --- .../generation/CreateAnObserverAction.java | 61 +++++++++++-------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java b/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java index 0253d897f..3d1347ada 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java @@ -28,6 +28,7 @@ import org.jetbrains.annotations.NotNull; public class CreateAnObserverAction extends DumbAwareAction { + public static final String ACTION_NAME = "Create a new Observer for this event"; public static final String ACTION_DESCRIPTION = "Create a new Magento 2 Observer"; public String targetEvent; @@ -40,19 +41,24 @@ public CreateAnObserverAction() { * Updates the state of action. */ @Override - public void update(final AnActionEvent event) { + public void update(final @NotNull AnActionEvent event) { final Project project = event.getData(PlatformDataKeys.PROJECT); + if (project == null) { + return; + } + if (!Settings.isEnabled(project)) { this.setStatus(event, false); return; } final PsiFile psiFile = event.getData(PlatformDataKeys.PSI_FILE); + if (!(psiFile instanceof PhpFile)) { this.setStatus(event, false); return; } - final PsiElement element = getElement(event); + if (element == null) { this.setStatus(event, false); return; @@ -67,21 +73,36 @@ public void update(final AnActionEvent event) { this.setStatus(event, false); } - private PsiElement getElement(@NotNull final AnActionEvent event) { + @Override + public void actionPerformed(final @NotNull AnActionEvent event) { + if (event.getProject() == null) { + return; + } + CreateAnObserverDialog.open(event.getProject(), this.targetEvent); + } + + @Override + public boolean isDumbAware() { + return false; + } + + private PsiElement getElement(final @NotNull AnActionEvent event) { final Caret caret = event.getData(PlatformDataKeys.CARET); + if (caret == null) { return null; } - final int offset = caret.getOffset(); final PsiFile psiFile = event.getData(PlatformDataKeys.PSI_FILE); - final PsiElement element = psiFile.findElementAt(offset); - if (element == null) { + + if (psiFile == null) { return null; } - return element; + final int offset = caret.getOffset(); + + return psiFile.findElementAt(offset); } - private boolean isObserverEventNameClicked(@NotNull final PsiElement element) { + private boolean isObserverEventNameClicked(final @NotNull PsiElement element) { return checkIsElementStringLiteral(element) && checkIsParametersList(element.getParent().getParent()) && checkIsMethodReference(element.getParent().getParent().getParent()) @@ -90,11 +111,11 @@ && checkIsEventDispatchMethod( ); } - private boolean checkIsParametersList(@NotNull final PsiElement element) { + private boolean checkIsParametersList(final @NotNull PsiElement element) { return element instanceof ParameterList; } - private boolean checkIsMethodReference(@NotNull final PsiElement element) { + private boolean checkIsMethodReference(final @NotNull PsiElement element) { return element instanceof MethodReference; } @@ -107,7 +128,7 @@ private boolean checkIsEventDispatchMethod(final MethodReference element) { if (!(method instanceof Method)) { return false; } - if (!((Method) method).getName().equals(Observer.DISPATCH_METHOD)) { + if (!Observer.DISPATCH_METHOD.equals(((Method) method).getName())) { return false; } final PsiElement phpClass = method.getParent(); @@ -115,32 +136,22 @@ private boolean checkIsEventDispatchMethod(final MethodReference element) { return false; } final String fqn = ((PhpClass) phpClass).getPresentableFQN(); - return fqn.equals(Observer.INTERFACE); + return Observer.INTERFACE.equals(fqn); } - private boolean checkIsElementStringLiteral(@NotNull final PsiElement element) { + private boolean checkIsElementStringLiteral(final @NotNull PsiElement element) { final ASTNode astNode = element.getNode(); if (astNode == null) { return false; } final IElementType elementType = astNode.getElementType(); - return elementType == PhpTokenTypes.STRING_LITERAL - || elementType == PhpTokenTypes.STRING_LITERAL_SINGLE_QUOTE; + return elementType.equals(PhpTokenTypes.STRING_LITERAL) + || elementType.equals(PhpTokenTypes.STRING_LITERAL_SINGLE_QUOTE); } private void setStatus(final AnActionEvent event, final boolean status) { event.getPresentation().setVisible(status); event.getPresentation().setEnabled(status); } - - @Override - public void actionPerformed(@NotNull final AnActionEvent event) { - CreateAnObserverDialog.open(event.getProject(), this.targetEvent); - } - - @Override - public boolean isDumbAware() { - return false; - } } From 66052dd511981f1d8551409af34b9d57a2459778 Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Sun, 23 Jan 2022 14:58:27 +0200 Subject: [PATCH 2/3] 853: Extended possible observer references fqns --- .../actions/generation/CreateAnObserverAction.java | 5 ++++- .../magento/idea/magento2plugin/magento/files/Observer.java | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java b/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java index 3d1347ada..9b5f0c089 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java @@ -136,7 +136,10 @@ private boolean checkIsEventDispatchMethod(final MethodReference element) { return false; } final String fqn = ((PhpClass) phpClass).getPresentableFQN(); - return Observer.INTERFACE.equals(fqn); + + return Observer.INTERFACE.equals(fqn) + || Observer.IMPLEMENTATION.equals(fqn) + || Observer.ENTITY_IMPL.equals(fqn); } private boolean checkIsElementStringLiteral(final @NotNull PsiElement element) { diff --git a/src/com/magento/idea/magento2plugin/magento/files/Observer.java b/src/com/magento/idea/magento2plugin/magento/files/Observer.java index 22f6dd827..8b8662cc2 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/Observer.java +++ b/src/com/magento/idea/magento2plugin/magento/files/Observer.java @@ -12,6 +12,8 @@ public class Observer implements ModuleFileInterface { private final String fileName; public static final String INTERFACE = "Magento\\Framework\\Event\\ManagerInterface"; + public static final String IMPLEMENTATION = "Magento\\Framework\\Event\\Manager"; + public static final String ENTITY_IMPL = "Magento\\Framework\\EntityManager\\EventManager"; public static final String DISPATCH_METHOD = "dispatch"; public static final String NAME_ATTRIBUTE = "name"; public static final String OBSERVER_EXECUTE_TEMPLATE_NAME = "Magento Observer Execute Method"; From 94601975a0e43d35ee5c1893fff037ba497cfe8a Mon Sep 17 00:00:00 2001 From: bohdan-harniuk Date: Sun, 23 Jan 2022 15:03:24 +0200 Subject: [PATCH 3/3] 853: Extended possible observer references fqns --- .../actions/generation/CreateAnObserverAction.java | 3 ++- .../magento/idea/magento2plugin/magento/files/Observer.java | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java b/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java index 9b5f0c089..238f4dff7 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/CreateAnObserverAction.java @@ -139,7 +139,8 @@ private boolean checkIsEventDispatchMethod(final MethodReference element) { return Observer.INTERFACE.equals(fqn) || Observer.IMPLEMENTATION.equals(fqn) - || Observer.ENTITY_IMPL.equals(fqn); + || Observer.ENTITY_IMPL.equals(fqn) + || Observer.STAGING_IMPL.equals(fqn); } private boolean checkIsElementStringLiteral(final @NotNull PsiElement element) { diff --git a/src/com/magento/idea/magento2plugin/magento/files/Observer.java b/src/com/magento/idea/magento2plugin/magento/files/Observer.java index 8b8662cc2..074582d8a 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/Observer.java +++ b/src/com/magento/idea/magento2plugin/magento/files/Observer.java @@ -14,6 +14,7 @@ public class Observer implements ModuleFileInterface { public static final String INTERFACE = "Magento\\Framework\\Event\\ManagerInterface"; public static final String IMPLEMENTATION = "Magento\\Framework\\Event\\Manager"; public static final String ENTITY_IMPL = "Magento\\Framework\\EntityManager\\EventManager"; + public static final String STAGING_IMPL = "Magento\\Staging\\Model\\Event\\Manager"; public static final String DISPATCH_METHOD = "dispatch"; public static final String NAME_ATTRIBUTE = "name"; public static final String OBSERVER_EXECUTE_TEMPLATE_NAME = "Magento Observer Execute Method";