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 147af63  Including Project Type Module.
147af63 is described below

commit 147af63829f873893003acf2a2012f665a628232
Author: César García <[email protected]>
AuthorDate: Sat Jan 10 18:13:47 2026 -0400

    Including Project Type Module.
---
 plc4j/tools/app/app-projecttype/pom.xml            |  90 +++++++++++++++++++++
 .../plc4x/app/projecttype/impl/Plc4xProject.java   |  88 ++++++++++++++++++++
 .../projecttype/impl/Plc4xProjectFactoryImpl.java  |  35 ++++++++
 .../apache/plc4x/app/projecttype/impl/Proyecto.png | Bin 0 -> 456 bytes
 .../app/app-projecttype/src/main/nbm/manifest.mf   |   3 +
 .../apache/plc4x/app/projecttype/Bundle.properties |   6 ++
 plc4j/tools/app/application/pom.xml                |  11 +++
 plc4j/tools/app/pom.xml                            |   3 +-
 8 files changed, 235 insertions(+), 1 deletion(-)

diff --git a/plc4j/tools/app/app-projecttype/pom.xml 
b/plc4j/tools/app/app-projecttype/pom.xml
new file mode 100644
index 0000000..1f85a4e
--- /dev/null
+++ b/plc4j/tools/app/app-projecttype/pom.xml
@@ -0,0 +1,90 @@
+<?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>app-parent</artifactId>
+        <version>0.13.0-SNAPSHOT</version>
+    </parent>
+    <groupId>org.apache.plc4x.app.projecttype</groupId>
+    <artifactId>app-projecttype</artifactId>
+    <packaging>nbm</packaging>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.netbeans.utilities</groupId>
+                <artifactId>nbm-maven-plugin</artifactId>
+                <extensions>true</extensions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <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-openide-loaders</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-openide-filesystems</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-nodes</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>
+        </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-util</artifactId>
+            <version>${netbeans.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util-ui</artifactId>
+            <version>RELEASE280</version>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
\ No newline at end of file
diff --git 
a/plc4j/tools/app/app-projecttype/src/main/java/org/apache/plc4x/app/projecttype/impl/Plc4xProject.java
 
b/plc4j/tools/app/app-projecttype/src/main/java/org/apache/plc4x/app/projecttype/impl/Plc4xProject.java
new file mode 100644
index 0000000..4e04caa
--- /dev/null
+++ 
b/plc4j/tools/app/app-projecttype/src/main/java/org/apache/plc4x/app/projecttype/impl/Plc4xProject.java
@@ -0,0 +1,88 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt 
to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit 
this template
+ */
+package org.apache.plc4x.app.projecttype.impl;
+
+import java.beans.PropertyChangeListener;
+import javax.swing.Icon;
+import javax.swing.ImageIcon;
+import org.netbeans.api.annotations.common.StaticResource;
+import org.netbeans.api.project.Project;
+import org.netbeans.api.project.ProjectInformation;
+import org.netbeans.spi.project.ProjectState;
+import org.openide.filesystems.FileObject;
+import org.openide.util.ImageUtilities;
+import org.openide.util.Lookup;
+import org.openide.util.lookup.Lookups;
+
+/**
+ *
+ * @author cgarcia
+ */
+public class Plc4xProject implements  Project {
+
+    private final FileObject projectDir;
+    private final ProjectState state;
+    private Lookup lkp;    
+    
+   Plc4xProject(FileObject dir, ProjectState state) {
+        this.projectDir = dir;
+        this.state = state;
+    }    
+    
+    @Override
+    public FileObject getProjectDirectory() {
+        return projectDir;
+    }
+
+    @Override
+    public Lookup getLookup() {
+        if (lkp == null) {
+            lkp = Lookups.fixed(new Object[]{
+
+            // register your features here
+
+            });
+        }
+        return lkp;
+    }
+    
+    private class Plc4xProjectInformation implements  ProjectInformation {
+
+        @StaticResource()
+        public static final String CUSTOMER_ICON = 
"org/apache/plc4x/app/projecttype/impl/Proyecto.png";    
+
+        @Override
+        public String getName() {
+            return getProjectDirectory().getName();
+        }
+
+        @Override
+        public String getDisplayName() {
+            return getName();
+        }
+
+        @Override
+        public Icon getIcon() {
+            return new ImageIcon(ImageUtilities.loadImage(CUSTOMER_ICON));
+        }
+
+        @Override
+        public Project getProject() {
+            return Plc4xProject.this;
+        }
+
+        @Override
+        public void addPropertyChangeListener(PropertyChangeListener pl) {
+            //
+        }
+
+        @Override
+        public void removePropertyChangeListener(PropertyChangeListener pl) {
+            //
+        }
+
+    }    
+    
+}
diff --git 
a/plc4j/tools/app/app-projecttype/src/main/java/org/apache/plc4x/app/projecttype/impl/Plc4xProjectFactoryImpl.java
 
b/plc4j/tools/app/app-projecttype/src/main/java/org/apache/plc4x/app/projecttype/impl/Plc4xProjectFactoryImpl.java
new file mode 100644
index 0000000..9e24c39
--- /dev/null
+++ 
b/plc4j/tools/app/app-projecttype/src/main/java/org/apache/plc4x/app/projecttype/impl/Plc4xProjectFactoryImpl.java
@@ -0,0 +1,35 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt 
to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit 
this template
+ */
+package org.apache.plc4x.app.projecttype.impl;
+
+import java.io.IOException;
+import org.netbeans.api.project.Project;
+import org.netbeans.spi.project.ProjectFactory;
+import org.netbeans.spi.project.ProjectState;
+import org.openide.filesystems.FileObject;
+import org.openide.util.lookup.ServiceProvider;
+
+
+@ServiceProvider(service=ProjectFactory.class)
+public class Plc4xProjectFactoryImpl implements ProjectFactory {
+
+    public static final String PROJECT_FILE = "plc4xproject.xml";
+    
+    @Override
+    public boolean isProject(FileObject fo) {
+        return fo.getFileObject(PROJECT_FILE) != null;
+    }
+
+    @Override
+    public Project loadProject(FileObject fo, ProjectState ps) throws 
IOException {
+        return isProject(fo) ? new Plc4xProject(fo, ps) : null;
+    }
+
+    @Override
+    public void saveProject(Project prjct) throws IOException, 
ClassCastException {
+        //
+    }
+    
+}
diff --git 
a/plc4j/tools/app/app-projecttype/src/main/java/org/apache/plc4x/app/projecttype/impl/Proyecto.png
 
b/plc4j/tools/app/app-projecttype/src/main/java/org/apache/plc4x/app/projecttype/impl/Proyecto.png
new file mode 100644
index 0000000..a50403a
Binary files /dev/null and 
b/plc4j/tools/app/app-projecttype/src/main/java/org/apache/plc4x/app/projecttype/impl/Proyecto.png
 differ
diff --git a/plc4j/tools/app/app-projecttype/src/main/nbm/manifest.mf 
b/plc4j/tools/app/app-projecttype/src/main/nbm/manifest.mf
new file mode 100644
index 0000000..5b2b049
--- /dev/null
+++ b/plc4j/tools/app/app-projecttype/src/main/nbm/manifest.mf
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+OpenIDE-Module-Localizing-Bundle: 
org/apache/plc4x/app/projecttype/Bundle.properties
+
diff --git 
a/plc4j/tools/app/app-projecttype/src/main/resources/org/apache/plc4x/app/projecttype/Bundle.properties
 
b/plc4j/tools/app/app-projecttype/src/main/resources/org/apache/plc4x/app/projecttype/Bundle.properties
new file mode 100644
index 0000000..e6c4e9e
--- /dev/null
+++ 
b/plc4j/tools/app/app-projecttype/src/main/resources/org/apache/plc4x/app/projecttype/Bundle.properties
@@ -0,0 +1,6 @@
+#Localized module labels. Defaults taken from POM (<name>, <description>, 
<groupId>) if unset.
+#OpenIDE-Module-Name=
+#OpenIDE-Module-Short-Description=
+#OpenIDE-Module-Long-Description=
+#OpenIDE-Module-Display-Category=
+#Sat Jan 10 10:43:30 GMT-04:00 2026
diff --git a/plc4j/tools/app/application/pom.xml 
b/plc4j/tools/app/application/pom.xml
index e2bb4e1..78f9e42 100644
--- a/plc4j/tools/app/application/pom.xml
+++ b/plc4j/tools/app/application/pom.xml
@@ -47,6 +47,12 @@
             <version>${netbeans.version}</version>
             <type>pom</type>
         </dependency>
+        <dependency>
+            <groupId>org.netbeans.cluster</groupId>
+            <artifactId>ide</artifactId>
+            <version>${netbeans.version}</version>
+            <type>pom</type>
+        </dependency>        
         <!-- NbModuleSuite functional in RELEASE70 or later: -->
         <dependency>
             <groupId>org.netbeans.api</groupId>
@@ -72,6 +78,11 @@
             <artifactId>app-sample</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.plc4x.app.projecttype</groupId>
+            <artifactId>app-projecttype</artifactId>
+            <version>0.13.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/plc4j/tools/app/pom.xml b/plc4j/tools/app/pom.xml
index 56fc5a7..1b2d50d 100644
--- a/plc4j/tools/app/pom.xml
+++ b/plc4j/tools/app/pom.xml
@@ -98,10 +98,11 @@
         <module>branding</module>
         <module>application</module>
         <module>app-sample</module>
+        <module>app-projecttype</module>
     </modules>
 
     <properties>
-        <netbeans.version>RELEASE220</netbeans.version>
+        <netbeans.version>RELEASE280</netbeans.version>
         <brandingToken>app</brandingToken>
     </properties>
 </project>

Reply via email to