1111import com .intellij .psi .PsiFile ;
1212import com .intellij .util .indexing .FileBasedIndex ;
1313import com .magento .idea .magento2plugin .actions .generation .NewViewModelAction ;
14+ import com .magento .idea .magento2plugin .actions .generation .OverrideClassByAPreferenceAction ;
1415import com .magento .idea .magento2plugin .actions .generation .data .AclXmlData ;
1516import com .magento .idea .magento2plugin .actions .generation .data .CollectionData ;
1617import com .magento .idea .magento2plugin .actions .generation .data .ControllerFileData ;
2021import com .magento .idea .magento2plugin .actions .generation .data .LayoutXmlData ;
2122import com .magento .idea .magento2plugin .actions .generation .data .MenuXmlData ;
2223import com .magento .idea .magento2plugin .actions .generation .data .ModelData ;
24+ import com .magento .idea .magento2plugin .actions .generation .data .PreferenceDiXmFileData ;
2325import com .magento .idea .magento2plugin .actions .generation .data .ResourceModelData ;
2426import com .magento .idea .magento2plugin .actions .generation .data .RoutesXmlData ;
2527import com .magento .idea .magento2plugin .actions .generation .data .UiComponentDataProviderData ;
4244import com .magento .idea .magento2plugin .actions .generation .generator .ModuleControllerClassGenerator ;
4345import com .magento .idea .magento2plugin .actions .generation .generator .ModuleModelGenerator ;
4446import com .magento .idea .magento2plugin .actions .generation .generator .ModuleResourceModelGenerator ;
47+ import com .magento .idea .magento2plugin .actions .generation .generator .PreferenceDiXmlGenerator ;
4548import com .magento .idea .magento2plugin .actions .generation .generator .RoutesXmlGenerator ;
4649import com .magento .idea .magento2plugin .actions .generation .generator .UiComponentDataProviderGenerator ;
4750import com .magento .idea .magento2plugin .actions .generation .generator .UiComponentFormGenerator ;
6467import com .magento .idea .magento2plugin .ui .FilteredComboBox ;
6568import com .magento .idea .magento2plugin .ui .table .TableGroupWrapper ;
6669import com .magento .idea .magento2plugin .util .FirstLetterToLowercaseUtil ;
70+ import com .magento .idea .magento2plugin .util .GetPhpClassByFQN ;
6771import com .magento .idea .magento2plugin .util .magento .GetAclResourcesListUtil ;
6872import com .magento .idea .magento2plugin .util .magento .GetModuleNameByDirectoryUtil ;
6973import java .awt .event .ActionEvent ;
@@ -153,6 +157,7 @@ public class NewEntityDialog extends AbstractDialog {
153157 private JLabel tableEngineLabel ;
154158 private JComboBox tableResource ;
155159 private JLabel tableResourceLabel ;
160+ private JCheckBox createInterface ;
156161 private final List <String > properties ;
157162 private TableGroupWrapper entityPropertiesTableGroupWrapper ;
158163
@@ -262,10 +267,13 @@ private void onOK() {
262267 generateModelFile ();
263268 generateResourceModelFile ();
264269 generateCollectionFile ();
265-
266270 formatProperties ();
267271 generateDataModelFile ();
268- generateDataModelInterfaceFile ();
272+
273+ if (createInterface .isSelected ()) {
274+ generateDataModelInterfaceFile ();
275+ generateDataModelPreference ();
276+ }
269277
270278 generateRoutesXmlFile ();
271279 generateViewControllerFile ();
@@ -274,7 +282,6 @@ private void onOK() {
274282 generateLayoutFile ();
275283 generateFormFile ();
276284 generateAclXmlFile ();
277-
278285 generateGridViewControllerFile ();
279286 generateGridLayoutFile ();
280287 generateMenuFile ();
@@ -290,6 +297,7 @@ private void onOK() {
290297
291298 generateDbSchemaXmlFile (dbSchemaXmlData );
292299 generateWhitelistJsonFile (dbSchemaXmlData );
300+ this .setVisible (false );
293301 }
294302
295303 private PsiFile generateModelFile () {
@@ -333,6 +341,23 @@ private NamespaceBuilder getResourceModelNamespace() {
333341 );
334342 }
335343
344+ /**
345+ * Generate preference for data model.
346+ */
347+ private void generateDataModelPreference () {
348+ final NamespaceBuilder modelNamespace = getModelNamespace ();
349+ final NamespaceBuilder modelInterfaceNamespace = getDataModelInterfaceNamespace ();
350+ new PreferenceDiXmlGenerator (new PreferenceDiXmFileData (
351+ getModuleName (),
352+ GetPhpClassByFQN .getInstance (project ).execute (
353+ modelInterfaceNamespace .getClassFqn ()
354+ ),
355+ modelNamespace .getClassFqn (),
356+ getModelName (),
357+ Areas .base .toString ()
358+ ), project ).generate (OverrideClassByAPreferenceAction .ACTION_NAME );
359+ }
360+
336361 private String getModuleName () {
337362 return moduleName ;
338363 }
@@ -410,6 +435,9 @@ private PsiFile generateCollectionFile() {
410435 ), project ).generate (ACTION_NAME , true );
411436 }
412437
438+ /**
439+ * Generate Data Model File.
440+ */
413441 private void generateDataModelFile () {
414442 final NamespaceBuilder nameSpaceBuilder = getDataModelNamespace ();
415443 new DataModelGenerator (project , new DataModelData (
@@ -418,7 +446,8 @@ private void generateDataModelFile() {
418446 getModuleName (),
419447 nameSpaceBuilder .getClassFqn (),
420448 getDataModelInterfaceNamespace ().getClassFqn (),
421- getProperties ()
449+ getProperties (),
450+ createInterface .isSelected ()
422451 )).generate (ACTION_NAME , true );
423452 }
424453
0 commit comments