netbeans-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From geert...@apache.org
Subject [netbeans] branch master updated: [NETBEANS-2506] Added OpenJFX Samples module to JavaFX cluster, including two Maven samples (#1241)
Date Fri, 14 Jun 2019 07:07:55 GMT
This is an automated email from the ASF dual-hosted git repository.

geertjan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new 340934e  [NETBEANS-2506] Added OpenJFX Samples module to JavaFX cluster, including two Maven samples (#1241)
340934e is described below

commit 340934ecdbb38c6ceab405a1df99ffa1456e8401
Author: José Pereda <pereda@eii.uva.es>
AuthorDate: Fri Jun 14 09:07:51 2019 +0200

    [NETBEANS-2506] Added OpenJFX Samples module to JavaFX cluster, including two Maven samples (#1241)
---
 javafx/openjfx.samples/build.xml                   |  40 +++
 javafx/openjfx.samples/l10n.list                   |  19 ++
 javafx/openjfx.samples/licenseinfo.xml             |  27 ++
 javafx/openjfx.samples/manifest.mf                 |   7 +
 .../openjfx.samples/nbproject/project.properties   |   1 +
 javafx/openjfx.samples/nbproject/project.xml       | 159 ++++++++++++
 .../HelloFXMLWithMaven/nb-configuration.xml        |  39 +++
 .../samples/HelloFXMLWithMaven/nbactions.xml       |  44 ++++
 .../samples/HelloFXMLWithMaven/pom.xml             |  78 ++++++
 .../src/main/java/module-info.java                 |  26 ++
 .../src/main/java/org/openjfx/hellofxml/App.java   |  57 +++++
 .../org/openjfx/hellofxml/PrimaryController.java   |  31 +++
 .../org/openjfx/hellofxml/SecondaryController.java |  31 +++
 .../resources/org/openjfx/hellofxml/primary.css    |  22 ++
 .../resources/org/openjfx/hellofxml/primary.fxml   |  35 +++
 .../resources/org/openjfx/hellofxml/secondary.css  |  22 ++
 .../resources/org/openjfx/hellofxml/secondary.fxml |  35 +++
 .../samples/HelloFXWithMaven/nb-configuration.xml  |  39 +++
 .../samples/HelloFXWithMaven/nbactions.xml         |  44 ++++
 .../samples/HelloFXWithMaven/pom.xml               |  73 ++++++
 .../src/main/java/module-info.java                 |  23 ++
 .../src/main/java/org/openjfx/hellofx/App.java     |  49 ++++
 .../main/java/org/openjfx/hellofx/SystemInfo.java  |  32 +++
 .../main/resources/org/openjfx/hellofx/styles.css  |  22 ++
 .../modules/openjfx/samples/Bundle.properties      |  52 ++++
 .../samples/OpenJFXSampleProjectGenerator.java     |  96 +++++++
 .../samples/OpenJFXSampleProjectIterator.java      | 175 +++++++++++++
 .../openjfx/samples/PanelConfigureProject.java     | 119 +++++++++
 .../samples/PanelConfigureProjectVisual.form       |  64 +++++
 .../samples/PanelConfigureProjectVisual.java       |  99 ++++++++
 .../samples/PanelProjectLocationVisual.form        | 148 +++++++++++
 .../samples/PanelProjectLocationVisual.java        | 275 +++++++++++++++++++++
 .../modules/openjfx/samples/WizardProperties.java  |  33 +++
 .../samples/resources/HelloFXMLWithMaven.html      |  30 +++
 .../samples/resources/HelloFXWithMaven.html        |  30 +++
 .../modules/openjfx/samples/resources/layer.xml    |  60 +++++
 .../modules/openjfx/samples/resources/samples.html |  30 +++
 37 files changed, 2166 insertions(+)

diff --git a/javafx/openjfx.samples/build.xml b/javafx/openjfx.samples/build.xml
new file mode 100644
index 0000000..db3d317
--- /dev/null
+++ b/javafx/openjfx.samples/build.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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
+
+      http://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.
+
+-->
+<project basedir="." default="build" name="javafx/openjfx.samples">
+    <description>Builds, tests, and runs the project org.netbeans.modules.openjfx.samples</description>
+    <import file="../../nbbuild/templates/projectized.xml"/>
+
+    <target name="jar" depends="zip-examples,projectized-common.jar"/>
+    <target name="zip-examples" depends="init">
+        <property name="examples" location="${build.classes.dir}/org/netbeans/modules/openjfx/samples/resources/"/>
+        <mkdir dir="${examples}"/>
+
+        <zip basedir="samples/HelloFXWithMaven" destfile="${examples}/HelloFXWithMaven.zip">
+            <exclude name="target/"/>
+        </zip>
+        
+        <zip basedir="samples/HelloFXMLWithMaven" destfile="${examples}/HelloFXMLWithMaven.zip">
+            <exclude name="target/"/>
+        </zip>
+    </target>    
+
+</project>
diff --git a/javafx/openjfx.samples/l10n.list b/javafx/openjfx.samples/l10n.list
new file mode 100644
index 0000000..f45e115
--- /dev/null
+++ b/javafx/openjfx.samples/l10n.list
@@ -0,0 +1,19 @@
+# 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
+#
+#   http://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.
+#
+# openjfx/samples
+read global
diff --git a/javafx/openjfx.samples/licenseinfo.xml b/javafx/openjfx.samples/licenseinfo.xml
new file mode 100644
index 0000000..8fd11b3
--- /dev/null
+++ b/javafx/openjfx.samples/licenseinfo.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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
+
+      http://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.
+
+-->
+<licenseinfo>
+    <fileset>
+        <license ref="Apache-2.0-ASF" />
+        <comment type="COMMENT_UNSUPPORTED" />
+    </fileset>
+</licenseinfo>
diff --git a/javafx/openjfx.samples/manifest.mf b/javafx/openjfx.samples/manifest.mf
new file mode 100644
index 0000000..00300ec
--- /dev/null
+++ b/javafx/openjfx.samples/manifest.mf
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+AutoUpdate-Show-In-Client: false
+OpenIDE-Module: org.netbeans.modules.openjfx.samples
+OpenIDE-Module-Layer: org/netbeans/modules/openjfx/samples/resources/layer.xml
+OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/openjfx/samples/Bundle.properties
+OpenIDE-Module-Specification-Version: 1.22
+
diff --git a/javafx/openjfx.samples/nbproject/project.properties b/javafx/openjfx.samples/nbproject/project.properties
new file mode 100644
index 0000000..ce61fd4
--- /dev/null
+++ b/javafx/openjfx.samples/nbproject/project.properties
@@ -0,0 +1 @@
+javac.compilerargs=-Xlint -Xlint:-serial
diff --git a/javafx/openjfx.samples/nbproject/project.xml b/javafx/openjfx.samples/nbproject/project.xml
new file mode 100644
index 0000000..22a57e1
--- /dev/null
+++ b/javafx/openjfx.samples/nbproject/project.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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
+
+      http://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.
+
+-->
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.apisupport.project</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
+            <code-name-base>org.netbeans.modules.openjfx.samples</code-name-base>
+            <module-dependencies>
+                <dependency>
+                    <code-name-base>org.netbeans.api.progress</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.40</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.java.platform</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.36</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.java.platform.ui</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.36</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.project.ant</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.62</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.projectapi</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.45</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.projectuiapi</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.78</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.queries</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.24</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.awt</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>7.54</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.dialogs</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>7.22</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.filesystems</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>9.0</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.loaders</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>7.61</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.nodes</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>7.24</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.util.ui</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>9.3</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.util</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>9.3</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.util.lookup</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>8.10</specification-version>
+                    </run-dependency>
+                </dependency>
+            </module-dependencies>
+            <public-packages/>
+        </data>
+    </configuration>
+</project>
diff --git a/javafx/openjfx.samples/samples/HelloFXMLWithMaven/nb-configuration.xml b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/nb-configuration.xml
new file mode 100644
index 0000000..b02fa97
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/nb-configuration.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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
+
+      http://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.
+
+-->
+<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>JDK_12</netbeans.hint.jdkPlatform>
+        <netbeans.compile.on.save>true</netbeans.compile.on.save>
+    </properties>
+</project-shared-configuration>
diff --git a/javafx/openjfx.samples/samples/HelloFXMLWithMaven/nbactions.xml b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/nbactions.xml
new file mode 100644
index 0000000..4a73059
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/nbactions.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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
+
+      http://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.
+
+-->
+<actions>
+    <action>
+        <actionName>run</actionName>
+        <goals>
+            <goal>clean</goal>
+            <goal>javafx:run</goal>
+        </goals>
+    </action>
+    <action>
+        <actionName>jlink</actionName>
+        <goals>
+            <goal>clean</goal>
+            <goal>javafx:jlink</goal>
+        </goals>
+    </action>
+    <action>
+        <actionName>debug</actionName>
+        <goals>
+            <goal>clean</goal>
+            <goal>javafx:run@debug</goal>
+        </goals>
+    </action>
+</actions>
diff --git a/javafx/openjfx.samples/samples/HelloFXMLWithMaven/pom.xml b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/pom.xml
new file mode 100644
index 0000000..9579f46
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/pom.xml
@@ -0,0 +1,78 @@
+<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/maven-v4_0_0.xsd">
+    <!--
+
+    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
+
+      http://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.
+
+    -->
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.openjfx</groupId>
+    <artifactId>HelloFXMLWithMaven</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.openjfx</groupId>
+            <artifactId>javafx-controls</artifactId>
+            <version>12.0.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openjfx</groupId>
+            <artifactId>javafx-fxml</artifactId>
+            <version>12.0.1</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.0</version>
+                <configuration>
+                    <release>11</release>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.openjfx</groupId>
+                <artifactId>javafx-maven-plugin</artifactId>
+                <version>0.0.2</version>
+                <executions>
+                    <execution>
+                        <id>default-cli</id>
+                        <configuration>
+                            <mainClass>org.openjfx.hellofxml/org.openjfx.hellofxml.App</mainClass>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>debug</id>
+                        <configuration>
+                            <options>
+                                <option>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8000</option>
+                            </options>
+                            <mainClass>org.openjfx.hellofxml/org.openjfxml.hellofx.App</mainClass>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/module-info.java b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/module-info.java
new file mode 100644
index 0000000..81c23d7
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/module-info.java
@@ -0,0 +1,26 @@
+/*
+ * 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
+ *
+ *   http://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.
+ */
+
+module org.openjfx.hellofxml {
+    requires javafx.controls;
+    requires javafx.fxml;
+
+    opens org.openjfx.hellofxml to javafx.fxml;
+    exports org.openjfx.hellofxml;
+}
\ No newline at end of file
diff --git a/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/org/openjfx/hellofxml/App.java b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/org/openjfx/hellofxml/App.java
new file mode 100644
index 0000000..30cbe64
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/org/openjfx/hellofxml/App.java
@@ -0,0 +1,57 @@
+/*
+ * 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
+ *
+ *   http://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.openjfx.hellofxml;
+
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+
+/**
+ * JavaFX App
+ */
+public class App extends Application {
+
+    private static Scene scene;
+
+    @Override
+    public void start(Stage stage) throws IOException {
+        scene = new Scene(loadFXML("primary"));
+        stage.setScene(scene);
+        stage.show();
+    }
+
+    static void setRoot(String fxml) throws IOException {
+        scene.setRoot(loadFXML(fxml));
+    }
+
+    private static Parent loadFXML(String fxml) throws IOException {
+        FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml"));
+        return fxmlLoader.load();
+    }
+
+    public static void main(String[] args) {
+        launch();
+    }
+
+}
\ No newline at end of file
diff --git a/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/org/openjfx/hellofxml/PrimaryController.java b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/org/openjfx/hellofxml/PrimaryController.java
new file mode 100644
index 0000000..33ae4e6
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/org/openjfx/hellofxml/PrimaryController.java
@@ -0,0 +1,31 @@
+/*
+ * 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
+ *
+ *   http://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.openjfx.hellofxml;
+
+import java.io.IOException;
+import javafx.fxml.FXML;
+
+public class PrimaryController {
+
+    @FXML
+    private void switchToSecondary() throws IOException {
+        App.setRoot("secondary");
+    }
+}
diff --git a/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/org/openjfx/hellofxml/SecondaryController.java b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/org/openjfx/hellofxml/SecondaryController.java
new file mode 100644
index 0000000..eb4f930
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/java/org/openjfx/hellofxml/SecondaryController.java
@@ -0,0 +1,31 @@
+/*
+ * 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
+ *
+ *   http://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.openjfx.hellofxml;
+
+import java.io.IOException;
+import javafx.fxml.FXML;
+
+public class SecondaryController {
+
+    @FXML
+    private void switchToPrimary() throws IOException {
+        App.setRoot("primary");
+    }
+}
\ No newline at end of file
diff --git a/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/primary.css b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/primary.css
new file mode 100644
index 0000000..cbc10b9
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/primary.css
@@ -0,0 +1,22 @@
+/*
+ * 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
+ *
+ *   http://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.
+ */
+
+.label {
+    -fx-text-fill: blue;
+}
\ No newline at end of file
diff --git a/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/primary.fxml b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/primary.fxml
new file mode 100644
index 0000000..0e9a9c7
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/primary.fxml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+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
+
+  http://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.
+
+-->
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.layout.VBox?>
+
+<VBox alignment="CENTER" prefHeight="400.0" prefWidth="600.0" spacing="20.0" stylesheets="@primary.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.openjfx.hellofxml.PrimaryController">
+   <children>
+      <Label text="Primary View" />
+      <Button fx:id="primaryButton" onAction="#switchToSecondary" text="Switch to Secondary View" />
+   </children>
+   <padding>
+      <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+   </padding>
+</VBox>
diff --git a/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/secondary.css b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/secondary.css
new file mode 100644
index 0000000..9239ff4
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/secondary.css
@@ -0,0 +1,22 @@
+/*
+ * 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
+ *
+ *   http://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.
+ */
+
+.label {
+    -fx-text-fill: red;
+}
\ No newline at end of file
diff --git a/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/secondary.fxml b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/secondary.fxml
new file mode 100644
index 0000000..01f6329
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXMLWithMaven/src/main/resources/org/openjfx/hellofxml/secondary.fxml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+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
+
+  http://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.
+
+-->
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.layout.VBox?>
+
+<VBox alignment="CENTER" prefHeight="400.0" prefWidth="600.0" spacing="20.0" stylesheets="@secondary.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.openjfx.hellofxml.SecondaryController">
+    <children>
+        <Label text="Secondary View" />
+        <Button fx:id="secondaryButton" onAction="#switchToPrimary" text="Switch to Primary View" />
+    </children>
+    <padding>
+        <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+    </padding>
+</VBox>
diff --git a/javafx/openjfx.samples/samples/HelloFXWithMaven/nb-configuration.xml b/javafx/openjfx.samples/samples/HelloFXWithMaven/nb-configuration.xml
new file mode 100644
index 0000000..b02fa97
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXWithMaven/nb-configuration.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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
+
+      http://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.
+
+-->
+<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>JDK_12</netbeans.hint.jdkPlatform>
+        <netbeans.compile.on.save>true</netbeans.compile.on.save>
+    </properties>
+</project-shared-configuration>
diff --git a/javafx/openjfx.samples/samples/HelloFXWithMaven/nbactions.xml b/javafx/openjfx.samples/samples/HelloFXWithMaven/nbactions.xml
new file mode 100644
index 0000000..4a73059
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXWithMaven/nbactions.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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
+
+      http://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.
+
+-->
+<actions>
+    <action>
+        <actionName>run</actionName>
+        <goals>
+            <goal>clean</goal>
+            <goal>javafx:run</goal>
+        </goals>
+    </action>
+    <action>
+        <actionName>jlink</actionName>
+        <goals>
+            <goal>clean</goal>
+            <goal>javafx:jlink</goal>
+        </goals>
+    </action>
+    <action>
+        <actionName>debug</actionName>
+        <goals>
+            <goal>clean</goal>
+            <goal>javafx:run@debug</goal>
+        </goals>
+    </action>
+</actions>
diff --git a/javafx/openjfx.samples/samples/HelloFXWithMaven/pom.xml b/javafx/openjfx.samples/samples/HelloFXWithMaven/pom.xml
new file mode 100644
index 0000000..d467a02
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXWithMaven/pom.xml
@@ -0,0 +1,73 @@
+<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/maven-v4_0_0.xsd">
+    <!--
+
+    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
+
+      http://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.
+
+    -->
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.openjfx</groupId>
+    <artifactId>HelloFXWithMaven</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.openjfx</groupId>
+            <artifactId>javafx-controls</artifactId>
+            <version>12.0.1</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.0</version>
+                <configuration>
+                    <release>11</release>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.openjfx</groupId>
+                <artifactId>javafx-maven-plugin</artifactId>
+                <version>0.0.2</version>
+                <executions>
+                    <execution>
+                        <id>default-cli</id>
+                        <configuration>
+                            <mainClass>org.openjfx.hellofx/org.openjfx.hellofx.App</mainClass>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>debug</id>
+                        <configuration>
+                            <options>
+                                <option>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8000</option>
+                            </options>
+                            <mainClass>org.openjfx.hellofx/org.openjfx.hellofx.App</mainClass>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/java/module-info.java b/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/java/module-info.java
new file mode 100644
index 0000000..0ce1a89
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/java/module-info.java
@@ -0,0 +1,23 @@
+/*
+ * 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
+ *
+ *   http://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.
+ */
+
+module org.openjfx.hellofx {
+    requires javafx.controls;
+    exports org.openjfx.hellofx;
+}
\ No newline at end of file
diff --git a/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/java/org/openjfx/hellofx/App.java b/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/java/org/openjfx/hellofx/App.java
new file mode 100644
index 0000000..df0804b
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/java/org/openjfx/hellofx/App.java
@@ -0,0 +1,49 @@
+/*
+ * 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
+ *
+ *   http://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.openjfx.hellofx;
+
+import javafx.application.Application;
+import javafx.scene.Scene;
+import javafx.scene.control.Label;
+import javafx.scene.layout.StackPane;
+import javafx.stage.Stage;
+
+/**
+ * JavaFX App
+ */
+public class App extends Application {
+
+    @Override
+    public void start(Stage stage) {
+        var javaVersion = SystemInfo.javaVersion();
+        var javafxVersion = SystemInfo.javafxVersion();
+
+        var label = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
+        var scene = new Scene(new StackPane(label), 640, 480);
+        scene.getStylesheets().add(App.class.getResource("styles.css").toExternalForm());
+        stage.setScene(scene);
+        stage.show();
+    }
+
+    public static void main(String[] args) {
+        launch();
+    }
+
+}
\ No newline at end of file
diff --git a/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/java/org/openjfx/hellofx/SystemInfo.java b/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/java/org/openjfx/hellofx/SystemInfo.java
new file mode 100644
index 0000000..88598c1
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/java/org/openjfx/hellofx/SystemInfo.java
@@ -0,0 +1,32 @@
+/*
+ * 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
+ *
+ *   http://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.openjfx.hellofx;
+
+public class SystemInfo {
+
+    public static String javaVersion() {
+        return System.getProperty("java.version");
+    }
+
+    public static String javafxVersion() {
+        return System.getProperty("javafx.version");
+    }
+
+}
\ No newline at end of file
diff --git a/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/resources/org/openjfx/hellofx/styles.css b/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/resources/org/openjfx/hellofx/styles.css
new file mode 100644
index 0000000..cbc10b9
--- /dev/null
+++ b/javafx/openjfx.samples/samples/HelloFXWithMaven/src/main/resources/org/openjfx/hellofx/styles.css
@@ -0,0 +1,22 @@
+/*
+ * 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
+ *
+ *   http://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.
+ */
+
+.label {
+    -fx-text-fill: blue;
+}
\ No newline at end of file
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/Bundle.properties b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/Bundle.properties
new file mode 100644
index 0000000..17552db
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/Bundle.properties
@@ -0,0 +1,52 @@
+#
+# 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
+#
+#   http://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.
+#
+
+## manifest.mf
+OpenIDE-Module-Display-Category=OpenJFX
+OpenIDE-Module-Name=OpenJFX Samples
+
+## xmlfs localization
+Templates/Project/Samples/OpenJFX=OpenJFX
+Templates/Project/Samples/OpenJFX/HelloFXWithMaven.zip=HelloFXWithMaven
+Templates/Project/Samples/OpenJFX/HelloFXMLWithMaven.zip=HelloFXMLWithMaven
+
+# A11Y Panels
+ACS_NWP1_NamePanel_A11YDesc=Project Name and Location Panel
+
+#PanelProjectLocationVisual
+LBL_NWP1_ProjectTitleName=Name and Location
+
+LBL_NWP1_ProjectName_Label=Project Name:
+LBL_NPW1_DefaultProjectName=SampleApplication{0}
+LBL_NWP1_ProjectLocation_Label=Project Location:
+LBL_NWP1_BrowseLocation_Button=Browse...
+LBL_NWP1_CreatedProjectFolder_Lablel=Project Folder:
+
+LBL_NWP1_ProjectName_LabelMnemonic=N
+LBL_NWP1_ProjectLocation_LabelMnemonic=L
+LBL_NWP1_CreatedProjectFolder_LablelMnemonic=D
+
+ACS_LBL_NWP1_ProjectName_A11YDesc=Project Name
+ACS_LBL_NPW1_ProjectLocation_A11YDesc=Project Location
+ACS_LBL_NWP1_BrowseLocation_A11YDesc=Browse Project Location
+ACS_LBL_NWP1_CreatedProjectFolder_A11YDesc=Project Folder
+
+LBL_NWP1_SelectProjectLocation=Select Project Location
+MSG_IllegalProjectName=Project Name is not valid folder name.
+MSG_ProjectFolderExists=Project Folder already exists and is not empty.
\ No newline at end of file
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/OpenJFXSampleProjectGenerator.java b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/OpenJFXSampleProjectGenerator.java
new file mode 100644
index 0000000..532eb07
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/OpenJFXSampleProjectGenerator.java
@@ -0,0 +1,96 @@
+/*
+ * 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
+ *
+ *   http://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.netbeans.modules.openjfx.samples;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Stack;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import org.openide.filesystems.FileLock;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
+
+/**
+ * Create a sample java project by unzipping a template into some directory.
+ * Modify active platform and JavaFX related properties.
+ *
+ * @author Martin Grebac, Tomas Zezula, Anton Chechel, Petr Somol
+ */
+public class OpenJFXSampleProjectGenerator {
+
+    private OpenJFXSampleProjectGenerator() {}
+
+    public static FileObject createProjectFromTemplate(final FileObject template,
+            File projectLocation, final String name) throws IOException {
+        assert template != null && projectLocation != null && name != null;
+        FileObject prjLoc = createProjectFolder(projectLocation);
+        if (template.getExt().endsWith("zip")) { // NOI18N
+            unzip(template.getInputStream(), prjLoc);
+            prjLoc.refresh(false);
+        }
+        return prjLoc;
+    }
+
+    private static FileObject createProjectFolder(File projectFolder) throws IOException {
+        FileObject projLoc;
+        Stack<String> nameStack = new Stack<String>();
+        while ((projLoc = FileUtil.toFileObject(projectFolder)) == null) {
+            nameStack.push(projectFolder.getName());
+            projectFolder = projectFolder.getParentFile();
+        }
+        while (!nameStack.empty()) {
+            projLoc = projLoc.createFolder(nameStack.pop());
+            assert projLoc != null;
+        }
+        return projLoc;
+    }
+
+    private static void unzip(InputStream source, FileObject targetFolder) throws IOException {
+        //installation
+        ZipInputStream zip = new ZipInputStream(source);
+        try {
+            ZipEntry ent;
+            while ((ent = zip.getNextEntry()) != null) {
+                if (ent.isDirectory()) {
+                    FileUtil.createFolder(targetFolder, ent.getName());
+                } else {
+                    FileObject destFile = FileUtil.createData(targetFolder, ent.getName());
+                    FileLock lock = destFile.lock();
+                    try {
+                        OutputStream out = destFile.getOutputStream(lock);
+                        try {
+                            FileUtil.copy(zip, out);
+                        } finally {
+                            out.close();
+                        }
+                    } finally {
+                        lock.releaseLock();
+                    }
+                }
+            }
+        } finally {
+            zip.close();
+        }
+    }
+
+}
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/OpenJFXSampleProjectIterator.java b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/OpenJFXSampleProjectIterator.java
new file mode 100644
index 0000000..fe1d56e
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/OpenJFXSampleProjectIterator.java
@@ -0,0 +1,175 @@
+/*
+ * 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
+ *
+ *   http://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.netbeans.modules.openjfx.samples;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.NoSuchElementException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.JComponent;
+import org.openide.DialogDisplayer;
+import org.openide.NotifyDescriptor;
+import org.openide.WizardDescriptor;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
+import org.openide.loaders.DataObject;
+import org.openide.loaders.TemplateWizard;
+import org.openide.util.NbBundle;
+
+/**
+ * @author Martin Grebac
+ * @author Petr Somol
+ */
+public class OpenJFXSampleProjectIterator implements TemplateWizard.Iterator {
+
+    private static final Logger LOG = Logger.getLogger(OpenJFXSampleProjectIterator.class.getName());
+    
+    private static final long serialVersionUID = 4L;
+
+    int currentIndex;
+    PanelConfigureProject basicPanel;
+    private transient WizardDescriptor wiz;
+
+    static Object create() {
+        return new OpenJFXSampleProjectIterator();
+    }
+
+    public OpenJFXSampleProjectIterator() {
+    }
+
+    @Override
+    public void addChangeListener(javax.swing.event.ChangeListener changeListener) {
+    }
+
+    @Override
+    public void removeChangeListener(javax.swing.event.ChangeListener changeListener) {
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public org.openide.WizardDescriptor.Panel<WizardDescriptor> current() {
+        return basicPanel;
+    }
+
+    @Override
+    public boolean hasNext() {
+        return false;
+    }
+
+    @Override
+    public boolean hasPrevious() {
+        return false;
+    }
+
+    @Override
+    public void initialize(org.openide.loaders.TemplateWizard templateWizard) {
+        this.wiz = templateWizard;
+        String name = templateWizard.getTemplate().getNodeDelegate().getDisplayName();
+        if (name != null) {
+            name = name.replaceAll(" ", ""); //NOI18N
+        }
+        templateWizard.putProperty(WizardProperties.NAME, name);
+        basicPanel = new PanelConfigureProject(templateWizard.getTemplate().getNodeDelegate().getDisplayName());
+        currentIndex = 0;
+        updateStepsList();
+    }
+
+    @Override
+    public void uninitialize(org.openide.loaders.TemplateWizard templateWizard) {
+        basicPanel = null;
+        currentIndex = -1;
+        this.wiz.putProperty("projdir", null);           //NOI18N
+        this.wiz.putProperty("name", null);          //NOI18N
+    }
+
+    @Override
+    public java.util.Set<DataObject> instantiate(org.openide.loaders.TemplateWizard templateWizard) throws java.io.IOException {
+        File projectLocation = (File) wiz.getProperty(WizardProperties.PROJECT_DIR);
+        if(projectLocation == null) {
+            warnIssue204880("Wizard property " + WizardProperties.PROJECT_DIR + " is null."); // NOI18N
+            throw new IOException(); // return to wizard
+        }
+        String name = (String) wiz.getProperty(WizardProperties.NAME);
+        if(name == null) {
+            warnIssue204880("Wizard property " + WizardProperties.NAME + " is null."); // NOI18N
+            throw new IOException(); // return to wizard
+        }
+        FileObject templateFO = templateWizard.getTemplate().getPrimaryFile();
+        FileObject prjLoc = OpenJFXSampleProjectGenerator.createProjectFromTemplate(
+                templateFO, projectLocation, name);
+        java.util.Set<DataObject> set = new java.util.HashSet<DataObject>();
+        set.add(DataObject.find(prjLoc));
+
+        // open file from the project specified in the "defaultFileToOpen" attribute
+        Object openFile = templateFO.getAttribute("defaultFileToOpen"); // NOI18N
+        if (openFile instanceof String) {
+            FileObject openFO = prjLoc.getFileObject((String) openFile);
+            set.add(DataObject.find(openFO));
+        }
+        // also open a documentation file registered for this project
+        // and copy the .url file for it to the project (#71985)
+        FileObject docToOpen = FileUtil.getConfigFile(
+                "org-netbeans-modules-openjfx-samples/OpenAfterCreated/" + templateFO.getName() + ".url"); // NOI18N
+        if (docToOpen != null) {
+            docToOpen = FileUtil.copyFile(docToOpen, prjLoc, "readme"); // NOI18N
+            set.add(DataObject.find(docToOpen));
+        }
+
+        return set;
+    }
+
+    @Override
+    public String name() {
+        return current().getComponent().getName();
+    }
+
+    @Override
+    public void nextPanel() {
+        throw new NoSuchElementException();
+    }
+
+    @Override
+    public void previousPanel() {
+        throw new NoSuchElementException();
+    }
+
+    void updateStepsList() {
+        JComponent component = (JComponent) current().getComponent();
+        if (component == null) {
+            return;
+        }
+        String[] list;
+        list = new String[]{
+            NbBundle.getMessage(PanelConfigureProject.class, "LBL_NWP1_ProjectTitleName"), // NOI18N
+        };
+        component.putClientProperty(WizardDescriptor.PROP_CONTENT_DATA, list); // NOI18N
+        component.putClientProperty(WizardDescriptor.PROP_CONTENT_SELECTED_INDEX, new Integer(currentIndex)); // NOI18N
+    }
+    
+    private void warnIssue204880(final String msg) {
+        LOG.log(Level.SEVERE, msg + " (issue 204880)."); // NOI18N
+        Exception npe = new NullPointerException(msg + " (issue 204880)."); // NOI18N
+        npe.printStackTrace();
+        NotifyDescriptor d = new NotifyDescriptor.Message(
+                NbBundle.getMessage(OpenJFXSampleProjectIterator.class,"WARN_Issue204880"), NotifyDescriptor.ERROR_MESSAGE); // NOI18N
+        DialogDisplayer.getDefault().notify(d);
+    }
+    
+}
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelConfigureProject.java b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelConfigureProject.java
new file mode 100644
index 0000000..50bce9b
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelConfigureProject.java
@@ -0,0 +1,119 @@
+/*
+ * 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
+ *
+ *   http://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.netbeans.modules.openjfx.samples;
+
+import java.awt.Component;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.swing.JComponent;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.openide.WizardDescriptor;
+import org.openide.util.HelpCtx;
+
+/**
+ * Panel just asking for basic info.
+ * @author Jesse Glick
+ */
+final class PanelConfigureProject implements WizardDescriptor.Panel, WizardDescriptor.FinishablePanel {
+
+    private final String title;
+    private WizardDescriptor wizardDescriptor;
+    private PanelConfigureProjectVisual component;
+    private final Set<ChangeListener> listeners = new HashSet<ChangeListener>(1);
+    
+    /** Create the wizard panel descriptor. */
+    public PanelConfigureProject(String title) {
+        this.title = title;
+    }
+
+    @Override
+    public boolean isFinishPanel() {
+        return true;
+    }
+
+    @Override
+    public Component getComponent() {
+        if (component == null) {
+            component = new PanelConfigureProjectVisual(this, title);
+        }
+        return component;
+    }
+
+    @Override
+    public HelpCtx getHelp() {
+        return HelpCtx.DEFAULT_HELP;
+    }
+
+    @Override
+    public boolean isValid() {
+        getComponent();
+        return component.valid(wizardDescriptor);
+    }
+
+    @Override
+    public final void addChangeListener(ChangeListener l) {
+        synchronized (listeners) {
+            listeners.add(l);
+        }
+    }
+
+    @Override
+    public final void removeChangeListener(ChangeListener l) {
+        synchronized (listeners) {
+            listeners.remove(l);
+        }
+    }
+
+    protected final void fireChangeEvent() {
+        Iterator it;
+        synchronized (listeners) {
+            it = new HashSet<ChangeListener>(listeners).iterator();
+        }
+        ChangeEvent ev = new ChangeEvent(this);
+        while (it.hasNext()) {
+            ((ChangeListener) it.next()).stateChanged(ev);
+        }
+    }
+
+    @Override
+    public void readSettings(Object settings) {
+        wizardDescriptor = (WizardDescriptor) settings;
+        component.read(wizardDescriptor);
+
+        // XXX hack, TemplateWizard in final setTemplateImpl() forces new wizard's title
+        // this name is used in NewProjectWizard to modify the title
+        Object substitute = ((JComponent) component).getClientProperty("NewProjectWizard_Title"); // NOI18N
+        if (substitute != null) {
+            wizardDescriptor.putProperty("NewProjectWizard_Title", substitute); // NOI18N
+        }
+    }
+
+    @Override
+    public void storeSettings(Object settings) {
+        WizardDescriptor d = (WizardDescriptor) settings;
+        component.store(d);
+        d.putProperty("NewProjectWizard_Title", null); // NOI18N
+    }
+    
+}
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelConfigureProjectVisual.form b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelConfigureProjectVisual.form
new file mode 100644
index 0000000..4e160a7
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelConfigureProjectVisual.form
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+
+    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
+
+      http://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.
+
+-->
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+  <Properties>
+    <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+      <Dimension value="[500, 340]"/>
+    </Property>
+    <Property name="requestFocusEnabled" type="boolean" value="false"/>
+  </Properties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="locationContainer">
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+    </Container>
+    <Container class="javax.swing.JPanel" name="fill">
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="18" weightX="1.0" weightY="1.0"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelConfigureProjectVisual.java b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelConfigureProjectVisual.java
new file mode 100644
index 0000000..d3b3bfd
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelConfigureProjectVisual.java
@@ -0,0 +1,99 @@
+/*
+ * 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
+ *
+ *   http://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.netbeans.modules.openjfx.samples;
+
+import javax.swing.JPanel;
+
+import org.openide.WizardDescriptor;
+import org.openide.util.HelpCtx;
+import org.openide.util.NbBundle;
+
+public class PanelConfigureProjectVisual extends JPanel implements HelpCtx.Provider {
+
+
+    private PanelProjectLocationVisual projectLocationPanel;
+
+    /** Creates new form PanelInitProject */
+    public PanelConfigureProjectVisual(PanelConfigureProject panel, String title) {
+        initComponents();
+        this.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage(PanelConfigureProjectVisual.class, "ACS_NWP1_NamePanel_A11YDesc"));  // NOI18N
+        
+        projectLocationPanel = new PanelProjectLocationVisual(panel);
+        locationContainer.add(projectLocationPanel, java.awt.BorderLayout.NORTH);
+
+        // Provide a name in the title bar.
+        setName(NbBundle.getMessage(PanelConfigureProjectVisual.class, "LBL_NWP1_ProjectTitleName")); //NOI18N
+        putClientProperty ("NewProjectWizard_Title", title); //NOI18N
+    }
+
+    boolean valid(WizardDescriptor wizardDescriptor) {
+        return projectLocationPanel.valid(wizardDescriptor);
+    }
+
+    void read (WizardDescriptor d) {
+        projectLocationPanel.read(d);
+    }
+
+    void store(WizardDescriptor d) {
+        projectLocationPanel.store(d);
+    }
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+        java.awt.GridBagConstraints gridBagConstraints;
+
+        locationContainer = new javax.swing.JPanel();
+        fill = new javax.swing.JPanel();
+
+        setPreferredSize(new java.awt.Dimension(500, 340));
+        setRequestFocusEnabled(false);
+        setLayout(new java.awt.GridBagLayout());
+
+        locationContainer.setLayout(new java.awt.BorderLayout());
+        gridBagConstraints = new java.awt.GridBagConstraints();
+        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
+        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+        gridBagConstraints.weightx = 1.0;
+        add(locationContainer, gridBagConstraints);
+        gridBagConstraints = new java.awt.GridBagConstraints();
+        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
+        gridBagConstraints.weightx = 1.0;
+        gridBagConstraints.weighty = 1.0;
+        add(fill, gridBagConstraints);
+    }// </editor-fold>//GEN-END:initComponents
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JPanel fill;
+    private javax.swing.JPanel locationContainer;
+    // End of variables declaration//GEN-END:variables
+
+    /** Help context where to find more about the paste type action.
+     * @return the help context for this action
+     */
+    public HelpCtx getHelpCtx() {
+        return new HelpCtx(PanelConfigureProjectVisual.class);
+    }    
+}
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelProjectLocationVisual.form b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelProjectLocationVisual.form
new file mode 100644
index 0000000..543a851
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelProjectLocationVisual.form
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+
+    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
+
+      http://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.
+
+-->
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
+  <SubComponents>
+    <Component class="javax.swing.JLabel" name="projectNameLabel">
+      <Properties>
+        <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
+          <ComponentRef name="projectNameTextField"/>
+        </Property>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/netbeans/modules/openjfx/samples/Bundle.properties" key="LBL_NWP1_ProjectName_Label" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="12" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JTextField" name="projectNameTextField">
+      <AccessibilityProperties>
+        <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/netbeans/modules/web/project/ui/wizards/Bundle.properties" key="ACS_LBL_NWP1_ProjectName_A11YDesc" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </AccessibilityProperties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="4"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="12" insetsBottom="12" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JLabel" name="projectLocationLabel">
+      <Properties>
+        <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
+          <ComponentRef name="projectLocationTextField"/>
+        </Property>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/netbeans/modules/openjfx/samples/Bundle.properties" key="LBL_NWP1_ProjectLocation_Label" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+          <GridBagConstraints gridX="-1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JTextField" name="projectLocationTextField">
+      <AccessibilityProperties>
+        <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/netbeans/modules/web/project/ui/wizards/Bundle.properties" key="ACS_LBL_NPW1_ProjectLocation_A11YDesc" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </AccessibilityProperties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+          <GridBagConstraints gridX="-1" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="12" insetsBottom="5" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JButton" name="Button">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/netbeans/modules/openjfx/samples/Bundle.properties" key="LBL_NWP1_BrowseLocation_Button" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+        <Property name="actionCommand" type="java.lang.String" value="BROWSE"/>
+      </Properties>
+      <AccessibilityProperties>
+        <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/netbeans/modules/web/project/ui/wizards/Bundle.properties" key="ACS_LBL_NWP1_BrowseLocation_A11YDesc" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </AccessibilityProperties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="browseLocationAction"/>
+      </Events>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+          <GridBagConstraints gridX="-1" gridY="1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="6" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JLabel" name="createdFolderLabel">
+      <Properties>
+        <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
+          <ComponentRef name="createdFolderTextField"/>
+        </Property>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/netbeans/modules/openjfx/samples/Bundle.properties" key="LBL_NWP1_CreatedProjectFolder_Lablel" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="0" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="18" weightX="0.0" weightY="0.0"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JTextField" name="createdFolderTextField">
+      <Properties>
+        <Property name="editable" type="boolean" value="false"/>
+      </Properties>
+      <AccessibilityProperties>
+        <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/netbeans/modules/web/project/ui/wizards/Bundle.properties" key="ACS_LBL_NWP1_CreatedProjectFolder_A11YDesc" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </AccessibilityProperties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="0" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="12" insetsBottom="0" insetsRight="0" anchor="18" weightX="1.0" weightY="1.0"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+  </SubComponents>
+</Form>
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelProjectLocationVisual.java b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelProjectLocationVisual.java
new file mode 100644
index 0000000..cc4f810
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/PanelProjectLocationVisual.java
@@ -0,0 +1,275 @@
+/*
+ * 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
+ *
+ *   http://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.netbeans.modules.openjfx.samples;
+
+import java.io.File;
+import java.text.MessageFormat;
+
+import javax.swing.JFileChooser;
+import javax.swing.JPanel;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+
+import org.netbeans.spi.project.ui.support.ProjectChooser;
+
+import org.openide.WizardDescriptor;
+import org.openide.util.NbBundle;
+
+public class PanelProjectLocationVisual extends JPanel implements DocumentListener {
+
+    private PanelConfigureProject panel;
+
+    /** Creates new form PanelProjectLocationVisual */
+    public PanelProjectLocationVisual(PanelConfigureProject panel) {
+        initComponents();
+        this.panel = panel;
+        
+        // Register listener on the textFields to make the automatic updates
+        projectNameTextField.getDocument().addDocumentListener(this);
+        projectLocationTextField.getDocument().addDocumentListener(this);
+    }
+    
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+        java.awt.GridBagConstraints gridBagConstraints;
+
+        projectNameLabel = new javax.swing.JLabel();
+        projectNameTextField = new javax.swing.JTextField();
+        projectLocationLabel = new javax.swing.JLabel();
+        projectLocationTextField = new javax.swing.JTextField();
+        Button = new javax.swing.JButton();
+        createdFolderLabel = new javax.swing.JLabel();
+        createdFolderTextField = new javax.swing.JTextField();
+
+        setLayout(new java.awt.GridBagLayout());
+
+        projectNameLabel.setLabelFor(projectNameTextField);
+        projectNameLabel.setText(org.openide.util.NbBundle.getMessage(PanelProjectLocationVisual.class, "LBL_NWP1_ProjectName_Label")); // NOI18N
+        gridBagConstraints = new java.awt.GridBagConstraints();
+        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+        gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 0);
+        add(projectNameLabel, gridBagConstraints);
+        gridBagConstraints = new java.awt.GridBagConstraints();
+        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+        gridBagConstraints.weightx = 1.0;
+        gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 0);
+        add(projectNameTextField, gridBagConstraints);
+        projectNameTextField.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(PanelProjectLocationVisual.class, "ACS_LBL_NWP1_ProjectName_A11YDesc")); // NOI18N
+
+        projectLocationLabel.setLabelFor(projectLocationTextField);
+        projectLocationLabel.setText(org.openide.util.NbBundle.getMessage(PanelProjectLocationVisual.class, "LBL_NWP1_ProjectLocation_Label")); // NOI18N
+        gridBagConstraints = new java.awt.GridBagConstraints();
+        gridBagConstraints.gridy = 1;
+        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+        gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
+        add(projectLocationLabel, gridBagConstraints);
+        gridBagConstraints = new java.awt.GridBagConstraints();
+        gridBagConstraints.gridy = 1;
+        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+        gridBagConstraints.weightx = 1.0;
+        gridBagConstraints.insets = new java.awt.Insets(0, 12, 5, 0);
+        add(projectLocationTextField, gridBagConstraints);
+        projectLocationTextField.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(PanelProjectLocationVisual.class, "ACS_LBL_NPW1_ProjectLocation_A11YDesc")); // NOI18N
+
+        Button.setText(org.openide.util.NbBundle.getMessage(PanelProjectLocationVisual.class, "LBL_NWP1_BrowseLocation_Button")); // NOI18N
+        Button.setActionCommand("BROWSE");
+        Button.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                browseLocationAction(evt);
+            }
+        });
+        gridBagConstraints = new java.awt.GridBagConstraints();
+        gridBagConstraints.gridy = 1;
+        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
+        gridBagConstraints.insets = new java.awt.Insets(0, 6, 5, 0);
+        add(Button, gridBagConstraints);
+        Button.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(PanelProjectLocationVisual.class, "ACS_LBL_NWP1_BrowseLocation_A11YDesc")); // NOI18N
+
+        createdFolderLabel.setLabelFor(createdFolderTextField);
+        createdFolderLabel.setText(org.openide.util.NbBundle.getMessage(PanelProjectLocationVisual.class, "LBL_NWP1_CreatedProjectFolder_Lablel")); // NOI18N
+        gridBagConstraints = new java.awt.GridBagConstraints();
+        gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER;
+        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
+        add(createdFolderLabel, gridBagConstraints);
+
+        createdFolderTextField.setEditable(false);
+        gridBagConstraints = new java.awt.GridBagConstraints();
+        gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER;
+        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
+        gridBagConstraints.weightx = 1.0;
+        gridBagConstraints.weighty = 1.0;
+        gridBagConstraints.insets = new java.awt.Insets(0, 12, 0, 0);
+        add(createdFolderTextField, gridBagConstraints);
+        createdFolderTextField.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(PanelProjectLocationVisual.class, "ACS_LBL_NWP1_CreatedProjectFolder_A11YDesc")); // NOI18N
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void browseLocationAction(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseLocationAction
+        String command = evt.getActionCommand();
+        
+        if ("BROWSE".equals(command)) { //NOI18N
+            JFileChooser chooser = new JFileChooser();
+            chooser.setDialogTitle(NbBundle.getMessage(PanelProjectLocationVisual.class,"LBL_NWP1_SelectProjectLocation")); //NOI18N
+            chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+            String path = projectLocationTextField.getText();
+            if (path.length() > 0) {
+                File f = new File(path);
+                if (f.exists())
+                    chooser.setSelectedFile(f);
+            }
+            if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) {
+                File projectDir = chooser.getSelectedFile();
+                projectLocationTextField.setText(projectDir.getAbsolutePath());
+            }            
+            panel.fireChangeEvent();
+        }
+    }//GEN-LAST:event_browseLocationAction
+    
+    @Override
+    public void addNotify() {
+        super.addNotify();
+        //same problem as in 31086, initial focus on Cancel button
+        projectLocationTextField.requestFocus();
+    }
+    
+    boolean valid(WizardDescriptor wizardDescriptor) {
+        if (projectNameTextField.getText().length() == 0) {
+            wizardDescriptor.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, NbBundle.getMessage(PanelProjectLocationVisual.class,"MSG_IllegalProjectName")); //NOI18N
+            return false; // Display name not specified
+        }
+        
+        File destFolder = new File(createdFolderTextField.getText());
+        File[] children = destFolder.listFiles();
+        if (destFolder.exists() && children != null && children.length > 0) {
+            // Folder exists and is not empty
+            wizardDescriptor.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, NbBundle.getMessage(PanelProjectLocationVisual.class,"MSG_ProjectFolderExists")); //NOI18N
+            return false;
+        }
+                
+        wizardDescriptor.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, ""); //NOI18N
+        return true;
+    }
+    
+    void store(WizardDescriptor d) {        
+        String name = projectNameTextField.getText().trim();
+        
+        d.putProperty(WizardProperties.PROJECT_DIR, new File(createdFolderTextField.getText().trim()));
+        d.putProperty(WizardProperties.NAME, name);
+        
+        File projectsDir = new File(this.projectLocationTextField.getText());
+        if (projectsDir.isDirectory()) {
+            ProjectChooser.setProjectsFolder (projectsDir);
+        }
+    }
+        
+    void read (WizardDescriptor settings) {
+        File projectLocation = (File) settings.getProperty(WizardProperties.PROJECT_DIR);
+        if (projectLocation == null)
+            projectLocation = ProjectChooser.getProjectsFolder();
+        else
+            projectLocation = projectLocation.getParentFile();
+        
+        projectLocationTextField.setText(projectLocation.getAbsolutePath());
+        
+        String formater = null;
+        String projectName = (String) settings.getProperty(WizardProperties.NAME);
+        
+        if (projectName == null) {
+            formater = NbBundle.getMessage(PanelProjectLocationVisual.class, "LBL_NPW1_DefaultProjectName"); //NOI18N
+        } else {
+            formater = projectName + "{0}"; //NOI18N
+        }
+        if ((projectName == null) || (validFreeProjectName(projectLocation, projectName) == null)) {
+            int baseCount = 1;
+            while ((projectName = validFreeProjectName(projectLocation, formater, baseCount)) == null) {
+                baseCount++;
+            }
+        }
+        projectNameTextField.setText(projectName);
+        projectNameTextField.selectAll();
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton Button;
+    private javax.swing.JLabel createdFolderLabel;
+    private javax.swing.JTextField createdFolderTextField;
+    private javax.swing.JLabel projectLocationLabel;
+    private javax.swing.JTextField projectLocationTextField;
+    private javax.swing.JLabel projectNameLabel;
+    protected javax.swing.JTextField projectNameTextField;
+    // End of variables declaration//GEN-END:variables
+        
+    private String validFreeProjectName(final File parentFolder, final String formater, final int index) {
+        String name = MessageFormat.format(formater, new Object[] {new Integer (index)});                
+        File file = new File(parentFolder, name);
+        return file.exists() ? null : name;
+    }
+
+    private String validFreeProjectName(final File parentFolder, final String name) {
+        File file = new File(parentFolder, name);
+        return file.exists() ? null : name;
+    }
+    
+    // Implementation of DocumentListener --------------------------------------
+    @Override
+    public void changedUpdate(DocumentEvent e) {
+        updateTexts(e);
+    }
+    
+    @Override
+    public void insertUpdate(DocumentEvent e) {
+        updateTexts(e);
+    }
+    
+    @Override
+    public void removeUpdate(DocumentEvent e) {
+        updateTexts(e);
+    }
+    // End if implementation of DocumentListener -------------------------------
+    
+    
+    /** Handles changes in the project name and project directory
+     */
+    private void updateTexts(DocumentEvent e) {
+        createdFolderTextField.setText(getCreatedFolderPath());
+
+        panel.fireChangeEvent(); // Notify that the panel changed
+    }
+    
+    private String getCreatedFolderPath() {
+        StringBuilder folder = new StringBuilder(projectLocationTextField.getText().trim());
+        if (!projectLocationTextField.getText().endsWith(File.separator))
+            folder.append(File.separatorChar);
+        folder.append(projectNameTextField.getText().trim());
+        
+        return folder.toString();
+    }
+    
+}
+
+//TODO implement check for project folder name and location
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/WizardProperties.java b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/WizardProperties.java
new file mode 100644
index 0000000..343de0a
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/WizardProperties.java
@@ -0,0 +1,33 @@
+/*
+ * 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
+ *
+ *   http://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.netbeans.modules.openjfx.samples;
+
+public interface WizardProperties {
+    public static final String PROJECT_DIR = "projdir"; //NOI18N
+    public static final String NAME = "name"; //NOI18N
+    public static final String SOURCE_ROOT = "sourceRoot"; //NOI18N
+
+    public static final String J2EE_LEVEL = "j2eeLevel"; //NOI18N
+    public static final String CONTEXT_PATH = "contextPath"; //NOI18N
+
+    public static final String DOC_BASE = "docBase"; //NOI18N
+    public static final String JAVA_ROOT = "javaRoot"; //NOI18N
+    public static final String LIB_FOLDER = "libFolder"; //NOI18N
+}
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/HelloFXMLWithMaven.html b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/HelloFXMLWithMaven.html
new file mode 100644
index 0000000..1313198
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/HelloFXMLWithMaven.html
@@ -0,0 +1,30 @@
+<!--
+
+    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
+
+      http://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.
+
+-->
+<!DOCTYPE html>
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+    <body>
+        <div>Simple Hello World with OpenJFX, using FXML and Maven</div>
+    </body>
+</html>
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/HelloFXWithMaven.html b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/HelloFXWithMaven.html
new file mode 100644
index 0000000..a8023a2
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/HelloFXWithMaven.html
@@ -0,0 +1,30 @@
+<!--
+
+    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
+
+      http://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.
+
+-->
+<!DOCTYPE html>
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+    <body>
+        <div>Simple Hello World with OpenJFX and Maven</div>
+    </body>
+</html>
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/layer.xml b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/layer.xml
new file mode 100644
index 0000000..56cd4ad
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/layer.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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
+
+      http://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.
+
+-->
+<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
+<filesystem>
+    <folder name="Templates">
+        <folder name="Project">
+            <folder name="Samples">
+                <folder name="OpenJFX">
+                    <attr name="position" intvalue="105"/>
+                    <attr name="displayName" bundlevalue="org.netbeans.modules.openjfx.samples.Bundle#Templates/Project/Samples/OpenJFX"/>
+                    <attr name="instantiatingWizardURL" urlvalue="nbresloc:/org/netbeans/modules/openjfx/samples/resources/samples.html"/>
+
+                    <file name="HelloFXWithMaven.zip" url="HelloFXWithMaven.zip">
+                        <attr name="displayName" bundlevalue="org.netbeans.modules.openjfx.samples.Bundle#Templates/Project/Samples/OpenJFX/HelloFXWithMaven.zip"/>
+                        <attr name="iconBase" stringvalue="org/netbeans/modules/maven/resources/jaricon.png"/>
+                        <attr name="position" intvalue="100"/>
+                        <attr name="template" boolvalue="true"/>
+                        <attr name="instantiatingIterator" newvalue="org.netbeans.modules.openjfx.samples.OpenJFXSampleProjectIterator"/>
+                        <attr name="instantiatingWizardURL" urlvalue="nbresloc:/org/netbeans/modules/openjfx/samples/resources/HelloFXWithMaven.html"/>
+                        <attr name="prjType" stringvalue="openjfx"/>
+                    </file>
+
+                    <file name="HelloFXMLWithMaven.zip" url="HelloFXMLWithMaven.zip">
+                        <attr name="displayName" bundlevalue="org.netbeans.modules.openjfx.samples.Bundle#Templates/Project/Samples/OpenJFX/HelloFXMLWithMaven.zip"/>
+                        <attr name="iconBase" stringvalue="org/netbeans/modules/maven/resources/jaricon.png"/>
+                        <attr name="position" intvalue="120"/>
+                        <attr name="template" boolvalue="true"/>
+                        <attr name="instantiatingIterator" newvalue="org.netbeans.modules.openjfx.samples.OpenJFXSampleProjectIterator"/>
+                        <attr name="instantiatingWizardURL" urlvalue="nbresloc:/org/netbeans/modules/openjfx/samples/resources/HelloFXMLWithMaven.html"/>
+                        <attr name="prjType" stringvalue="openjfx"/>
+                    </file>
+
+                </folder>
+            </folder>
+        </folder>
+    </folder>
+    <folder name="org-netbeans-modules-openjfx-samples">
+        <folder name="OpenAfterCreated">
+        </folder>
+    </folder>
+</filesystem>
diff --git a/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/samples.html b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/samples.html
new file mode 100644
index 0000000..334057a
--- /dev/null
+++ b/javafx/openjfx.samples/src/org/netbeans/modules/openjfx/samples/resources/samples.html
@@ -0,0 +1,30 @@
+<!--
+
+    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
+
+      http://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.
+
+-->
+<!DOCTYPE html>
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+    <body>
+        <div>OpenJFX Samples</div>
+    </body>
+</html>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


Mime
View raw message