Skip to content

Commit e1d1549

Browse files
author
Vitaliy Boyko
committed
Added menu, controller and layout to a grid
1 parent 6ad2227 commit e1d1549

File tree

10 files changed

+688
-180
lines changed

10 files changed

+688
-180
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc/menu.xsd">
3+
<menu>
4+
</menu>
5+
</config>

resources/fileTemplates/internal/Magento Menu Xml.xml.html

Whitespace-only changes.

src/com/magento/idea/magento2plugin/actions/generation/data/LayoutXmlData.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class LayoutXmlData {
1111
private final String moduleName;
1212
private final String controllerName;
1313
private final String actionName;
14-
private final String formName;
14+
private final String uiComponentName;
1515

1616
/**
1717
* Layout XML data.
@@ -21,22 +21,22 @@ public class LayoutXmlData {
2121
* @param moduleName String
2222
* @param controllerName String
2323
* @param actionName String
24-
* @param formName String
24+
* @param uiComponentName String
2525
*/
2626
public LayoutXmlData(
2727
final String area,
2828
final String route,
2929
final String moduleName,
3030
final String controllerName,
3131
final String actionName,
32-
final String formName
32+
final String uiComponentName
3333
) {
3434
this.area = area;
3535
this.route = route;
3636
this.moduleName = moduleName;
3737
this.controllerName = controllerName;
3838
this.actionName = actionName;
39-
this.formName = formName;
39+
this.uiComponentName = uiComponentName;
4040
}
4141

4242
public String getArea() {
@@ -59,7 +59,7 @@ public String getActionName() {
5959
return actionName;
6060
}
6161

62-
public String getFormName() {
63-
return formName;
62+
public String getUiComponentName() {
63+
return uiComponentName;
6464
}
6565
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
package com.magento.idea.magento2plugin.actions.generation.data;
7+
8+
public class MenuXmlData {
9+
10+
private final String parentMenuItem;
11+
private final String sortOrder;
12+
private final String moduleName;
13+
private final String menuIdentifier;
14+
private final String title;
15+
private final String acl;
16+
private final String action;
17+
18+
/**
19+
* Menu XML Data.
20+
*
21+
* @param parentMenuItem String
22+
* @param sortOrder String
23+
* @param moduleName String
24+
* @param menuIdentifier String
25+
* @param title String
26+
*/
27+
public MenuXmlData(
28+
final String parentMenuItem,
29+
final String sortOrder,
30+
final String moduleName,
31+
final String menuIdentifier,
32+
final String title,
33+
final String acl,
34+
final String action
35+
) {
36+
this.parentMenuItem = parentMenuItem;
37+
this.sortOrder = sortOrder;
38+
this.moduleName = moduleName;
39+
this.menuIdentifier = menuIdentifier;
40+
this.title = title;
41+
this.acl = acl;
42+
this.action = action;
43+
}
44+
45+
public String getParentMenuItem() {
46+
return parentMenuItem;
47+
}
48+
49+
public String getSortOrder() {
50+
return sortOrder;
51+
}
52+
53+
public String getModuleName() {
54+
return moduleName;
55+
}
56+
57+
public String getMenuIdentifier() {
58+
return menuIdentifier;
59+
}
60+
61+
public String getTitle() {
62+
return title;
63+
}
64+
65+
public String getAcl() {
66+
return acl;
67+
}
68+
69+
public String getAction() {
70+
return action;
71+
}
72+
}

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

Lines changed: 292 additions & 163 deletions
Large diffs are not rendered by default.

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

Lines changed: 114 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,28 @@
77

88
import com.intellij.openapi.project.Project;
99
import com.intellij.psi.PsiDirectory;
10+
import com.intellij.psi.PsiFile;
1011
import com.jetbrains.php.lang.psi.elements.PhpClass;
12+
import com.magento.idea.magento2plugin.actions.generation.NewUiComponentFormAction;
1113
import com.magento.idea.magento2plugin.actions.generation.NewUiComponentGridAction;
14+
import com.magento.idea.magento2plugin.actions.generation.data.ControllerFileData;
15+
import com.magento.idea.magento2plugin.actions.generation.data.LayoutXmlData;
16+
import com.magento.idea.magento2plugin.actions.generation.data.MenuXmlData;
1217
import com.magento.idea.magento2plugin.actions.generation.data.UiComponentDataProviderData;
1318
import com.magento.idea.magento2plugin.actions.generation.data.UiComponentGridData;
1419
import com.magento.idea.magento2plugin.actions.generation.data.UiComponentGridToolbarData;
1520
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.NewUiComponentGridDialogValidator;
21+
import com.magento.idea.magento2plugin.actions.generation.generator.LayoutXmlGenerator;
22+
import com.magento.idea.magento2plugin.actions.generation.generator.MenuXmlGenerator;
23+
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleControllerClassGenerator;
1624
import com.magento.idea.magento2plugin.actions.generation.generator.UiComponentDataProviderGenerator;
1725
import com.magento.idea.magento2plugin.actions.generation.generator.UiComponentGridXmlGenerator;
26+
import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder;
27+
import com.magento.idea.magento2plugin.magento.files.ControllerBackendPhp;
1828
import com.magento.idea.magento2plugin.magento.files.UiComponentDataProviderPhp;
1929
import com.magento.idea.magento2plugin.magento.packages.Areas;
2030
import com.magento.idea.magento2plugin.magento.packages.File;
31+
import com.magento.idea.magento2plugin.magento.packages.HttpMethod;
2132
import com.magento.idea.magento2plugin.magento.packages.Package;
2233
import com.magento.idea.magento2plugin.ui.FilteredComboBox;
2334
import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil;
@@ -28,13 +39,7 @@
2839
import java.util.ArrayList;
2940
import java.util.Arrays;
3041
import java.util.List;
31-
import javax.swing.JButton;
32-
import javax.swing.JCheckBox;
33-
import javax.swing.JComponent;
34-
import javax.swing.JLabel;
35-
import javax.swing.JPanel;
36-
import javax.swing.JTextField;
37-
import javax.swing.KeyStroke;
42+
import javax.swing.*;
3843

3944
@SuppressWarnings({"PMD.TooManyFields", "PMD.ExcessiveImports", "PMD.UnusedPrivateMethod"})
4045
public class NewUiComponentGridDialog extends AbstractDialog {
@@ -60,6 +65,20 @@ public class NewUiComponentGridDialog extends AbstractDialog {
6065
private JTextField dataProviderParentDirectory;
6166
private JTextField acl;
6267
private JLabel aclLabel;
68+
private JLabel routeLabel;
69+
private JLabel controllerLabel;
70+
private JLabel actionLabel;
71+
private JTextField route;
72+
private JTextField controllerName;
73+
private JTextField actionName;
74+
private JComboBox parentMenuItem;
75+
private JLabel parentMenuItemLabel;
76+
private JTextField sortOrder;
77+
private JTextField menuIdentifier;
78+
private JLabel sortOrderLabel;
79+
private JLabel menuIdentifierLabel;
80+
private JTextField menuTitle;
81+
private JLabel menuTitleLabel;
6382
private JLabel collectionLabel;
6483

6584
/**
@@ -171,7 +190,10 @@ private void onOK() {
171190
return;
172191
}
173192

174-
generateFile();
193+
generateViewControllerFile();
194+
generateLayoutFile();
195+
generateMenuFile();
196+
generateUiComponentFile();
175197
this.setVisible(false);
176198
}
177199

@@ -185,7 +207,7 @@ private void addActionListeners() {
185207
dataProviderType.addActionListener(event -> onDataProviderTypeChange());
186208
}
187209

188-
private void generateFile() {
210+
private void generateUiComponentFile() {
189211
final UiComponentDataProviderGenerator dataProviderGenerator;
190212
dataProviderGenerator = new UiComponentDataProviderGenerator(
191213
getGridDataProviderData(),
@@ -200,6 +222,47 @@ private void generateFile() {
200222
gridXmlGenerator.generate(NewUiComponentGridAction.ACTION_NAME, true);
201223
}
202224

225+
private PsiFile generateViewControllerFile() {
226+
final NamespaceBuilder namespace = new NamespaceBuilder(
227+
getModuleName(),
228+
getActionName(),
229+
getControllerDirectory()
230+
);
231+
return new ModuleControllerClassGenerator(new ControllerFileData(
232+
getControllerDirectory(),
233+
getActionName(),
234+
getModuleName(),
235+
getArea(),
236+
HttpMethod.GET.toString(),
237+
getAcl(),
238+
true,
239+
namespace.getNamespace()
240+
), project).generate(NewUiComponentFormAction.ACTION_NAME, false);
241+
}
242+
243+
private PsiFile generateLayoutFile() {
244+
return new LayoutXmlGenerator(new LayoutXmlData(
245+
getArea(),
246+
getRoute(),
247+
getModuleName(),
248+
getControllerName(),
249+
getActionName(),
250+
getUiComponentName()
251+
), project).generate(NewUiComponentFormAction.ACTION_NAME, false);
252+
}
253+
254+
private PsiFile generateMenuFile() {
255+
return new MenuXmlGenerator(new MenuXmlData(
256+
getParentMenuItem(),
257+
getSortOrder(),
258+
getModuleName(),
259+
getMenuIdentifier(),
260+
getMenuTitle(),
261+
getAcl(),
262+
getMenuAction()
263+
), project).generate(NewUiComponentFormAction.ACTION_NAME, false);
264+
}
265+
203266
private String getModuleName() {
204267
return moduleName;
205268
}
@@ -362,4 +425,46 @@ private String getDataProviderClass() {
362425
private String getDataProviderDirectory() {
363426
return dataProviderParentDirectory.getText().trim();
364427
}
428+
429+
public String getActionName() {
430+
return actionName.getText().trim();
431+
}
432+
433+
private String getControllerDirectory() {
434+
final String directory = ControllerBackendPhp.DEFAULT_DIR;
435+
436+
return directory + File.separator + getControllerName();
437+
}
438+
439+
public String getControllerName() {
440+
return controllerName.getText().trim();
441+
}
442+
443+
public String getRoute() {
444+
return route.getText().trim();
445+
}
446+
447+
private String getParentMenuItem() {
448+
return parentMenuItem.getSelectedItem().toString();
449+
}
450+
451+
public String getSortOrder() {
452+
return sortOrder.getText().trim();
453+
}
454+
455+
public String getMenuIdentifier() {
456+
return menuIdentifier.getText().trim();
457+
}
458+
459+
private String getMenuAction() {
460+
return getRoute()
461+
+ File.separator
462+
+ getControllerName().toLowerCase()
463+
+ File.separator
464+
+ getActionName().toLowerCase();
465+
}
466+
467+
public String getMenuTitle() {
468+
return menuTitle.getText().trim();
469+
}
365470
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public PsiFile generate(final String actionName) {
8686
for (final XmlTag uiComponent: uiComponents) {
8787
@Nullable final XmlAttribute uiComponentName
8888
= uiComponent.getAttribute(LayoutXml.NAME_ATTRIBUTE);
89-
if (uiComponentName.getValue().equals(layoutXmlData.getFormName())) {
89+
if (uiComponentName.getValue().equals(layoutXmlData.getUiComponentName())) {
9090
isDeclared = true;
9191
}
9292
}
@@ -115,7 +115,7 @@ public PsiFile generate(final String actionName) {
115115
null,
116116
false
117117
);
118-
uiComponentTag.setAttribute(LayoutXml.NAME_ATTRIBUTE, layoutXmlData.getFormName());
118+
uiComponentTag.setAttribute(LayoutXml.NAME_ATTRIBUTE, layoutXmlData.getUiComponentName());
119119
contentContainer.addSubTag(uiComponentTag, false);
120120

121121
if (contentContainerIsGenerated) {

0 commit comments

Comments
 (0)