This is an automated email from the ASF dual-hosted git repository.

cgarcia pushed a commit to branch feature/app
in repository https://gitbox.apache.org/repos/asf/plc4x-extras.git


The following commit(s) were added to refs/heads/feature/app by this push:
     new c4c730f  New projectype for plc4x. SubProject Tests 3.
c4c730f is described below

commit c4c730f7ce43b4ab47d28461213a06d56c99539f
Author: César García <[email protected]>
AuthorDate: Fri Feb 6 19:20:24 2026 -0400

    New projectype for plc4x. SubProject Tests 3.
---
 plc4j/tools/malbec/application/pom.xml             |   5 +
 plc4j/tools/malbec/core/pom.xml                    |  12 +++
 plc4j/tools/malbec/malbec-core/pom.xml             |  12 +++
 plc4j/tools/malbec/pom.xml                         |   1 +
 .../malbec/projecttype/comms/nb-configuration.xml  |  18 ++++
 plc4j/tools/malbec/projecttype/comms/pom.xml       |  87 +++++++++++++++-
 .../impl/Plc4xCommsSubProjectFactoryImpl.java}     |  15 ++-
 .../comms/impl/Plc4xCommsSubProjectImpl.java}      |  26 +++--
 ...lc4xCommsSubProjectLogicalViewProviderImpl.java | 116 +++++++++++++++++++++
 .../impl/Plc4xCommsSubProjectNodeFactoryImpl.java} |  24 ++---
 .../impl/Plc4xCommsSubProjectProviderImpl.java}    |  28 +++--
 .../projecttype/comms/src/main/nbm/manifest.mf     |   2 +-
 .../malbec/comms/{ => impl}/Bundle.properties      |   0
 .../plc4x/malbec/comms/nodes/FolderBlue-Open.png   | Bin 0 -> 437 bytes
 .../apache/plc4x/malbec/comms/nodes/FolderBlue.png | Bin 0 -> 246 bytes
 .../malbec/projecttype/events/nb-configuration.xml |  18 ++++
 plc4j/tools/malbec/projecttype/events/pom.xml      |  87 +++++++++++++++-
 .../impl/Plc4xEventsSubProjectFactoryImpl.java}    |  15 ++-
 .../events/impl/Plc4xEventsSubProjectImpl.java}    |  26 +++--
 ...c4xEventsSubProjectLogicalViewProviderImpl.java | 116 +++++++++++++++++++++
 .../Plc4xEventsSubProjectNodeFactoryImpl.java}     |  24 ++---
 .../impl/Plc4xEventsSubProjectProviderImpl.java}   |  24 +++--
 .../projecttype/events/src/main/nbm/manifest.mf    |   2 +-
 .../malbec/events/{ => impl}/Bundle.properties     |   0
 .../plc4x/malbec/events/nodes/FolderBlue-Open.png  | Bin 0 -> 437 bytes
 .../plc4x/malbec/events/nodes/FolderBlue.png       | Bin 0 -> 246 bytes
 plc4j/tools/malbec/projecttype/hmi/pom.xml         |  17 ++-
 .../hmi/impl/Plc4xHMICustomizerProviderImpl.java   |  74 +++++++++++++
 .../hmi/impl/Plc4xHMISubProjectFactoryIMpl.java    |   7 +-
 .../malbec/hmi/impl/Plc4xHMISubProjectImpl.java    |   9 +-
 ...java => Plc4xHMISubProjectNodeFactoryImpl.java} |   2 +-
 .../hmi/impl/Plc4xHMISubProjectProviderImpl.java   |   9 +-
 .../malbec/projecttype/malbec-projecttype/pom.xml  |  15 +++
 .../malbec/projecttype/impl/Plc4xProjectImpl.java  |   5 +-
 .../projecttype/recipes/nb-configuration.xml       |  18 ++++
 plc4j/tools/malbec/projecttype/recipes/pom.xml     |  87 +++++++++++++++-
 .../impl/Plc4xRecipesSubProjectFactoryImpl.java}   |  15 ++-
 .../recipes/impl/Plc4xRecipesSubProjectImpl.java}  |  26 +++--
 ...4xRecipesSubProjectLogicalViewProviderImpl.java | 116 +++++++++++++++++++++
 .../Plc4xRecipesSubProjectNodeFactoryImpl.java}    |  24 ++---
 .../impl/Plc4xRecipesSubProjectProviderImpl.java}  |  24 +++--
 .../projecttype/recipes/src/main/nbm/manifest.mf   |   2 +-
 .../malbec/recipes/{ => nodes}/Bundle.properties   |   0
 .../plc4x/malbec/recipes/nodes/FolderBlue-Open.png | Bin 0 -> 437 bytes
 .../plc4x/malbec/recipes/nodes/FolderBlue.png      | Bin 0 -> 246 bytes
 45 files changed, 951 insertions(+), 157 deletions(-)

diff --git a/plc4j/tools/malbec/application/pom.xml 
b/plc4j/tools/malbec/application/pom.xml
index 980f714..92e6eba 100644
--- a/plc4j/tools/malbec/application/pom.xml
+++ b/plc4j/tools/malbec/application/pom.xml
@@ -181,6 +181,11 @@
             <artifactId>hmi</artifactId>
             <version>0.13.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x.malbec.comms</groupId>
+            <artifactId>comms</artifactId>
+            <version>0.13.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/plc4j/tools/malbec/core/pom.xml b/plc4j/tools/malbec/core/pom.xml
new file mode 100644
index 0000000..b198974
--- /dev/null
+++ b/plc4j/tools/malbec/core/pom.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.plc4x</groupId>
+        <artifactId>malbec-parent</artifactId>
+        <version>0.13.0-SNAPSHOT</version>
+    </parent>
+    <groupId>org.apache.plc4x.malbec.core</groupId>
+    <artifactId>core</artifactId>
+    <packaging>pom</packaging>
+</project>
\ No newline at end of file
diff --git a/plc4j/tools/malbec/malbec-core/pom.xml 
b/plc4j/tools/malbec/malbec-core/pom.xml
new file mode 100644
index 0000000..ce9b190
--- /dev/null
+++ b/plc4j/tools/malbec/malbec-core/pom.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.plc4x</groupId>
+        <artifactId>malbec-parent</artifactId>
+        <version>0.13.0-SNAPSHOT</version>
+    </parent>
+    <groupId>org.apache.plc4x.malbec.core</groupId>
+    <artifactId>malbec-core</artifactId>
+    <packaging>pom</packaging>
+</project>
\ No newline at end of file
diff --git a/plc4j/tools/malbec/pom.xml b/plc4j/tools/malbec/pom.xml
index 24b0372..bd83b85 100644
--- a/plc4j/tools/malbec/pom.xml
+++ b/plc4j/tools/malbec/pom.xml
@@ -205,6 +205,7 @@
         <module>s7</module>
         <module>eip</module>
         <module>projecttype</module>
+        <module>malbec-core</module>
     </modules>
 
 </project>
diff --git a/plc4j/tools/malbec/projecttype/comms/nb-configuration.xml 
b/plc4j/tools/malbec/projecttype/comms/nb-configuration.xml
new file mode 100644
index 0000000..996b1a3
--- /dev/null
+++ b/plc4j/tools/malbec/projecttype/comms/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+    <!--
+This file contains additional configuration written by modules in the NetBeans 
IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be 
limited or fail altogether.
+-->
+    <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1";>
+        <!--
+Properties that influence various parts of the IDE, especially code formatting 
and the like. 
+You can copy and paste the single properties, into the pom.xml file and the 
IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting 
rules for example).
+Any value defined here will override the pom.xml file value but is only 
applicable to the current project.
+-->
+        <netbeans.hint.jdkPlatform>Zulu_21.0.9_10</netbeans.hint.jdkPlatform>
+    </properties>
+</project-shared-configuration>
diff --git a/plc4j/tools/malbec/projecttype/comms/pom.xml 
b/plc4j/tools/malbec/projecttype/comms/pom.xml
index dbefe87..cd14f4b 100644
--- a/plc4j/tools/malbec/projecttype/comms/pom.xml
+++ b/plc4j/tools/malbec/projecttype/comms/pom.xml
@@ -15,6 +15,11 @@
                 <groupId>org.apache.netbeans.utilities</groupId>
                 <artifactId>nbm-maven-plugin</artifactId>
                 <extensions>true</extensions>
+                <configuration>
+                    <publicPackages>
+                        
<publicPackage>org.apache.plc4x.malbec.comms.impl</publicPackage>
+                    </publicPackages>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
@@ -25,13 +30,93 @@
                     </archive>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.14.1</version>
+                <configuration>
+                    <showDeprecation>false</showDeprecation>
+                    <proc>full</proc>
+                </configuration>
+            </plugin>             
         </plugins>
     </build>
     <dependencies>
-        <dependency>
+       <dependency>
             <groupId>org.netbeans.api</groupId>
             <artifactId>org-netbeans-api-annotations-common</artifactId>
             <version>${netbeans.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-api-templates</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-filesystems</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-loaders</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-nodes</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util-lookup</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util-ui</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-windows</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-text</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-core-multiview</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-awt</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-dialogs</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-modules-projectapi</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-modules-projectuiapi</artifactId>
+            <version>${netbeans.version}</version>
+            <type>jar</type>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
 
b/plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectFactoryImpl.java
similarity index 71%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
copy to 
plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectFactoryImpl.java
index f17a3b3..43c3577 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
+++ 
b/plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectFactoryImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.comms.impl;
 
 import java.io.IOException;
 import org.netbeans.api.project.Project;
@@ -26,22 +26,19 @@ import org.openide.filesystems.FileObject;
 import org.openide.util.lookup.ServiceProvider;
 
 @ServiceProvider(service=ProjectFactory.class)
-public class Plc4xHMISubProjectFactoryImpl implements ProjectFactory {
+public class Plc4xCommsSubProjectFactoryImpl implements ProjectFactory {
 
-    public static final String HMI_SUBPROJECT_DIRECTORY = "hmi";    
+    public static final String COMMS_SUBPROJECT_DIRECTORY = "comms"; 
     
     @Override
     public boolean isProject(FileObject fo) {
-        System.out.println("Carpeta: " + fo.isFolder());
-        System.out.println("Name: >" + fo.getName() +">");        
-        boolean isHMIFolder = 
fo.getName().equalsIgnoreCase(HMI_SUBPROJECT_DIRECTORY) && fo.isFolder();
-        System.out.println("isFolder: " + isHMIFolder);        
-        return isHMIFolder;
+        boolean isCommsFolder = 
fo.getName().equalsIgnoreCase(COMMS_SUBPROJECT_DIRECTORY) && fo.isFolder();     
 
+        return isCommsFolder;
     }
 
     @Override
     public Project loadProject(FileObject fo, ProjectState ps) throws 
IOException {
-        return isProject(fo) ? new Plc4xHMISubProjectImpl(fo, ps) : null;
+        return isProject(fo) ? new Plc4xCommsSubProjectImpl(fo, ps) : null;
     }
 
     @Override
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
 
b/plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectImpl.java
similarity index 77%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
copy to 
plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectImpl.java
index 9ea2d1d..be49bc5 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
+++ 
b/plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.comms.impl;
 
 import java.beans.PropertyChangeListener;
 import javax.swing.Icon;
@@ -30,17 +30,17 @@ import org.openide.util.ImageUtilities;
 import org.openide.util.Lookup;
 import org.openide.util.lookup.Lookups;
 
-public class Plc4xHMISubProjectImpl implements  Project{
+public class Plc4xCommsSubProjectImpl implements  Project  {
 
     private final FileObject projectDir;
     private final ProjectState state;
-    private Lookup lkp;    
+    private Lookup lkp;      
 
-    public Plc4xHMISubProjectImpl(FileObject projectDir, ProjectState state) {
+    public Plc4xCommsSubProjectImpl(FileObject projectDir, ProjectState state) 
{
         this.projectDir = projectDir;
         this.state = state;
     }
-
+    
     @Override
     public FileObject getProjectDirectory() {
         return projectDir;
@@ -51,17 +51,17 @@ public class Plc4xHMISubProjectImpl implements  Project{
         if (lkp == null) {
             lkp = Lookups.fixed(new Object[]{
             // register your features here
-                new Plc4xHMISubProjectInformation(),
-                new Plc4xHMISubProjectLogicalViewProviderImpl(this),
+                new Plc4xCommsSubProjectInformation(),
+                new Plc4xCommsSubProjectLogicalViewProviderImpl(this),
             });
         }
         return lkp;
     }
     
-    private class Plc4xHMISubProjectInformation implements ProjectInformation {
+    private class Plc4xCommsSubProjectInformation implements 
ProjectInformation {
 
         @StaticResource()
-        public static final String HMI_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/hmi/nodes/PanelOperador.png";    
+        public static final String COMMS_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/comms/nodes/FolderBlue.png";    
 
         @Override
         public String getName() {
@@ -75,12 +75,12 @@ public class Plc4xHMISubProjectImpl implements  Project{
 
         @Override
         public Icon getIcon() {
-            return new 
ImageIcon(ImageUtilities.loadImage(HMI_SUBPROJECT_ICON));
+            return new 
ImageIcon(ImageUtilities.loadImage(COMMS_SUBPROJECT_ICON));
         }
 
         @Override
         public Project getProject() {
-            return Plc4xHMISubProjectImpl.this;
+            return Plc4xCommsSubProjectImpl.this;
         }
 
         @Override
@@ -93,8 +93,6 @@ public class Plc4xHMISubProjectImpl implements  Project{
             //
         }
 
-    }
-    
-    
+    }    
     
 }
diff --git 
a/plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectLogicalViewProviderImpl.java
 
b/plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectLogicalViewProviderImpl.java
new file mode 100644
index 0000000..494f122
--- /dev/null
+++ 
b/plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectLogicalViewProviderImpl.java
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.malbec.comms.impl;
+
+import java.awt.Image;
+import javax.swing.Action;
+import org.netbeans.api.annotations.common.StaticResource;
+import org.netbeans.api.project.Project;
+import org.netbeans.spi.project.ui.LogicalViewProvider;
+import org.netbeans.spi.project.ui.support.CommonProjectActions;
+import org.openide.filesystems.FileObject;
+import org.openide.loaders.DataFolder;
+import org.openide.loaders.DataObjectNotFoundException;
+import org.openide.nodes.AbstractNode;
+import org.openide.nodes.Children;
+import org.openide.nodes.FilterNode;
+import org.openide.nodes.Node;
+import org.openide.util.Exceptions;
+import org.openide.util.ImageUtilities;
+import org.openide.util.Lookup;
+import org.openide.util.lookup.Lookups;
+import org.openide.util.lookup.ProxyLookup;
+
+public class Plc4xCommsSubProjectLogicalViewProviderImpl implements  
LogicalViewProvider {
+
+    @StaticResource()
+    public static final String COMMS_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/comms/nodes/FolderBlue.png";
+    
+    private final Project project;
+
+    public Plc4xCommsSubProjectLogicalViewProviderImpl(Project project) {
+        this.project = null;
+    }
+    
+    @Override
+    public Node createLogicalView() {
+        try {
+            //Obtain the project directory's node:
+            FileObject projectDirectory = project.getProjectDirectory();
+            DataFolder projectFolder = DataFolder.findFolder(projectDirectory);
+            Node nodeOfProjectFolder = projectFolder.getNodeDelegate();
+            //Decorate the project directory's node:
+            return new ProjectNode(nodeOfProjectFolder, project);
+        } catch (DataObjectNotFoundException donfe) {
+            Exceptions.printStackTrace(donfe);
+            //Fallback-the directory couldn't be created -
+            //read-only filesystem or something evil happened
+            return new AbstractNode(Children.LEAF);
+        }
+    }
+
+    @Override
+    public Node findPath(Node node, Object o) {
+        return null;
+    }
+    
+    private final class ProjectNode extends FilterNode {
+
+        final Project project;
+
+        public ProjectNode(Node node, Project project)
+            throws DataObjectNotFoundException {
+            super(node,
+                    new FilterNode.Children(node),
+                    new ProxyLookup(
+                    new Lookup[]{
+                        Lookups.singleton(project),
+                        node.getLookup()
+                    }));
+            this.project = project;
+        }
+
+        @Override
+        public Action[] getActions(boolean arg0) {
+            return new Action[]{
+                        CommonProjectActions.newFileAction(),
+                        CommonProjectActions.copyProjectAction(),
+                        CommonProjectActions.deleteProjectAction(),
+                        CommonProjectActions.closeProjectAction()
+                    };
+        }
+
+        @Override
+        public Image getIcon(int type) {
+            return ImageUtilities.loadImage(COMMS_SUBPROJECT_ICON);
+        }
+
+        @Override
+        public Image getOpenedIcon(int type) {
+            return getIcon(type);
+        }
+
+        @Override
+        public String getDisplayName() {
+            return project.getProjectDirectory().getName();
+        }
+
+    }    
+    
+}
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
 
b/plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectNodeFactoryImpl.java
similarity index 82%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
copy to 
plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectNodeFactoryImpl.java
index 8361771..4a6a293 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
+++ 
b/plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectNodeFactoryImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.comms.impl;
 
 import java.awt.Image;
 import java.util.ArrayList;
@@ -31,20 +31,19 @@ import org.openide.loaders.DataObject;
 import org.openide.loaders.DataObjectNotFoundException;
 import org.openide.nodes.FilterNode;
 import org.openide.nodes.Node;
-import static org.openide.nodes.NodeTransfer.node;
 import org.openide.util.Exceptions;
 import org.openide.util.ImageUtilities;
 
[email protected](projectType = "org-plc4x-project", position = 10)
-public class Plc4xHMISubProjectNodeFactory implements NodeFactory{
-    
-    @StaticResource()
-    public static final String HMI_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/hmi/nodes/PanelOperador.png";    
[email protected](projectType = "org-plc4x-hmi-project", position = 20)
+public class Plc4xCommsSubProjectNodeFactoryImpl implements NodeFactory {
 
+    @StaticResource()
+    public static final String COMMS_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/comms/nodes/FolderBlue.png";      
+    
     @Override
     public NodeList<?> createNodes(Project project) {
-        Plc4xHMISubProjectProviderImpl rsp = project.getLookup().
-            lookup(Plc4xHMISubProjectProviderImpl.class);
+        Plc4xCommsSubProjectProviderImpl rsp = project.getLookup().
+            lookup(Plc4xCommsSubProjectProviderImpl.class);
         assert rsp != null;
         return new ProjectsNodeList(rsp.getSubprojects());
     }
@@ -83,11 +82,11 @@ public class Plc4xHMISubProjectNodeFactory implements 
NodeFactory{
                         getProjectDirectory()).getNodeDelegate()){
                     @Override
                     public Image getIcon(int type) {
-                        return ImageUtilities.loadImage(HMI_SUBPROJECT_ICON );
+                        return ImageUtilities.loadImage(COMMS_SUBPROJECT_ICON 
);
                     }
                     @Override
                     public Image getOpenedIcon(int type) {
-                        return ImageUtilities.loadImage(HMI_SUBPROJECT_ICON );
+                        return ImageUtilities.loadImage(COMMS_SUBPROJECT_ICON 
);
                     }
                 };
             } catch (DataObjectNotFoundException ex) {
@@ -105,7 +104,6 @@ public class Plc4xHMISubProjectNodeFactory implements 
NodeFactory{
         public void removeNotify() {
             //
         }
-    }    
-    
+    }       
     
 }
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
 
b/plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectProviderImpl.java
similarity index 73%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
copy to 
plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectProviderImpl.java
index 4d5b06d..e1a11cf 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
+++ 
b/plc4j/tools/malbec/projecttype/comms/src/main/java/org/apache/plc4x/malbec/comms/impl/Plc4xCommsSubProjectProviderImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.comms.impl;
 
 import java.io.IOException;
 import java.util.Collections;
@@ -29,14 +29,16 @@ import org.netbeans.spi.project.SubprojectProvider;
 import org.openide.filesystems.FileObject;
 import org.openide.util.Exceptions;
 
-public class Plc4xHMISubProjectProviderImpl implements SubprojectProvider {
-
-    private final Project project;
+public class Plc4xCommsSubProjectProviderImpl implements SubprojectProvider {
+    
+    public static final String COMMS_SUBPROJECT_DIRECTORY = "comms";     
+    
+    private final Project project;  
 
-    public Plc4xHMISubProjectProviderImpl(Project project) {
+    public Plc4xCommsSubProjectProviderImpl(Project project) {
         this.project = project;
     }
-    
+
     @Override
     public Set<? extends Project> getSubprojects() {
         return loadProjects(project.getProjectDirectory());
@@ -51,17 +53,21 @@ public class Plc4xHMISubProjectProviderImpl implements 
SubprojectProvider {
     public void removeChangeListener(ChangeListener cl) {
         //
     }
-    
+
     public Set loadProjects(FileObject dir) {
         Set newProjects = new HashSet();
-        FileObject reportsFolder = dir.getFileObject("hmi");
+        FileObject reportsFolder = 
dir.getFileObject(COMMS_SUBPROJECT_DIRECTORY);
+        System.out.println("2>> " + dir.getName());
+        System.out.println("3>> " + dir.getPath());        
         if (reportsFolder != null) {
+            System.out.println("4>> " + reportsFolder.getName());              
             for (FileObject childFolder : reportsFolder.getChildren()) {
                 try {
+                    System.out.println("5>> " + childFolder.getName());   
                     Project subp = ProjectManager.getDefault().
                         findProject(reportsFolder);
-                    if (subp != null && subp instanceof 
Plc4xHMISubProjectImpl) {
-                        newProjects.add((Plc4xHMISubProjectImpl) subp);
+                    if (subp != null && subp instanceof 
Plc4xCommsSubProjectImpl) {
+                        newProjects.add((Plc4xCommsSubProjectImpl) subp);
                     }
                 } catch (IOException ex) {
                     Exceptions.printStackTrace(ex);
@@ -71,6 +77,6 @@ public class Plc4xHMISubProjectProviderImpl implements 
SubprojectProvider {
             }
         }
         return Collections.unmodifiableSet(newProjects);
-    }    
+    }     
     
 }
diff --git a/plc4j/tools/malbec/projecttype/comms/src/main/nbm/manifest.mf 
b/plc4j/tools/malbec/projecttype/comms/src/main/nbm/manifest.mf
index 8ca0023..fce184c 100644
--- a/plc4j/tools/malbec/projecttype/comms/src/main/nbm/manifest.mf
+++ b/plc4j/tools/malbec/projecttype/comms/src/main/nbm/manifest.mf
@@ -1,3 +1,3 @@
 Manifest-Version: 1.0
-OpenIDE-Module-Localizing-Bundle: 
org/apache/plc4x/malbec/comms/Bundle.properties
+OpenIDE-Module-Localizing-Bundle: 
org/apache/plc4x/malbec/comms/impl/Bundle.properties
 
diff --git 
a/plc4j/tools/malbec/projecttype/comms/src/main/resources/org/apache/plc4x/malbec/comms/Bundle.properties
 
b/plc4j/tools/malbec/projecttype/comms/src/main/resources/org/apache/plc4x/malbec/comms/impl/Bundle.properties
similarity index 100%
rename from 
plc4j/tools/malbec/projecttype/comms/src/main/resources/org/apache/plc4x/malbec/comms/Bundle.properties
rename to 
plc4j/tools/malbec/projecttype/comms/src/main/resources/org/apache/plc4x/malbec/comms/impl/Bundle.properties
diff --git 
a/plc4j/tools/malbec/projecttype/comms/src/main/resources/org/apache/plc4x/malbec/comms/nodes/FolderBlue-Open.png
 
b/plc4j/tools/malbec/projecttype/comms/src/main/resources/org/apache/plc4x/malbec/comms/nodes/FolderBlue-Open.png
new file mode 100644
index 0000000..2225cb0
Binary files /dev/null and 
b/plc4j/tools/malbec/projecttype/comms/src/main/resources/org/apache/plc4x/malbec/comms/nodes/FolderBlue-Open.png
 differ
diff --git 
a/plc4j/tools/malbec/projecttype/comms/src/main/resources/org/apache/plc4x/malbec/comms/nodes/FolderBlue.png
 
b/plc4j/tools/malbec/projecttype/comms/src/main/resources/org/apache/plc4x/malbec/comms/nodes/FolderBlue.png
new file mode 100644
index 0000000..91800c1
Binary files /dev/null and 
b/plc4j/tools/malbec/projecttype/comms/src/main/resources/org/apache/plc4x/malbec/comms/nodes/FolderBlue.png
 differ
diff --git a/plc4j/tools/malbec/projecttype/events/nb-configuration.xml 
b/plc4j/tools/malbec/projecttype/events/nb-configuration.xml
new file mode 100644
index 0000000..996b1a3
--- /dev/null
+++ b/plc4j/tools/malbec/projecttype/events/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+    <!--
+This file contains additional configuration written by modules in the NetBeans 
IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be 
limited or fail altogether.
+-->
+    <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1";>
+        <!--
+Properties that influence various parts of the IDE, especially code formatting 
and the like. 
+You can copy and paste the single properties, into the pom.xml file and the 
IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting 
rules for example).
+Any value defined here will override the pom.xml file value but is only 
applicable to the current project.
+-->
+        <netbeans.hint.jdkPlatform>Zulu_21.0.9_10</netbeans.hint.jdkPlatform>
+    </properties>
+</project-shared-configuration>
diff --git a/plc4j/tools/malbec/projecttype/events/pom.xml 
b/plc4j/tools/malbec/projecttype/events/pom.xml
index 848bcf4..7b6e59d 100644
--- a/plc4j/tools/malbec/projecttype/events/pom.xml
+++ b/plc4j/tools/malbec/projecttype/events/pom.xml
@@ -15,6 +15,11 @@
                 <groupId>org.apache.netbeans.utilities</groupId>
                 <artifactId>nbm-maven-plugin</artifactId>
                 <extensions>true</extensions>
+                <configuration>
+                    <publicPackages>
+                        
<publicPackage>org.apache.plc4x.malbec.events.impl</publicPackage>
+                    </publicPackages>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
@@ -25,13 +30,93 @@
                     </archive>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.14.1</version>
+                <configuration>
+                    <showDeprecation>false</showDeprecation>
+                    <proc>full</proc>
+                </configuration>
+            </plugin>              
         </plugins>
     </build>
     <dependencies>
-        <dependency>
+       <dependency>
             <groupId>org.netbeans.api</groupId>
             <artifactId>org-netbeans-api-annotations-common</artifactId>
             <version>${netbeans.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-api-templates</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-filesystems</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-loaders</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-nodes</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util-lookup</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util-ui</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-windows</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-text</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-core-multiview</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-awt</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-dialogs</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-modules-projectapi</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-modules-projectuiapi</artifactId>
+            <version>${netbeans.version}</version>
+            <type>jar</type>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
 
b/plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectFactoryImpl.java
similarity index 71%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
copy to 
plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectFactoryImpl.java
index f17a3b3..d39c75e 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
+++ 
b/plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectFactoryImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.events.impl;
 
 import java.io.IOException;
 import org.netbeans.api.project.Project;
@@ -26,22 +26,19 @@ import org.openide.filesystems.FileObject;
 import org.openide.util.lookup.ServiceProvider;
 
 @ServiceProvider(service=ProjectFactory.class)
-public class Plc4xHMISubProjectFactoryImpl implements ProjectFactory {
+public class Plc4xEventsSubProjectFactoryImpl implements ProjectFactory {
 
-    public static final String HMI_SUBPROJECT_DIRECTORY = "hmi";    
+    public static final String EVENTS_SUBPROJECT_DIRECTORY = "events"; 
     
     @Override
     public boolean isProject(FileObject fo) {
-        System.out.println("Carpeta: " + fo.isFolder());
-        System.out.println("Name: >" + fo.getName() +">");        
-        boolean isHMIFolder = 
fo.getName().equalsIgnoreCase(HMI_SUBPROJECT_DIRECTORY) && fo.isFolder();
-        System.out.println("isFolder: " + isHMIFolder);        
-        return isHMIFolder;
+        boolean isCommsFolder = 
fo.getName().equalsIgnoreCase(EVENTS_SUBPROJECT_DIRECTORY) && fo.isFolder();    
  
+        return isCommsFolder;
     }
 
     @Override
     public Project loadProject(FileObject fo, ProjectState ps) throws 
IOException {
-        return isProject(fo) ? new Plc4xHMISubProjectImpl(fo, ps) : null;
+        return isProject(fo) ? new Plc4xEventsSubProjectImpl(fo, ps) : null;
     }
 
     @Override
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
 
b/plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectImpl.java
similarity index 77%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
copy to 
plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectImpl.java
index 9ea2d1d..33d6958 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
+++ 
b/plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.events.impl;
 
 import java.beans.PropertyChangeListener;
 import javax.swing.Icon;
@@ -30,17 +30,17 @@ import org.openide.util.ImageUtilities;
 import org.openide.util.Lookup;
 import org.openide.util.lookup.Lookups;
 
-public class Plc4xHMISubProjectImpl implements  Project{
+public class Plc4xEventsSubProjectImpl implements  Project  {
 
     private final FileObject projectDir;
     private final ProjectState state;
-    private Lookup lkp;    
+    private Lookup lkp;      
 
-    public Plc4xHMISubProjectImpl(FileObject projectDir, ProjectState state) {
+    public Plc4xEventsSubProjectImpl(FileObject projectDir, ProjectState 
state) {
         this.projectDir = projectDir;
         this.state = state;
     }
-
+    
     @Override
     public FileObject getProjectDirectory() {
         return projectDir;
@@ -51,17 +51,17 @@ public class Plc4xHMISubProjectImpl implements  Project{
         if (lkp == null) {
             lkp = Lookups.fixed(new Object[]{
             // register your features here
-                new Plc4xHMISubProjectInformation(),
-                new Plc4xHMISubProjectLogicalViewProviderImpl(this),
+                new Plc4xEventsSubProjectInformation(),
+                new Plc4xEventsSubProjectLogicalViewProviderImpl(this),
             });
         }
         return lkp;
     }
     
-    private class Plc4xHMISubProjectInformation implements ProjectInformation {
+    private class Plc4xEventsSubProjectInformation implements 
ProjectInformation {
 
         @StaticResource()
-        public static final String HMI_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/hmi/nodes/PanelOperador.png";    
+        public static final String COMMS_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/events/nodes/FolderBlue.png";    
 
         @Override
         public String getName() {
@@ -75,12 +75,12 @@ public class Plc4xHMISubProjectImpl implements  Project{
 
         @Override
         public Icon getIcon() {
-            return new 
ImageIcon(ImageUtilities.loadImage(HMI_SUBPROJECT_ICON));
+            return new 
ImageIcon(ImageUtilities.loadImage(COMMS_SUBPROJECT_ICON));
         }
 
         @Override
         public Project getProject() {
-            return Plc4xHMISubProjectImpl.this;
+            return Plc4xEventsSubProjectImpl.this;
         }
 
         @Override
@@ -93,8 +93,6 @@ public class Plc4xHMISubProjectImpl implements  Project{
             //
         }
 
-    }
-    
-    
+    }    
     
 }
diff --git 
a/plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectLogicalViewProviderImpl.java
 
b/plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectLogicalViewProviderImpl.java
new file mode 100644
index 0000000..57e45a8
--- /dev/null
+++ 
b/plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectLogicalViewProviderImpl.java
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.malbec.events.impl;
+
+import java.awt.Image;
+import javax.swing.Action;
+import org.netbeans.api.annotations.common.StaticResource;
+import org.netbeans.api.project.Project;
+import org.netbeans.spi.project.ui.LogicalViewProvider;
+import org.netbeans.spi.project.ui.support.CommonProjectActions;
+import org.openide.filesystems.FileObject;
+import org.openide.loaders.DataFolder;
+import org.openide.loaders.DataObjectNotFoundException;
+import org.openide.nodes.AbstractNode;
+import org.openide.nodes.Children;
+import org.openide.nodes.FilterNode;
+import org.openide.nodes.Node;
+import org.openide.util.Exceptions;
+import org.openide.util.ImageUtilities;
+import org.openide.util.Lookup;
+import org.openide.util.lookup.Lookups;
+import org.openide.util.lookup.ProxyLookup;
+
+public class Plc4xEventsSubProjectLogicalViewProviderImpl implements  
LogicalViewProvider {
+
+    @StaticResource()
+    public static final String EVENTS_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/events/nodes/FolderBlue.png";
+    
+    private final Project project;
+
+    public Plc4xEventsSubProjectLogicalViewProviderImpl(Project project) {
+        this.project = null;
+    }
+    
+    @Override
+    public Node createLogicalView() {
+        try {
+            //Obtain the project directory's node:
+            FileObject projectDirectory = project.getProjectDirectory();
+            DataFolder projectFolder = DataFolder.findFolder(projectDirectory);
+            Node nodeOfProjectFolder = projectFolder.getNodeDelegate();
+            //Decorate the project directory's node:
+            return new ProjectNode(nodeOfProjectFolder, project);
+        } catch (DataObjectNotFoundException donfe) {
+            Exceptions.printStackTrace(donfe);
+            //Fallback-the directory couldn't be created -
+            //read-only filesystem or something evil happened
+            return new AbstractNode(Children.LEAF);
+        }
+    }
+
+    @Override
+    public Node findPath(Node node, Object o) {
+        return null;
+    }
+    
+    private final class ProjectNode extends FilterNode {
+
+        final Project project;
+
+        public ProjectNode(Node node, Project project)
+            throws DataObjectNotFoundException {
+            super(node,
+                    new FilterNode.Children(node),
+                    new ProxyLookup(
+                    new Lookup[]{
+                        Lookups.singleton(project),
+                        node.getLookup()
+                    }));
+            this.project = project;
+        }
+
+        @Override
+        public Action[] getActions(boolean arg0) {
+            return new Action[]{
+                        CommonProjectActions.newFileAction(),
+                        CommonProjectActions.copyProjectAction(),
+                        CommonProjectActions.deleteProjectAction(),
+                        CommonProjectActions.closeProjectAction()
+                    };
+        }
+
+        @Override
+        public Image getIcon(int type) {
+            return ImageUtilities.loadImage(EVENTS_SUBPROJECT_ICON);
+        }
+
+        @Override
+        public Image getOpenedIcon(int type) {
+            return getIcon(type);
+        }
+
+        @Override
+        public String getDisplayName() {
+            return project.getProjectDirectory().getName();
+        }
+
+    }    
+    
+}
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
 
b/plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectNodeFactoryImpl.java
similarity index 82%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
copy to 
plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectNodeFactoryImpl.java
index 8361771..e3741e1 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
+++ 
b/plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectNodeFactoryImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.events.impl;
 
 import java.awt.Image;
 import java.util.ArrayList;
@@ -31,20 +31,19 @@ import org.openide.loaders.DataObject;
 import org.openide.loaders.DataObjectNotFoundException;
 import org.openide.nodes.FilterNode;
 import org.openide.nodes.Node;
-import static org.openide.nodes.NodeTransfer.node;
 import org.openide.util.Exceptions;
 import org.openide.util.ImageUtilities;
 
[email protected](projectType = "org-plc4x-project", position = 10)
-public class Plc4xHMISubProjectNodeFactory implements NodeFactory{
-    
-    @StaticResource()
-    public static final String HMI_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/hmi/nodes/PanelOperador.png";    
[email protected](projectType = "org-plc4x-hmi-project", position = 20)
+public class Plc4xEventsSubProjectNodeFactoryImpl implements NodeFactory {
 
+    @StaticResource()
+    public static final String EVENTS_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/events/nodes/FolderBlue.png";      
+    
     @Override
     public NodeList<?> createNodes(Project project) {
-        Plc4xHMISubProjectProviderImpl rsp = project.getLookup().
-            lookup(Plc4xHMISubProjectProviderImpl.class);
+        Plc4xEventsSubProjectProviderImpl rsp = project.getLookup().
+            lookup(Plc4xEventsSubProjectProviderImpl.class);
         assert rsp != null;
         return new ProjectsNodeList(rsp.getSubprojects());
     }
@@ -83,11 +82,11 @@ public class Plc4xHMISubProjectNodeFactory implements 
NodeFactory{
                         getProjectDirectory()).getNodeDelegate()){
                     @Override
                     public Image getIcon(int type) {
-                        return ImageUtilities.loadImage(HMI_SUBPROJECT_ICON );
+                        return ImageUtilities.loadImage(EVENTS_SUBPROJECT_ICON 
);
                     }
                     @Override
                     public Image getOpenedIcon(int type) {
-                        return ImageUtilities.loadImage(HMI_SUBPROJECT_ICON );
+                        return ImageUtilities.loadImage(EVENTS_SUBPROJECT_ICON 
);
                     }
                 };
             } catch (DataObjectNotFoundException ex) {
@@ -105,7 +104,6 @@ public class Plc4xHMISubProjectNodeFactory implements 
NodeFactory{
         public void removeNotify() {
             //
         }
-    }    
-    
+    }       
     
 }
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
 
b/plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectProviderImpl.java
similarity index 79%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
copy to 
plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectProviderImpl.java
index 4d5b06d..0adadd5 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
+++ 
b/plc4j/tools/malbec/projecttype/events/src/main/java/org/apache/plc4x/malbec/events/impl/Plc4xEventsSubProjectProviderImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.events.impl;
 
 import java.io.IOException;
 import java.util.Collections;
@@ -29,14 +29,16 @@ import org.netbeans.spi.project.SubprojectProvider;
 import org.openide.filesystems.FileObject;
 import org.openide.util.Exceptions;
 
-public class Plc4xHMISubProjectProviderImpl implements SubprojectProvider {
-
-    private final Project project;
+public class Plc4xEventsSubProjectProviderImpl implements SubprojectProvider {
+    
+    public static final String EVENTS_SUBPROJECT_DIRECTORY = "events";     
+    
+    private final Project project;  
 
-    public Plc4xHMISubProjectProviderImpl(Project project) {
+    public Plc4xEventsSubProjectProviderImpl(Project project) {
         this.project = project;
     }
-    
+
     @Override
     public Set<? extends Project> getSubprojects() {
         return loadProjects(project.getProjectDirectory());
@@ -51,17 +53,17 @@ public class Plc4xHMISubProjectProviderImpl implements 
SubprojectProvider {
     public void removeChangeListener(ChangeListener cl) {
         //
     }
-    
+
     public Set loadProjects(FileObject dir) {
         Set newProjects = new HashSet();
-        FileObject reportsFolder = dir.getFileObject("hmi");
+        FileObject reportsFolder = 
dir.getFileObject(EVENTS_SUBPROJECT_DIRECTORY);
         if (reportsFolder != null) {
             for (FileObject childFolder : reportsFolder.getChildren()) {
                 try {
                     Project subp = ProjectManager.getDefault().
                         findProject(reportsFolder);
-                    if (subp != null && subp instanceof 
Plc4xHMISubProjectImpl) {
-                        newProjects.add((Plc4xHMISubProjectImpl) subp);
+                    if (subp != null && subp instanceof 
Plc4xEventsSubProjectImpl) {
+                        newProjects.add((Plc4xEventsSubProjectImpl) subp);
                     }
                 } catch (IOException ex) {
                     Exceptions.printStackTrace(ex);
@@ -71,6 +73,6 @@ public class Plc4xHMISubProjectProviderImpl implements 
SubprojectProvider {
             }
         }
         return Collections.unmodifiableSet(newProjects);
-    }    
+    }     
     
 }
diff --git a/plc4j/tools/malbec/projecttype/events/src/main/nbm/manifest.mf 
b/plc4j/tools/malbec/projecttype/events/src/main/nbm/manifest.mf
index 56fafca..d17d15b 100644
--- a/plc4j/tools/malbec/projecttype/events/src/main/nbm/manifest.mf
+++ b/plc4j/tools/malbec/projecttype/events/src/main/nbm/manifest.mf
@@ -1,3 +1,3 @@
 Manifest-Version: 1.0
-OpenIDE-Module-Localizing-Bundle: 
org/apache/plc4x/malbec/events/Bundle.properties
+OpenIDE-Module-Localizing-Bundle: 
org/apache/plc4x/malbec/events/impl/Bundle.properties
 
diff --git 
a/plc4j/tools/malbec/projecttype/events/src/main/resources/org/apache/plc4x/malbec/events/Bundle.properties
 
b/plc4j/tools/malbec/projecttype/events/src/main/resources/org/apache/plc4x/malbec/events/impl/Bundle.properties
similarity index 100%
rename from 
plc4j/tools/malbec/projecttype/events/src/main/resources/org/apache/plc4x/malbec/events/Bundle.properties
rename to 
plc4j/tools/malbec/projecttype/events/src/main/resources/org/apache/plc4x/malbec/events/impl/Bundle.properties
diff --git 
a/plc4j/tools/malbec/projecttype/events/src/main/resources/org/apache/plc4x/malbec/events/nodes/FolderBlue-Open.png
 
b/plc4j/tools/malbec/projecttype/events/src/main/resources/org/apache/plc4x/malbec/events/nodes/FolderBlue-Open.png
new file mode 100644
index 0000000..2225cb0
Binary files /dev/null and 
b/plc4j/tools/malbec/projecttype/events/src/main/resources/org/apache/plc4x/malbec/events/nodes/FolderBlue-Open.png
 differ
diff --git 
a/plc4j/tools/malbec/projecttype/events/src/main/resources/org/apache/plc4x/malbec/events/nodes/FolderBlue.png
 
b/plc4j/tools/malbec/projecttype/events/src/main/resources/org/apache/plc4x/malbec/events/nodes/FolderBlue.png
new file mode 100644
index 0000000..91800c1
Binary files /dev/null and 
b/plc4j/tools/malbec/projecttype/events/src/main/resources/org/apache/plc4x/malbec/events/nodes/FolderBlue.png
 differ
diff --git a/plc4j/tools/malbec/projecttype/hmi/pom.xml 
b/plc4j/tools/malbec/projecttype/hmi/pom.xml
index 4c788c0..ae3bf05 100644
--- a/plc4j/tools/malbec/projecttype/hmi/pom.xml
+++ b/plc4j/tools/malbec/projecttype/hmi/pom.xml
@@ -116,8 +116,23 @@
         <dependency>
             <groupId>org.netbeans.api</groupId>
             <artifactId>org-netbeans-modules-projectuiapi</artifactId>
-            <version>RELEASE280</version>
+            <version>${netbeans.version}</version>
             <type>jar</type>
         </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x.malbec.comms</groupId>
+            <artifactId>comms</artifactId>
+            <version>0.13.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x.malbec.recipes</groupId>
+            <artifactId>recipes</artifactId>
+            <version>0.13.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x.malbec.events</groupId>
+            <artifactId>events</artifactId>
+            <version>0.13.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMICustomizerProviderImpl.java
 
b/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMICustomizerProviderImpl.java
new file mode 100644
index 0000000..77cac9c
--- /dev/null
+++ 
b/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMICustomizerProviderImpl.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.malbec.hmi.impl;
+
+import java.awt.Dialog;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import org.netbeans.api.project.Project;
+import org.netbeans.api.project.ProjectUtils;
+import org.netbeans.spi.project.ui.CustomizerProvider2;
+import org.netbeans.spi.project.ui.support.ProjectCustomizer;
+import org.openide.awt.StatusDisplayer;
+import org.openide.util.lookup.Lookups;
+
+public class Plc4xHMICustomizerProviderImpl implements CustomizerProvider2 {
+
+    public final Project project;
+
+    public static final String HMI_CUSTOMIZER_FOLDER_PATH =
+            "Projects/org-plc4x-hmi-project/Customizer";    
+
+    public Plc4xHMICustomizerProviderImpl(Project project) {
+        this.project = project;
+    }
+    
+    @Override
+    public void showCustomizer(String string, String string1) {
+        //
+    }
+
+    @Override
+    public void showCustomizer() {
+        Dialog dialog =  ProjectCustomizer.createCustomizerDialog(
+                //Path to layer folder:
+                HMI_CUSTOMIZER_FOLDER_PATH,
+                //Lookup, which must contain, at least, the Project:
+                Lookups.fixed(project),
+                //Preselected category:
+                "",
+                //OK button listener:
+                new OKOptionListener(),
+                //HelpCtx for Help button of dialog:
+                null);
+        dialog.setTitle(ProjectUtils.getInformation(project).getDisplayName());
+        dialog.setVisible(true);
+    }
+    
+    private class OKOptionListener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            StatusDisplayer.getDefault().setStatusText("OK button clicked for "
+                    + project.getProjectDirectory().getName() + " 
customizer!");
+        }
+
+    }
+    
+}
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
 
b/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
index f17a3b3..d3ba3db 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
+++ 
b/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
@@ -31,11 +31,8 @@ public class Plc4xHMISubProjectFactoryImpl implements 
ProjectFactory {
     public static final String HMI_SUBPROJECT_DIRECTORY = "hmi";    
     
     @Override
-    public boolean isProject(FileObject fo) {
-        System.out.println("Carpeta: " + fo.isFolder());
-        System.out.println("Name: >" + fo.getName() +">");        
-        boolean isHMIFolder = 
fo.getName().equalsIgnoreCase(HMI_SUBPROJECT_DIRECTORY) && fo.isFolder();
-        System.out.println("isFolder: " + isHMIFolder);        
+    public boolean isProject(FileObject fo) {     
+        boolean isHMIFolder = 
fo.getName().equalsIgnoreCase(HMI_SUBPROJECT_DIRECTORY) && fo.isFolder();      
         return isHMIFolder;
     }
 
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
 
b/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
index 9ea2d1d..636af24 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
+++ 
b/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
@@ -21,6 +21,9 @@ package org.apache.plc4x.malbec.hmi.impl;
 import java.beans.PropertyChangeListener;
 import javax.swing.Icon;
 import javax.swing.ImageIcon;
+import org.apache.plc4x.malbec.comms.impl.Plc4xCommsSubProjectProviderImpl;
+import org.apache.plc4x.malbec.events.impl.Plc4xEventsSubProjectProviderImpl;
+import org.apache.plc4x.malbec.recipes.impl.Plc4xRecipesSubProjectProviderImpl;
 import org.netbeans.api.annotations.common.StaticResource;
 import org.netbeans.api.project.Project;
 import org.netbeans.api.project.ProjectInformation;
@@ -30,7 +33,7 @@ import org.openide.util.ImageUtilities;
 import org.openide.util.Lookup;
 import org.openide.util.lookup.Lookups;
 
-public class Plc4xHMISubProjectImpl implements  Project{
+public class Plc4xHMISubProjectImpl implements  Project {
 
     private final FileObject projectDir;
     private final ProjectState state;
@@ -53,6 +56,10 @@ public class Plc4xHMISubProjectImpl implements  Project{
             // register your features here
                 new Plc4xHMISubProjectInformation(),
                 new Plc4xHMISubProjectLogicalViewProviderImpl(this),
+                new Plc4xHMICustomizerProviderImpl(this),
+                new Plc4xCommsSubProjectProviderImpl(this), 
+                new Plc4xEventsSubProjectProviderImpl(this), 
+                new Plc4xRecipesSubProjectProviderImpl(this),                 
             });
         }
         return lkp;
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
 
b/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactoryImpl.java
similarity index 98%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
copy to 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactoryImpl.java
index 8361771..db33a0a 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
+++ 
b/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactoryImpl.java
@@ -36,7 +36,7 @@ import org.openide.util.Exceptions;
 import org.openide.util.ImageUtilities;
 
 @NodeFactory.Registration(projectType = "org-plc4x-project", position = 10)
-public class Plc4xHMISubProjectNodeFactory implements NodeFactory{
+public class Plc4xHMISubProjectNodeFactoryImpl implements NodeFactory{
     
     @StaticResource()
     public static final String HMI_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/hmi/nodes/PanelOperador.png";    
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
 
b/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
index 4d5b06d..bbb3c36 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
+++ 
b/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
@@ -31,6 +31,8 @@ import org.openide.util.Exceptions;
 
 public class Plc4xHMISubProjectProviderImpl implements SubprojectProvider {
 
+    public static final String HMI_SUBPROJECT_DIRECTORY = "hmi";     
+    
     private final Project project;
 
     public Plc4xHMISubProjectProviderImpl(Project project) {
@@ -52,9 +54,14 @@ public class Plc4xHMISubProjectProviderImpl implements 
SubprojectProvider {
         //
     }
     
+    /*
+    * 
+    */
     public Set loadProjects(FileObject dir) {
         Set newProjects = new HashSet();
-        FileObject reportsFolder = dir.getFileObject("hmi");
+        FileObject reportsFolder = dir.getFileObject(HMI_SUBPROJECT_DIRECTORY);
+        System.out.println("2> " + dir.getName());
+        System.out.println("3> " + dir.getPath());
         if (reportsFolder != null) {
             for (FileObject childFolder : reportsFolder.getChildren()) {
                 try {
diff --git a/plc4j/tools/malbec/projecttype/malbec-projecttype/pom.xml 
b/plc4j/tools/malbec/projecttype/malbec-projecttype/pom.xml
index e6ed9a4..64d9077 100644
--- a/plc4j/tools/malbec/projecttype/malbec-projecttype/pom.xml
+++ b/plc4j/tools/malbec/projecttype/malbec-projecttype/pom.xml
@@ -112,5 +112,20 @@
             <artifactId>hmi</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x.malbec.comms</groupId>
+            <artifactId>comms</artifactId>
+            <version>0.13.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x.malbec.events</groupId>
+            <artifactId>events</artifactId>
+            <version>0.13.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x.malbec.recipes</groupId>
+            <artifactId>recipes</artifactId>
+            <version>0.13.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git 
a/plc4j/tools/malbec/projecttype/malbec-projecttype/src/main/java/org/apache/plc4x/malbec/projecttype/impl/Plc4xProjectImpl.java
 
b/plc4j/tools/malbec/projecttype/malbec-projecttype/src/main/java/org/apache/plc4x/malbec/projecttype/impl/Plc4xProjectImpl.java
index 2d98aaa..893c16e 100644
--- 
a/plc4j/tools/malbec/projecttype/malbec-projecttype/src/main/java/org/apache/plc4x/malbec/projecttype/impl/Plc4xProjectImpl.java
+++ 
b/plc4j/tools/malbec/projecttype/malbec-projecttype/src/main/java/org/apache/plc4x/malbec/projecttype/impl/Plc4xProjectImpl.java
@@ -21,8 +21,11 @@ package org.apache.plc4x.malbec.projecttype.impl;
 import java.beans.PropertyChangeListener;
 import javax.swing.Icon;
 import javax.swing.ImageIcon;
+import org.apache.plc4x.malbec.comms.impl.Plc4xCommsSubProjectProviderImpl;
+import org.apache.plc4x.malbec.events.impl.Plc4xEventsSubProjectProviderImpl;
 import org.apache.plc4x.malbec.hmi.impl.Plc4xHMISubProjectProviderImpl;
 import org.apache.plc4x.malbec.projecttype.panels.Plc4xGeneralPropertiesImpl;
+import org.apache.plc4x.malbec.recipes.impl.Plc4xRecipesSubProjectProviderImpl;
 import org.netbeans.api.annotations.common.StaticResource;
 import org.netbeans.api.project.Project;
 import org.netbeans.api.project.ProjectInformation;
@@ -58,8 +61,8 @@ public class Plc4xProjectImpl implements Project{
                 new Plc4xProjectInfoImpl(),
                 new Plc4xProjectLogicalViewImpl(this),
                 new Plc4xCustomizerProviderImpl(this),
-                new Plc4xHMISubProjectProviderImpl(this),
                 new Plc4xGeneralPropertiesImpl(),
+                new Plc4xHMISubProjectProviderImpl(this),                
             });
         }
         return lkp;
diff --git a/plc4j/tools/malbec/projecttype/recipes/nb-configuration.xml 
b/plc4j/tools/malbec/projecttype/recipes/nb-configuration.xml
new file mode 100644
index 0000000..996b1a3
--- /dev/null
+++ b/plc4j/tools/malbec/projecttype/recipes/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+    <!--
+This file contains additional configuration written by modules in the NetBeans 
IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be 
limited or fail altogether.
+-->
+    <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1";>
+        <!--
+Properties that influence various parts of the IDE, especially code formatting 
and the like. 
+You can copy and paste the single properties, into the pom.xml file and the 
IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting 
rules for example).
+Any value defined here will override the pom.xml file value but is only 
applicable to the current project.
+-->
+        <netbeans.hint.jdkPlatform>Zulu_21.0.9_10</netbeans.hint.jdkPlatform>
+    </properties>
+</project-shared-configuration>
diff --git a/plc4j/tools/malbec/projecttype/recipes/pom.xml 
b/plc4j/tools/malbec/projecttype/recipes/pom.xml
index 31e3aef..b4f0ae2 100644
--- a/plc4j/tools/malbec/projecttype/recipes/pom.xml
+++ b/plc4j/tools/malbec/projecttype/recipes/pom.xml
@@ -15,6 +15,11 @@
                 <groupId>org.apache.netbeans.utilities</groupId>
                 <artifactId>nbm-maven-plugin</artifactId>
                 <extensions>true</extensions>
+                <configuration>
+                    <publicPackages>
+                        
<publicPackage>org.apache.plc4x.malbec.recipes.impl</publicPackage>
+                    </publicPackages>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
@@ -25,13 +30,93 @@
                     </archive>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.14.1</version>
+                <configuration>
+                    <showDeprecation>false</showDeprecation>
+                    <proc>full</proc>
+                </configuration>
+            </plugin>              
         </plugins>
     </build>
     <dependencies>
-        <dependency>
+       <dependency>
             <groupId>org.netbeans.api</groupId>
             <artifactId>org-netbeans-api-annotations-common</artifactId>
             <version>${netbeans.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-api-templates</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-filesystems</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-loaders</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-nodes</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util-lookup</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util-ui</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-windows</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-text</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-core-multiview</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-awt</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-dialogs</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-modules-projectapi</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-modules-projectuiapi</artifactId>
+            <version>${netbeans.version}</version>
+            <type>jar</type>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
 
b/plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectFactoryImpl.java
similarity index 71%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
copy to 
plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectFactoryImpl.java
index f17a3b3..17cd842 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectFactoryIMpl.java
+++ 
b/plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectFactoryImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.recipes.impl;
 
 import java.io.IOException;
 import org.netbeans.api.project.Project;
@@ -26,22 +26,19 @@ import org.openide.filesystems.FileObject;
 import org.openide.util.lookup.ServiceProvider;
 
 @ServiceProvider(service=ProjectFactory.class)
-public class Plc4xHMISubProjectFactoryImpl implements ProjectFactory {
+public class Plc4xRecipesSubProjectFactoryImpl implements ProjectFactory {
 
-    public static final String HMI_SUBPROJECT_DIRECTORY = "hmi";    
+    public static final String RECIPES_SUBPROJECT_DIRECTORY = "recipes"; 
     
     @Override
     public boolean isProject(FileObject fo) {
-        System.out.println("Carpeta: " + fo.isFolder());
-        System.out.println("Name: >" + fo.getName() +">");        
-        boolean isHMIFolder = 
fo.getName().equalsIgnoreCase(HMI_SUBPROJECT_DIRECTORY) && fo.isFolder();
-        System.out.println("isFolder: " + isHMIFolder);        
-        return isHMIFolder;
+        boolean isCommsFolder = 
fo.getName().equalsIgnoreCase(RECIPES_SUBPROJECT_DIRECTORY) && fo.isFolder();   
   
+        return isCommsFolder;
     }
 
     @Override
     public Project loadProject(FileObject fo, ProjectState ps) throws 
IOException {
-        return isProject(fo) ? new Plc4xHMISubProjectImpl(fo, ps) : null;
+        return isProject(fo) ? new Plc4xRecipesSubProjectImpl(fo, ps) : null;
     }
 
     @Override
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
 
b/plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectImpl.java
similarity index 76%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
copy to 
plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectImpl.java
index 9ea2d1d..34c19b7 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectImpl.java
+++ 
b/plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.recipes.impl;
 
 import java.beans.PropertyChangeListener;
 import javax.swing.Icon;
@@ -30,17 +30,17 @@ import org.openide.util.ImageUtilities;
 import org.openide.util.Lookup;
 import org.openide.util.lookup.Lookups;
 
-public class Plc4xHMISubProjectImpl implements  Project{
+public class Plc4xRecipesSubProjectImpl implements  Project  {
 
     private final FileObject projectDir;
     private final ProjectState state;
-    private Lookup lkp;    
+    private Lookup lkp;      
 
-    public Plc4xHMISubProjectImpl(FileObject projectDir, ProjectState state) {
+    public Plc4xRecipesSubProjectImpl(FileObject projectDir, ProjectState 
state) {
         this.projectDir = projectDir;
         this.state = state;
     }
-
+    
     @Override
     public FileObject getProjectDirectory() {
         return projectDir;
@@ -51,17 +51,17 @@ public class Plc4xHMISubProjectImpl implements  Project{
         if (lkp == null) {
             lkp = Lookups.fixed(new Object[]{
             // register your features here
-                new Plc4xHMISubProjectInformation(),
-                new Plc4xHMISubProjectLogicalViewProviderImpl(this),
+                new Plc4xRecipesSubProjectInformation(),
+                new Plc4xRecipesSubProjectLogicalViewProviderImpl(this),
             });
         }
         return lkp;
     }
     
-    private class Plc4xHMISubProjectInformation implements ProjectInformation {
+    private class Plc4xRecipesSubProjectInformation implements 
ProjectInformation {
 
         @StaticResource()
-        public static final String HMI_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/hmi/nodes/PanelOperador.png";    
+        public static final String RECIPES_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/recipes/nodes/FolderBlue.png";    
 
         @Override
         public String getName() {
@@ -75,12 +75,12 @@ public class Plc4xHMISubProjectImpl implements  Project{
 
         @Override
         public Icon getIcon() {
-            return new 
ImageIcon(ImageUtilities.loadImage(HMI_SUBPROJECT_ICON));
+            return new 
ImageIcon(ImageUtilities.loadImage(RECIPES_SUBPROJECT_ICON));
         }
 
         @Override
         public Project getProject() {
-            return Plc4xHMISubProjectImpl.this;
+            return Plc4xRecipesSubProjectImpl.this;
         }
 
         @Override
@@ -93,8 +93,6 @@ public class Plc4xHMISubProjectImpl implements  Project{
             //
         }
 
-    }
-    
-    
+    }    
     
 }
diff --git 
a/plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectLogicalViewProviderImpl.java
 
b/plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectLogicalViewProviderImpl.java
new file mode 100644
index 0000000..922e87f
--- /dev/null
+++ 
b/plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectLogicalViewProviderImpl.java
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.malbec.recipes.impl;
+
+import java.awt.Image;
+import javax.swing.Action;
+import org.netbeans.api.annotations.common.StaticResource;
+import org.netbeans.api.project.Project;
+import org.netbeans.spi.project.ui.LogicalViewProvider;
+import org.netbeans.spi.project.ui.support.CommonProjectActions;
+import org.openide.filesystems.FileObject;
+import org.openide.loaders.DataFolder;
+import org.openide.loaders.DataObjectNotFoundException;
+import org.openide.nodes.AbstractNode;
+import org.openide.nodes.Children;
+import org.openide.nodes.FilterNode;
+import org.openide.nodes.Node;
+import org.openide.util.Exceptions;
+import org.openide.util.ImageUtilities;
+import org.openide.util.Lookup;
+import org.openide.util.lookup.Lookups;
+import org.openide.util.lookup.ProxyLookup;
+
+public class Plc4xRecipesSubProjectLogicalViewProviderImpl implements  
LogicalViewProvider {
+
+    @StaticResource()
+    public static final String RECIPES_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/recipes/nodes/FolderBlue.png";
+    
+    private final Project project;
+
+    public Plc4xRecipesSubProjectLogicalViewProviderImpl(Project project) {
+        this.project = null;
+    }
+    
+    @Override
+    public Node createLogicalView() {
+        try {
+            //Obtain the project directory's node:
+            FileObject projectDirectory = project.getProjectDirectory();
+            DataFolder projectFolder = DataFolder.findFolder(projectDirectory);
+            Node nodeOfProjectFolder = projectFolder.getNodeDelegate();
+            //Decorate the project directory's node:
+            return new ProjectNode(nodeOfProjectFolder, project);
+        } catch (DataObjectNotFoundException donfe) {
+            Exceptions.printStackTrace(donfe);
+            //Fallback-the directory couldn't be created -
+            //read-only filesystem or something evil happened
+            return new AbstractNode(Children.LEAF);
+        }
+    }
+
+    @Override
+    public Node findPath(Node node, Object o) {
+        return null;
+    }
+    
+    private final class ProjectNode extends FilterNode {
+
+        final Project project;
+
+        public ProjectNode(Node node, Project project)
+            throws DataObjectNotFoundException {
+            super(node,
+                    new FilterNode.Children(node),
+                    new ProxyLookup(
+                    new Lookup[]{
+                        Lookups.singleton(project),
+                        node.getLookup()
+                    }));
+            this.project = project;
+        }
+
+        @Override
+        public Action[] getActions(boolean arg0) {
+            return new Action[]{
+                        CommonProjectActions.newFileAction(),
+                        CommonProjectActions.copyProjectAction(),
+                        CommonProjectActions.deleteProjectAction(),
+                        CommonProjectActions.closeProjectAction()
+                    };
+        }
+
+        @Override
+        public Image getIcon(int type) {
+            return ImageUtilities.loadImage(RECIPES_SUBPROJECT_ICON);
+        }
+
+        @Override
+        public Image getOpenedIcon(int type) {
+            return getIcon(type);
+        }
+
+        @Override
+        public String getDisplayName() {
+            return project.getProjectDirectory().getName();
+        }
+
+    }    
+    
+}
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
 
b/plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectNodeFactoryImpl.java
similarity index 82%
rename from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
rename to 
plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectNodeFactoryImpl.java
index 8361771..9c4ec5d 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectNodeFactory.java
+++ 
b/plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectNodeFactoryImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.recipes.impl;
 
 import java.awt.Image;
 import java.util.ArrayList;
@@ -31,20 +31,19 @@ import org.openide.loaders.DataObject;
 import org.openide.loaders.DataObjectNotFoundException;
 import org.openide.nodes.FilterNode;
 import org.openide.nodes.Node;
-import static org.openide.nodes.NodeTransfer.node;
 import org.openide.util.Exceptions;
 import org.openide.util.ImageUtilities;
 
[email protected](projectType = "org-plc4x-project", position = 10)
-public class Plc4xHMISubProjectNodeFactory implements NodeFactory{
-    
-    @StaticResource()
-    public static final String HMI_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/hmi/nodes/PanelOperador.png";    
[email protected](projectType = "org-plc4x-hmi-project", position = 30)
+public class Plc4xRecipesSubProjectNodeFactoryImpl implements NodeFactory {
 
+    @StaticResource()
+    public static final String RECIPES_SUBPROJECT_ICON = 
"org/apache/plc4x/malbec/recipes/nodes/FolderBlue.png";      
+    
     @Override
     public NodeList<?> createNodes(Project project) {
-        Plc4xHMISubProjectProviderImpl rsp = project.getLookup().
-            lookup(Plc4xHMISubProjectProviderImpl.class);
+        Plc4xRecipesSubProjectProviderImpl rsp = project.getLookup().
+            lookup(Plc4xRecipesSubProjectProviderImpl.class);
         assert rsp != null;
         return new ProjectsNodeList(rsp.getSubprojects());
     }
@@ -83,11 +82,11 @@ public class Plc4xHMISubProjectNodeFactory implements 
NodeFactory{
                         getProjectDirectory()).getNodeDelegate()){
                     @Override
                     public Image getIcon(int type) {
-                        return ImageUtilities.loadImage(HMI_SUBPROJECT_ICON );
+                        return 
ImageUtilities.loadImage(RECIPES_SUBPROJECT_ICON );
                     }
                     @Override
                     public Image getOpenedIcon(int type) {
-                        return ImageUtilities.loadImage(HMI_SUBPROJECT_ICON );
+                        return 
ImageUtilities.loadImage(RECIPES_SUBPROJECT_ICON );
                     }
                 };
             } catch (DataObjectNotFoundException ex) {
@@ -105,7 +104,6 @@ public class Plc4xHMISubProjectNodeFactory implements 
NodeFactory{
         public void removeNotify() {
             //
         }
-    }    
-    
+    }       
     
 }
diff --git 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
 
b/plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectProviderImpl.java
similarity index 79%
copy from 
plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
copy to 
plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectProviderImpl.java
index 4d5b06d..1508b67 100644
--- 
a/plc4j/tools/malbec/projecttype/hmi/src/main/java/org/apache/plc4x/malbec/hmi/impl/Plc4xHMISubProjectProviderImpl.java
+++ 
b/plc4j/tools/malbec/projecttype/recipes/src/main/java/org/apache/plc4x/malbec/recipes/impl/Plc4xRecipesSubProjectProviderImpl.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.plc4x.malbec.hmi.impl;
+package org.apache.plc4x.malbec.recipes.impl;
 
 import java.io.IOException;
 import java.util.Collections;
@@ -29,14 +29,16 @@ import org.netbeans.spi.project.SubprojectProvider;
 import org.openide.filesystems.FileObject;
 import org.openide.util.Exceptions;
 
-public class Plc4xHMISubProjectProviderImpl implements SubprojectProvider {
-
-    private final Project project;
+public class Plc4xRecipesSubProjectProviderImpl implements SubprojectProvider {
+    
+    public static final String RECIPES_SUBPROJECT_DIRECTORY = "recipes";     
+    
+    private final Project project;  
 
-    public Plc4xHMISubProjectProviderImpl(Project project) {
+    public Plc4xRecipesSubProjectProviderImpl(Project project) {
         this.project = project;
     }
-    
+
     @Override
     public Set<? extends Project> getSubprojects() {
         return loadProjects(project.getProjectDirectory());
@@ -51,17 +53,17 @@ public class Plc4xHMISubProjectProviderImpl implements 
SubprojectProvider {
     public void removeChangeListener(ChangeListener cl) {
         //
     }
-    
+
     public Set loadProjects(FileObject dir) {
         Set newProjects = new HashSet();
-        FileObject reportsFolder = dir.getFileObject("hmi");
+        FileObject reportsFolder = 
dir.getFileObject(RECIPES_SUBPROJECT_DIRECTORY);
         if (reportsFolder != null) {
             for (FileObject childFolder : reportsFolder.getChildren()) {
                 try {
                     Project subp = ProjectManager.getDefault().
                         findProject(reportsFolder);
-                    if (subp != null && subp instanceof 
Plc4xHMISubProjectImpl) {
-                        newProjects.add((Plc4xHMISubProjectImpl) subp);
+                    if (subp != null && subp instanceof 
Plc4xRecipesSubProjectImpl) {
+                        newProjects.add((Plc4xRecipesSubProjectImpl) subp);
                     }
                 } catch (IOException ex) {
                     Exceptions.printStackTrace(ex);
@@ -71,6 +73,6 @@ public class Plc4xHMISubProjectProviderImpl implements 
SubprojectProvider {
             }
         }
         return Collections.unmodifiableSet(newProjects);
-    }    
+    }     
     
 }
diff --git a/plc4j/tools/malbec/projecttype/recipes/src/main/nbm/manifest.mf 
b/plc4j/tools/malbec/projecttype/recipes/src/main/nbm/manifest.mf
index c7e009b..2416754 100644
--- a/plc4j/tools/malbec/projecttype/recipes/src/main/nbm/manifest.mf
+++ b/plc4j/tools/malbec/projecttype/recipes/src/main/nbm/manifest.mf
@@ -1,3 +1,3 @@
 Manifest-Version: 1.0
-OpenIDE-Module-Localizing-Bundle: 
org/apache/plc4x/malbec/recipes/Bundle.properties
+OpenIDE-Module-Localizing-Bundle: 
org/apache/plc4x/malbec/recipes/nodes/Bundle.properties
 
diff --git 
a/plc4j/tools/malbec/projecttype/recipes/src/main/resources/org/apache/plc4x/malbec/recipes/Bundle.properties
 
b/plc4j/tools/malbec/projecttype/recipes/src/main/resources/org/apache/plc4x/malbec/recipes/nodes/Bundle.properties
similarity index 100%
rename from 
plc4j/tools/malbec/projecttype/recipes/src/main/resources/org/apache/plc4x/malbec/recipes/Bundle.properties
rename to 
plc4j/tools/malbec/projecttype/recipes/src/main/resources/org/apache/plc4x/malbec/recipes/nodes/Bundle.properties
diff --git 
a/plc4j/tools/malbec/projecttype/recipes/src/main/resources/org/apache/plc4x/malbec/recipes/nodes/FolderBlue-Open.png
 
b/plc4j/tools/malbec/projecttype/recipes/src/main/resources/org/apache/plc4x/malbec/recipes/nodes/FolderBlue-Open.png
new file mode 100644
index 0000000..2225cb0
Binary files /dev/null and 
b/plc4j/tools/malbec/projecttype/recipes/src/main/resources/org/apache/plc4x/malbec/recipes/nodes/FolderBlue-Open.png
 differ
diff --git 
a/plc4j/tools/malbec/projecttype/recipes/src/main/resources/org/apache/plc4x/malbec/recipes/nodes/FolderBlue.png
 
b/plc4j/tools/malbec/projecttype/recipes/src/main/resources/org/apache/plc4x/malbec/recipes/nodes/FolderBlue.png
new file mode 100644
index 0000000..91800c1
Binary files /dev/null and 
b/plc4j/tools/malbec/projecttype/recipes/src/main/resources/org/apache/plc4x/malbec/recipes/nodes/FolderBlue.png
 differ


Reply via email to