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>