Skip to content

Commit 1a73c59

Browse files
Changed actions column and edit page buttons generation, added new test case for grid list generation
1 parent 9699581 commit 1a73c59

File tree

23 files changed

+176
-41
lines changed

23 files changed

+176
-41
lines changed

resources/fileTemplates/internal/Magento UI Component Grid XML.xml.ft

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,12 @@
6969
$column
7070
#end
7171
#end
72+
#if (${ACTION_COLUMN})
7273
<actionsColumn name="actions" class="${ACTION_COLUMN}">
7374
<settings>
7475
<indexField>${ID_FIELD_NAME}</indexField>
7576
</settings>
7677
</actionsColumn>
78+
#end
7779
</columns>
7880
</listing>

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class UiComponentGridData {
1818
private final String acl;
1919
private final String dataProviderName;
2020
private final String dataProviderPath;
21+
private final String entityName;
2122
private final UiComponentGridToolbarData gridToolbarData;
2223
private final List<Map<String, String>> columns;
2324

@@ -51,6 +52,7 @@ public UiComponentGridData(
5152
acl,
5253
dataProviderName,
5354
dataProviderPath,
55+
null,
5456
gridToolbarData,
5557
new ArrayList<>()
5658
);
@@ -66,6 +68,7 @@ public UiComponentGridData(
6668
* @param acl String
6769
* @param dataProviderName String
6870
* @param dataProviderPath String
71+
* @param entityName String
6972
* @param gridToolbarData UiComponentGridToolbarData
7073
* @param columns List
7174
*/
@@ -77,6 +80,7 @@ public UiComponentGridData(
7780
final String acl,
7881
final String dataProviderName,
7982
final String dataProviderPath,
83+
final String entityName,
8084
final UiComponentGridToolbarData gridToolbarData,
8185
final List<Map<String, String>> columns
8286
) {
@@ -87,6 +91,7 @@ public UiComponentGridData(
8791
this.acl = acl;
8892
this.dataProviderName = dataProviderName;
8993
this.dataProviderPath = dataProviderPath;
94+
this.entityName = entityName;
9095
this.gridToolbarData = gridToolbarData;
9196
this.columns = columns;
9297
}
@@ -154,6 +159,15 @@ public String getDataProviderPath() {
154159
return dataProviderPath;
155160
}
156161

162+
/**
163+
* Get entity name.
164+
*
165+
* @return String
166+
*/
167+
public String getEntityName() {
168+
return entityName;
169+
}
170+
157171
/**
158172
* Get ID field name.
159173
*

src/com/magento/idea/magento2plugin/actions/generation/data/converter/newentitydialog/UiComponentGridDtoConverter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public UiComponentGridDtoConverter(
3434
newEntityDialogData.getAclId(),
3535
newEntityDialogData.getEntityName().concat("DataProvider"),
3636
UiComponentDataProviderFile.DIRECTORY,
37+
newEntityDialogData.getEntityName(),
3738
new UiComponentGridToolbarDtoConverter(generationContextData, newEntityDialogData),
3839
generationContextData.getEntityProps()
3940
);

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,10 @@ private void generateNewEntityFiles(final @NotNull ActionEvent event) {
378378
buttonOK.setEnabled(false);
379379
buttonCancel.setEnabled(false);
380380

381+
if (propertyTable.isEditing()) {
382+
propertyTable.getCellEditor().stopCellEditing();
383+
}
384+
381385
new ProcessWorker(
382386
this::onOK,
383387
this::releaseDialogAfterGeneration,
@@ -518,7 +522,7 @@ private List<UiComponentFormFieldsetData> getFieldSets() {
518522
*/
519523
private List<UiComponentFormButtonData> getButtons() {
520524
final List<UiComponentFormButtonData> buttons = new ArrayList<>();
521-
final String directory = "Block/Form";
525+
final String directory = "Block/Form/" + entityName.getText().trim();
522526

523527
final NamespaceBuilder namespaceBuilderSave = new NamespaceBuilder(
524528
moduleName,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public FormGenericButtonBlockGenerator(
5353

5454
@Override
5555
protected AbstractPhpFile initFile() {
56-
return new FormGenericButtonBlockFile(data.getModuleName());
56+
return new FormGenericButtonBlockFile(data.getModuleName(), data.getEntityName());
5757
}
5858

5959
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public GridActionColumnFileGenerator(
5050

5151
@Override
5252
protected AbstractPhpFile initFile() {
53-
return new GridActionColumnFile(data.getModuleName());
53+
return new GridActionColumnFile(data.getModuleName(), data.getEntityName());
5454
}
5555

5656
/**

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.jetbrains.annotations.NotNull;
3232

3333
public class UiComponentFormButtonBlockGenerator extends FileGenerator {
34+
3435
private final UiComponentFormButtonData buttonData;
3536
private final Project project;
3637
private final FileFromTemplateGenerator fileFromTemplateGenerator;
@@ -148,15 +149,18 @@ protected void fillAttributes(final @NotNull Properties attributes) {
148149
PhpClassGeneratorUtil.getNameFromFqn(FormButtonBlockFile.DATA_PROVIDER_TYPE));
149150
uses.add(FormButtonBlockFile.DATA_PROVIDER_TYPE);
150151

152+
final FormGenericButtonBlockFile genericButtonBlockFile =
153+
new FormGenericButtonBlockFile(buttonData.getButtonModule(), entityName);
154+
151155
final NamespaceBuilder genericBtnNamespace = new NamespaceBuilder(
152156
buttonData.getButtonModule(),
153157
FormGenericButtonBlockFile.CLASS_NAME,
154-
FormGenericButtonBlockFile.DIRECTORY
158+
genericButtonBlockFile.getDirectory()
155159
);
156160
attributes.setProperty("GENERIC_BUTTON",
157161
PhpClassGeneratorUtil.getNameFromFqn(genericBtnNamespace.getClassFqn()));
158162

159-
if (!FormGenericButtonBlockFile.DIRECTORY.equals(buttonData.getButtonDirectory())) {
163+
if (!genericButtonBlockFile.getDirectory().equals(buttonData.getButtonDirectory())) {
160164
uses.add(genericBtnNamespace.getClassFqn());
161165
}
162166

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,12 +205,11 @@ private void prepareColumnsProperties(final @NotNull Properties attributes) {
205205
attributes.setProperty("COLUMNS", String.join("\n", columnsTextList));
206206
}
207207

208-
final NamespaceBuilder actionColumnNamespace = new NamespaceBuilder(
209-
data.getModuleName(),
210-
GridActionColumnFile.CLASS_NAME,
211-
GridActionColumnFile.DIRECTORY
212-
);
213-
attributes.setProperty("ACTION_COLUMN", actionColumnNamespace.getClassFqn());
208+
if (data.getEntityName() != null) {
209+
final GridActionColumnFile gridActionColumnFile =
210+
new GridActionColumnFile(data.getModuleName(), data.getEntityName());
211+
attributes.setProperty("ACTION_COLUMN", gridActionColumnFile.getClassFqn());
212+
}
214213
}
215214

216215
/**

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,22 @@ public final class FormGenericButtonBlockFile extends AbstractPhpFile {
1212
public static final String CLASS_NAME = "GenericButton";
1313
public static final String HUMAN_READABLE_NAME = "Generic button block class";
1414
public static final String TEMPLATE = "Magento PHP Form Generic Button Block Class";
15-
public static final String DIRECTORY = "Block/Form";
1615
public static final String CONTEXT = "Magento\\Backend\\Block\\Widget\\Context";
16+
private static final String DIRECTORY = "Block/Form";
17+
private final String entityName;
1718

1819
/**
1920
* Form generic button block file constructor.
2021
*
2122
* @param moduleName String
23+
* @param entityName String
2224
*/
23-
public FormGenericButtonBlockFile(final @NotNull String moduleName) {
25+
public FormGenericButtonBlockFile(
26+
final @NotNull String moduleName,
27+
final @NotNull String entityName
28+
) {
2429
super(moduleName, CLASS_NAME);
30+
this.entityName = entityName;
2531
}
2632

2733
@Override
@@ -31,7 +37,7 @@ public String getHumanReadableName() {
3137

3238
@Override
3339
public String getDirectory() {
34-
return DIRECTORY;
40+
return DIRECTORY.concat("/" + entityName);
3541
}
3642

3743
@Override

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,27 @@
99

1010
public final class GridActionColumnFile extends AbstractPhpFile {
1111

12-
public static final String CLASS_NAME = "BlockActions";
1312
public static final String HUMAN_READABLE_NAME = "Grid Ui Component actions column class";
1413
public static final String TEMPLATE = "Magento Grid Ui Component Action Column Class";
15-
public static final String DIRECTORY = "Ui/Component/Listing/Column";
1614
public static final String PARENT_CLASS = "Magento\\Ui\\Component\\Listing\\Columns\\Column";
1715
public static final String CONTEXT =
1816
"Magento\\Framework\\View\\Element\\UiComponent\\ContextInterface";
1917
public static final String UI_COMPONENT_FACTORY =
2018
"Magento\\Framework\\View\\Element\\UiComponentFactory";
21-
19+
private static final String CLASS_NAME = "BlockActions";
20+
private static final String DIRECTORY = "Ui/Component/Listing/Column";
21+
22+
/**
23+
* Grid actions column file constructor.
24+
*
25+
* @param moduleName String
26+
* @param entityName String
27+
*/
2228
public GridActionColumnFile(
23-
final @NotNull String moduleName
29+
final @NotNull String moduleName,
30+
final @NotNull String entityName
2431
) {
25-
super(moduleName, CLASS_NAME);
32+
super(moduleName, entityName.concat(CLASS_NAME));
2633
}
2734

2835
@Override

testData/actions/generation/generator/FormButtonBlockGenerator/generateBackButtonBlock/MyBackButton.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace Foo\Bar\Block\Form;
3+
namespace Foo\Bar\Block\Form\Book;
44

55
use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;
66

testData/actions/generation/generator/FormButtonBlockGenerator/generateCustomButtonBlock/MyCustom.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace Foo\Bar\Block\Form;
3+
namespace Foo\Bar\Block\Form\Book;
44

55
use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;
66

testData/actions/generation/generator/FormButtonBlockGenerator/generateDeleteButtonBlock/DeleteBlock.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace Foo\Bar\Block\Form;
3+
namespace Foo\Bar\Block\Form\Book;
44

55
use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;
66

testData/actions/generation/generator/FormButtonBlockGenerator/generateSaveButtonBlock/SaveBlock.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace Foo\Bar\Block\Form;
3+
namespace Foo\Bar\Block\Form\Book;
44

55
use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;
66

testData/actions/generation/generator/FormGenericButtonBlockGenerator/generateFormGenericButtonBlockFile/GenericButton.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace Foo\Bar\Block\Form;
3+
namespace Foo\Bar\Block\Form\Book;
44

55
use Magento\Backend\Block\Widget\Context;
66
use Magento\Framework\UrlInterface;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
/**
1111
* Class to build edit and delete link for each item.
1212
*/
13-
class BlockActions extends Column
13+
class BookBlockActions extends Column
1414
{
1515
/**
1616
* Entity name.

testData/actions/generation/generator/UiComponentGridXmlGenerator/generateUiGridForBaseArea/custom_entity_grid.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,5 @@
4343
<sorting>desc</sorting>
4444
</settings>
4545
</column>
46-
<actionsColumn name="actions" class="Foo\Bar\Ui\Component\Listing\Column\BlockActions">
47-
<settings>
48-
<indexField>entity_id</indexField>
49-
</settings>
50-
</actionsColumn>
5146
</columns>
5247
</listing>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?xml version="1.0"?>
2+
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
4+
<argument name="data" xsi:type="array">
5+
<item name="js_config" xsi:type="array">
6+
<item name="provider" xsi:type="string">custom_entity_grid.custom_entity_grid_data_source</item>
7+
<item name="deps" xsi:type="string">custom_entity_grid.custom_entity_grid_data_source</item>
8+
</item>
9+
</argument>
10+
<settings>
11+
<buttons>
12+
<button name="add">
13+
<url path="*/*/new"/>
14+
<class>primary</class>
15+
<label translate="true">Add New</label>
16+
</button>
17+
</buttons>
18+
<spinner>custom_entity_grid_columns</spinner>
19+
<deps>
20+
<dep>custom_entity_grid.custom_entity_grid_data_source</dep>
21+
</deps>
22+
</settings>
23+
<dataSource name="custom_entity_grid_data_source" component="Magento_Ui/js/grid/provider">
24+
<settings>
25+
<storageConfig>
26+
<param name="indexField" xsi:type="string">entity_id</param>
27+
</storageConfig>
28+
<updateUrl path="mui/index/render"/>
29+
</settings>
30+
<aclResource>Foo_Bar::custom_entity</aclResource>
31+
<dataProvider class="Foo\Bar\Ui\Listing\DataProvider" name="custom_entity_grid_data_source">
32+
<settings>
33+
<requestFieldName>entity_id</requestFieldName>
34+
<primaryFieldName>entity_id</primaryFieldName>
35+
</settings>
36+
</dataProvider>
37+
</dataSource>
38+
<columns name="custom_entity_grid_columns">
39+
<column name="entity_id">
40+
<settings>
41+
<filter>textRange</filter>
42+
<label translate="true">ID</label>
43+
<sorting>desc</sorting>
44+
</settings>
45+
</column>
46+
<actionsColumn name="actions" class="Foo\Bar\Ui\Component\Listing\Column\BookBlockActions">
47+
<settings>
48+
<indexField>entity_id</indexField>
49+
</settings>
50+
</actionsColumn>
51+
</columns>
52+
</listing>

testData/actions/generation/generator/UiComponentGridXmlGenerator/generateUiGridWithoutToolbar/custom_entity_grid.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,5 @@
5050
<sorting>desc</sorting>
5151
</settings>
5252
</column>
53-
<actionsColumn name="actions" class="Foo\Bar\Ui\Component\Listing\Column\BlockActions">
54-
<settings>
55-
<indexField>entity_id</indexField>
56-
</settings>
57-
</actionsColumn>
5853
</columns>
5954
</listing>

tests/com/magento/idea/magento2plugin/actions/generation/generator/FormButtonBlockGeneratorTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111
import com.magento.idea.magento2plugin.actions.generation.generator.util.NamespaceBuilder;
1212

1313
public class FormButtonBlockGeneratorTest extends BaseGeneratorTestCase {
14+
1415
private static final String MODULE_NAME = "Foo_Bar";
1516
private static final String FORM_NAME = "my_form";
16-
private static final String BLOCK_DIRECTORY = "Block/Form";
17-
private static final String ACTION_NAME = "test";
1817
private static final String ENTITY_NAME = "Book";
18+
private static final String BLOCK_DIRECTORY = "Block/Form/" + ENTITY_NAME;
19+
private static final String ACTION_NAME = "test";
1920
private static final String ENTITY_ID = "book_id";
20-
public static final String EXPECTED_DIRECTORY = "src/app/code/Foo/Bar/Block/Form";
21+
public static final String EXPECTED_DIRECTORY
22+
= "src/app/code/Foo/Bar/Block/Form/" + ENTITY_NAME;
2123

2224
/**
2325
* Test creation Block type Save.

tests/com/magento/idea/magento2plugin/actions/generation/generator/FormGenericButtonBlockGeneratorTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ public class FormGenericButtonBlockGeneratorTest extends BaseGeneratorTestCase {
1313
private static final String MODULE_NAME = "Foo_Bar";
1414
private static final String ENTITY_NAME = "Book";
1515
private static final String ENTITY_ID = "book_id";
16-
private static final String EXPECTED_DIRECTORY = "src/app/code/Foo/Bar/Block/Form";
16+
private static final String EXPECTED_DIRECTORY
17+
= "src/app/code/Foo/Bar/Block/Form/" + ENTITY_NAME;
1718

1819
/**
1920
* Test generation of form ui component generic button block.
@@ -31,7 +32,7 @@ public void testGenerateFormGenericButtonBlockFile() {
3132
false
3233
);
3334
final String filePath = this.getFixturePath(
34-
new FormGenericButtonBlockFile(MODULE_NAME).getFileName()
35+
new FormGenericButtonBlockFile(MODULE_NAME, ENTITY_NAME).getFileName()
3536
);
3637

3738
assertGeneratedFileIsCorrect(

tests/com/magento/idea/magento2plugin/actions/generation/generator/GridActionColumnFileGeneratorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class GridActionColumnFileGeneratorTest extends BaseGeneratorTestCase {
2020
* Test generation of grid actions column file.
2121
*/
2222
public void testGenerateGridActionColumnFile() {
23-
final GridActionColumnFile file = new GridActionColumnFile(MODULE_NAME);
23+
final GridActionColumnFile file = new GridActionColumnFile(MODULE_NAME, ENTITY_NAME);
2424
final GridActionColumnData data = new GridActionColumnData(
2525
MODULE_NAME,
2626
ENTITY_NAME,

0 commit comments

Comments
 (0)