Skip to content

Commit

Permalink
1175 add action to generate events.xml file to menu
Browse files Browse the repository at this point in the history
  • Loading branch information
SilinMykola committed Sep 14, 2022
1 parent 0be7719 commit 75a6140
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 0 deletions.
1 change: 1 addition & 0 deletions resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
<action id="MagentoCreateCrontabFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewCrontabXmlAction"/>
<action id="MagentoCreateDiFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewDiXmlAction"/>
<action id="MagentoCreateEmailTemplatesFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewEmailTemplatesXmlAction"/>
<action id="MagentoCreateEventsFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewEventsXmlAction"/>
<action id="MagentoCreateExtensionAttributesFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewExtensionAttributesXmlAction"/>
<action id="MagentoCreateFieldsetFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewFieldsetXmlAction"/>
<action id="MagentoCreateIndexerFile" class="com.magento.idea.magento2plugin.actions.context.xml.NewIndexerXmlAction"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

package com.magento.idea.magento2plugin.actions.context.xml;

import com.intellij.ide.fileTemplates.actions.AttributesDefaults;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
import com.magento.idea.magento2plugin.actions.context.AbstractContextAction;
import com.magento.idea.magento2plugin.magento.files.ModuleEventsXml;
import com.magento.idea.magento2plugin.magento.packages.Areas;
import com.magento.idea.magento2plugin.magento.packages.ComponentType;
import com.magento.idea.magento2plugin.magento.packages.Package;
import com.magento.idea.magento2plugin.util.magento.GetMagentoModuleUtil;
import java.util.Arrays;
import java.util.List;
import org.jetbrains.annotations.NotNull;

public class NewEventsXmlAction extends AbstractContextAction {

public static final String ACTION_NAME = "Magento 2 Events Observer File";
public static final String ACTION_DESCRIPTION = "Create a new Magento 2 events.xml file";

/**
* New events.xml file generation action constructor.
*/
public NewEventsXmlAction() {
super(ACTION_NAME, ACTION_DESCRIPTION, new ModuleEventsXml());
}

@Override
protected boolean isVisible(
final @NotNull GetMagentoModuleUtil.MagentoModuleData moduleData,
final PsiDirectory targetDirectory,
final PsiFile targetFile
) {
final PsiDirectory configDir = moduleData.getConfigDir();
final PsiDirectory globalScopeDir = getGlobalScopeDir(targetDirectory);

if (configDir == null || globalScopeDir == null) {
return false;
}

final List<String> allowedDirectories = Arrays.asList(
Package.moduleBaseAreaDir,
Areas.adminhtml.toString(),
Areas.crontab.toString(),
Areas.frontend.toString(),
Areas.graphql.toString(),
Areas.webapi_rest.toString(),
Areas.webapi_soap.toString()
);

return allowedDirectories.contains(targetDirectory.getName())
&& globalScopeDir.equals(configDir)
&& moduleData.getType().equals(ComponentType.module);
}

@Override
protected AttributesDefaults getProperties(
final @NotNull AttributesDefaults defaults,
final @NotNull GetMagentoModuleUtil.MagentoModuleData moduleData,
final PsiDirectory targetDirectory,
final PsiFile targetFile
) {
return defaults;
}
}

0 comments on commit 75a6140

Please sign in to comment.