Skip to content

Commit 2358c15

Browse files
author
Vitaliy Boyko
committed
Adjusted menu generator
1 parent 4ba6e80 commit 2358c15

File tree

4 files changed

+55
-23
lines changed

4 files changed

+55
-23
lines changed

src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.form

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -372,12 +372,6 @@
372372
<text value="Menu Identifier"/>
373373
</properties>
374374
</component>
375-
<component id="827d5" class="javax.swing.JComboBox" binding="parentMenuItem">
376-
<constraints>
377-
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="1" indent="0" use-parent-layout="false"/>
378-
</constraints>
379-
<properties/>
380-
</component>
381375
<component id="ec0f7" class="javax.swing.JTextField" binding="sortOrder">
382376
<constraints>
383377
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
@@ -410,6 +404,12 @@
410404
</constraints>
411405
<properties/>
412406
</component>
407+
<component id="bc5f8" class="com.magento.idea.magento2plugin.ui.FilteredComboBox" binding="parentMenu" custom-create="true">
408+
<constraints>
409+
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="0" indent="0" use-parent-layout="false"/>
410+
</constraints>
411+
<properties/>
412+
</component>
413413
</children>
414414
</grid>
415415
</children>

src/com/magento/idea/magento2plugin/actions/generation/dialog/NewUiComponentGridDialog.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.intellij.openapi.project.Project;
99
import com.intellij.psi.PsiDirectory;
1010
import com.intellij.psi.PsiFile;
11+
import com.intellij.util.indexing.FileBasedIndex;
1112
import com.jetbrains.php.lang.psi.elements.PhpClass;
1213
import com.magento.idea.magento2plugin.actions.generation.NewUiComponentFormAction;
1314
import com.magento.idea.magento2plugin.actions.generation.NewUiComponentGridAction;
@@ -24,20 +25,26 @@
2425
import com.magento.idea.magento2plugin.actions.generation.generator.UiComponentDataProviderGenerator;
2526
import com.magento.idea.magento2plugin.actions.generation.generator.UiComponentGridXmlGenerator;
2627
import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder;
28+
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
2729
import com.magento.idea.magento2plugin.magento.files.ControllerBackendPhp;
2830
import com.magento.idea.magento2plugin.magento.files.UiComponentDataProviderPhp;
2931
import com.magento.idea.magento2plugin.magento.packages.Areas;
3032
import com.magento.idea.magento2plugin.magento.packages.File;
3133
import com.magento.idea.magento2plugin.magento.packages.HttpMethod;
3234
import com.magento.idea.magento2plugin.magento.packages.Package;
35+
import com.magento.idea.magento2plugin.stubs.indexes.xml.MenuIndex;
3336
import com.magento.idea.magento2plugin.ui.FilteredComboBox;
3437
import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil;
3538
import com.magento.idea.magento2plugin.util.magento.GetResourceCollections;
39+
import org.jetbrains.annotations.NotNull;
40+
3641
import java.awt.event.KeyEvent;
3742
import java.awt.event.WindowAdapter;
3843
import java.awt.event.WindowEvent;
3944
import java.util.ArrayList;
4045
import java.util.Arrays;
46+
import java.util.Collection;
47+
import java.util.Collections;
4148
import java.util.List;
4249
import javax.swing.*;
4350

@@ -71,14 +78,14 @@ public class NewUiComponentGridDialog extends AbstractDialog {
7178
private JTextField route;
7279
private JTextField controllerName;
7380
private JTextField actionName;
74-
private JComboBox parentMenuItem;
7581
private JLabel parentMenuItemLabel;
7682
private JTextField sortOrder;
7783
private JTextField menuIdentifier;
7884
private JLabel sortOrderLabel;
7985
private JLabel menuIdentifierLabel;
8086
private JTextField menuTitle;
8187
private JLabel menuTitleLabel;
88+
private FilteredComboBox parentMenu;
8289
private JLabel collectionLabel;
8390

8491
/**
@@ -118,6 +125,7 @@ public void windowClosing(final WindowEvent event) {
118125
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
119126
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
120127
);
128+
menuIdentifier.setText(getModuleName() + "::listing");
121129
}
122130

123131
/**
@@ -297,6 +305,16 @@ private void createUIComponents() {
297305
this.collection = new FilteredComboBox(getCollectionOptions());
298306
this.dataProviderType = new FilteredComboBox(getProviderTypeOptions());
299307
this.areaSelect = new FilteredComboBox(getAreaOptions());
308+
this.parentMenu = new FilteredComboBox(getMenuReferences());
309+
}
310+
311+
@NotNull
312+
private ArrayList<String> getMenuReferences() {
313+
final Collection<String> menuReferences
314+
= FileBasedIndex.getInstance().getAllKeys(MenuIndex.KEY, project);
315+
ArrayList<String> menuReferencesList = new ArrayList<>(menuReferences);
316+
Collections.sort(menuReferencesList);
317+
return menuReferencesList;
300318
}
301319

302320
private List<String> getCollectionOptions() {
@@ -445,7 +463,7 @@ public String getRoute() {
445463
}
446464

447465
private String getParentMenuItem() {
448-
return parentMenuItem.getSelectedItem().toString();
466+
return parentMenu.getSelectedItem().toString();
449467
}
450468

451469
public String getSortOrder() {

src/com/magento/idea/magento2plugin/actions/generation/generator/MenuXmlGenerator.java

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
import com.intellij.psi.xml.XmlTag;
1616
import com.magento.idea.magento2plugin.actions.generation.data.MenuXmlData;
1717
import com.magento.idea.magento2plugin.actions.generation.generator.util.FindOrCreateMenuXml;
18+
import com.magento.idea.magento2plugin.magento.files.ModuleMenuXml;
19+
import java.util.Properties;
1820
import org.jetbrains.annotations.NotNull;
1921
import org.jetbrains.annotations.Nullable;
2022

21-
import java.util.Properties;
22-
2323
public class MenuXmlGenerator extends FileGenerator {
2424
private final MenuXmlData menuXmlData;
2525
private final Project project;
@@ -61,31 +61,38 @@ public PsiFile generate(final String actionName) {
6161
if (rootTag == null) {
6262
return;
6363
}
64-
XmlTag menuTag = rootTag.findFirstSubTag("menu");
64+
XmlTag menuTag = rootTag.findFirstSubTag(ModuleMenuXml.menuTag);
6565
boolean menuTagIsGenerated = false;
6666
if (menuTag == null) {
6767
menuTagIsGenerated = true;
68-
menuTag = rootTag.createChildTag("menu", null, "", false);
68+
menuTag = rootTag.createChildTag(ModuleMenuXml.menuTag, null, "", false);
6969
}
70-
@NotNull final XmlTag[] buttonsTags = menuTag.findSubTags("add");
70+
@NotNull final XmlTag[] buttonsTags = menuTag.findSubTags(ModuleMenuXml.addTag);
7171
boolean isDeclared = false;
7272
for (final XmlTag buttonsTag: buttonsTags) {
73-
@Nullable final XmlAttribute frontName = buttonsTag.getAttribute("id");
73+
@Nullable final XmlAttribute frontName =
74+
buttonsTag.getAttribute(ModuleMenuXml.idTagAttribute);
7475
if (frontName.getValue().equals(menuXmlData.getMenuIdentifier())) {
7576
isDeclared = true;
7677
}
7778
}
7879

7980
if (!isDeclared) {
80-
final XmlTag addTag = menuTag.createChildTag("add", null, "", false);
81-
addTag.setAttribute("id", menuXmlData.getMenuIdentifier());
82-
addTag.setAttribute("sortOrder", menuXmlData.getSortOrder());
83-
addTag.setAttribute("title", menuXmlData.getTitle());
84-
addTag.setAttribute("module", menuXmlData.getModuleName());
85-
addTag.setAttribute("parent", menuXmlData.getParentMenuItem());
86-
addTag.setAttribute("resource", menuXmlData.getAcl());
87-
addTag.setAttribute("translate", "title");
88-
addTag.setAttribute("action", menuXmlData.getAction());
81+
final XmlTag addTag = menuTag.createChildTag(ModuleMenuXml.addTag, null, "", false);
82+
addTag.setAttribute(ModuleMenuXml.idTagAttribute, menuXmlData.getMenuIdentifier());
83+
addTag.setAttribute(
84+
ModuleMenuXml.sortOrderTagAttribute,
85+
menuXmlData.getSortOrder()
86+
);
87+
addTag.setAttribute(ModuleMenuXml.titleTagAttribute, menuXmlData.getTitle());
88+
addTag.setAttribute(ModuleMenuXml.moduleTagAttribute, menuXmlData.getModuleName());
89+
addTag.setAttribute(
90+
ModuleMenuXml.parentTagAttribute,
91+
menuXmlData.getParentMenuItem()
92+
);
93+
addTag.setAttribute(ModuleMenuXml.resourceTagAttribute, menuXmlData.getAcl());
94+
addTag.setAttribute(ModuleMenuXml.translateTagAttribute, "title");
95+
addTag.setAttribute(ModuleMenuXml.actionTagAttribute, menuXmlData.getAction());
8996

9097
menuTag.addSubTag(addTag, false);
9198

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ public class ModuleMenuXml implements ModuleFileInterface {
1414
public static String addTag = "add";
1515
public static String idTagAttribute = "id";
1616
public static String parentTagAttribute = "parent";
17+
public static String sortOrderTagAttribute = "sortOrder";
18+
public static String titleTagAttribute = "title";
19+
public static String moduleTagAttribute = "module";
20+
public static String resourceTagAttribute = "resource";
21+
public static String translateTagAttribute = "translate";
22+
public static String actionTagAttribute = "action";
23+
1724
public static String template = "Magento Module Xml";
1825

1926
@Override

0 commit comments

Comments
 (0)