Repository: roskenet/spring-javafx-examples
Branch: master
Commit: 1ca516f33e38
Files: 85
Total size: 47.4 KB
Directory structure:
gitextract_u10gn6bx/
├── .gitignore
├── .mvn/
│ └── wrapper/
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── README.md
├── mvnw
├── mvnw.cmd
├── part_1/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── example/
│ │ ├── HelloworldView.java
│ │ └── Main.java
│ └── resources/
│ ├── application.yaml
│ └── example/
│ └── helloworld.fxml
├── part_2/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── example/
│ │ ├── AwesomeActionService.java
│ │ ├── DefaultAwesomeActionService.java
│ │ ├── HelloworldController.java
│ │ ├── HelloworldView.java
│ │ └── Main.java
│ └── resources/
│ ├── application.yaml
│ └── example/
│ └── helloworld.fxml
├── part_3/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── example/
│ │ ├── AwesomeActionService.java
│ │ ├── DefaultAwesomeActionService.java
│ │ ├── HelloworldController.java
│ │ ├── HelloworldView.java
│ │ └── Main.java
│ └── resources/
│ ├── application.yaml
│ └── example/
│ ├── global.css
│ ├── helloworld.css
│ └── helloworld.fxml
├── part_4/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── example/
│ │ ├── AwesomeActionService.java
│ │ ├── DefaultAwesomeActionService.java
│ │ ├── HelloworldController.java
│ │ ├── HelloworldView.java
│ │ └── Main.java
│ └── resources/
│ ├── application.yaml
│ └── example/
│ ├── global.css
│ ├── helloworld.css
│ ├── helloworld.fxml
│ ├── helloworld.properties
│ ├── helloworld_de.properties
│ └── helloworld_fr.properties
├── part_5/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── example/
│ │ │ ├── AwesomeActionService.java
│ │ │ ├── DefaultAwesomeActionService.java
│ │ │ ├── HelloworldController.java
│ │ │ ├── HelloworldView.java
│ │ │ └── Main.java
│ │ └── resources/
│ │ ├── application.yaml
│ │ └── example/
│ │ └── helloworld.fxml
│ └── test/
│ └── java/
│ └── example/
│ ├── HelloworldView2Test.java
│ └── HelloworldViewTest.java
├── part_6_1/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── example/
│ │ ├── HelloworldJavaView.java
│ │ └── Main.java
│ └── resources/
│ └── application.yaml
├── part_6_2/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── example/
│ │ ├── FirstView.java
│ │ ├── Main.java
│ │ ├── SecondView.java
│ │ └── ViewController.java
│ └── resources/
│ ├── application.yaml
│ └── example/
│ ├── first.fxml
│ └── second.fxml
├── part_7/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── example/
│ │ ├── HelloworldController.java
│ │ ├── HelloworldView.java
│ │ ├── Main.java
│ │ ├── SomeButtonsController.java
│ │ ├── SomeButtonsView.java
│ │ └── SomeOtherView.java
│ └── resources/
│ ├── application.yaml
│ └── example/
│ ├── helloworld.fxml
│ ├── somebuttons.fxml
│ └── someother.fxml
├── part_8/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── example/
│ │ ├── FirstView.java
│ │ ├── Main.java
│ │ ├── ToolController.java
│ │ ├── ToolView.java
│ │ └── ViewController.java
│ └── resources/
│ ├── application.yaml
│ └── example/
│ ├── first.fxml
│ └── tool.fxml
└── pom.xml
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
*/target/
*/.classpath
**/.project
**/.settings
================================================
FILE: .mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip
================================================
FILE: README.md
================================================
# Examples how to use springboot-javafx-support
See: https://www.felixroske.de/page/programmierung/index.html
================================================
FILE: mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# 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.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
if [ -f /etc/mavenrc ] ; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ] ; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true;;
Darwin*) darwin=true
#
# Look for the Apple JDKs first to preserve the existing behaviour, and then look
# for the new JDKs provided by Oracle.
#
if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then
#
# Apple JDKs
#
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
fi
if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then
#
# Apple JDKs
#
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
fi
if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then
#
# Oracle JDKs
#
export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
fi
if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then
#
# Apple JDKs
#
export JAVA_HOME=`/usr/libexec/java_home`
fi
;;
esac
if [ -z "$JAVA_HOME" ] ; then
if [ -r /etc/gentoo-release ] ; then
JAVA_HOME=`java-config --jre-home`
fi
fi
if [ -z "$M2_HOME" ] ; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG="`dirname "$PRG"`/$link"
fi
done
saveddir=`pwd`
M2_HOME=`dirname "$PRG"`/..
# make it fully qualified
M2_HOME=`cd "$M2_HOME" && pwd`
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --unix "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# For Migwn, ensure paths are in UNIX format before anything is touched
if $mingw ; then
[ -n "$M2_HOME" ] &&
M2_HOME="`(cd "$M2_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
# TODO classpath?
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="`which javac`"
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=`which readlink`
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
if $darwin ; then
javaHome="`dirname \"$javaExecutable\"`"
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
else
javaExecutable="`readlink -f \"$javaExecutable\"`"
fi
javaHome="`dirname \"$javaExecutable\"`"
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="`which java`"
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --path --windows "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
fi
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
local basedir=$(pwd)
local wdir=$(pwd)
while [ "$wdir" != '/' ] ; do
if [ -d "$wdir"/.mvn ] ; then
basedir=$wdir
break
fi
wdir=$(cd "$wdir/.."; pwd)
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' < "$1")"
fi
}
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)}
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} "$@"
================================================
FILE: mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
set MAVEN_CMD_LINE_ARGS=%*
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar""
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%
================================================
FILE: part_1/pom.xml
================================================
4.0.0
part-1
0.0.1
de.roskenet.spring-fx-examples
parent
3.0.0
../pom.xml
org.springframework.boot
spring-boot-starter
de.roskenet
springboot-javafx-support
================================================
FILE: part_1/src/main/java/example/HelloworldView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView
public class HelloworldView extends AbstractFxmlView {
}
================================================
FILE: part_1/src/main/java/example/Main.java
================================================
package example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
@SpringBootApplication
public class Main extends AbstractJavaFxApplicationSupport{
public static void main(String[] args) {
launch(Main.class, HelloworldView.class, args);
}
}
================================================
FILE: part_1/src/main/resources/application.yaml
================================================
spring:
jmx:
enabled: false
javafx:
title: MyCoolApp
stage:
resizable: true
================================================
FILE: part_1/src/main/resources/example/helloworld.fxml
================================================
================================================
FILE: part_2/pom.xml
================================================
4.0.0
part-2
0.0.1
de.roskenet.spring-fx-examples
parent
3.0.0
../pom.xml
org.springframework.boot
spring-boot-starter
de.roskenet
springboot-javafx-support
================================================
FILE: part_2/src/main/java/example/AwesomeActionService.java
================================================
package example;
public interface AwesomeActionService {
String processName(String name);
}
================================================
FILE: part_2/src/main/java/example/DefaultAwesomeActionService.java
================================================
package example;
import org.springframework.stereotype.Component;
@Component
public class DefaultAwesomeActionService implements AwesomeActionService {
@Override
public String processName(final String name) {
if(name.equals("Anton")) {
return "Hello Anton!";
}
else {
return "Hello Unknown Stranger!";
}
}
}
================================================
FILE: part_2/src/main/java/example/HelloworldController.java
================================================
package example;
import org.springframework.beans.factory.annotation.Autowired;
import de.felixroske.jfxsupport.FXMLController;
import javafx.event.Event;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
@FXMLController
public class HelloworldController {
@FXML
private Label helloLabel;
@FXML
private TextField nameField;
// Be aware: This is a Spring bean. So we can do the following:
@Autowired
private AwesomeActionService actionService;
@FXML
private void setHelloText(final Event event) {
final String textToBeShown = actionService.processName(nameField.getText());
helloLabel.setText(textToBeShown);
}
}
================================================
FILE: part_2/src/main/java/example/HelloworldView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView
public class HelloworldView extends AbstractFxmlView {
}
================================================
FILE: part_2/src/main/java/example/Main.java
================================================
package example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
@SpringBootApplication
public class Main extends AbstractJavaFxApplicationSupport{
public static void main(String[] args) {
launch(Main.class, HelloworldView.class, args);
}
}
================================================
FILE: part_2/src/main/resources/application.yaml
================================================
spring:
jmx:
enabled: false
javafx:
title: MyCoolApp (Pt 2)
================================================
FILE: part_2/src/main/resources/example/helloworld.fxml
================================================
================================================
FILE: part_3/pom.xml
================================================
4.0.0
part-3
0.0.1
de.roskenet.spring-fx-examples
parent
3.0.0
../pom.xml
org.springframework.boot
spring-boot-starter
de.roskenet
springboot-javafx-support
================================================
FILE: part_3/src/main/java/example/AwesomeActionService.java
================================================
package example;
public interface AwesomeActionService {
String processName(String name);
}
================================================
FILE: part_3/src/main/java/example/DefaultAwesomeActionService.java
================================================
package example;
import org.springframework.stereotype.Component;
@Component
public class DefaultAwesomeActionService implements AwesomeActionService {
@Override
public String processName(final String name) {
if(name.equals("Anton")) {
return "Hello Anton!";
}
else {
return "Hello Unknown Stranger!";
}
}
}
================================================
FILE: part_3/src/main/java/example/HelloworldController.java
================================================
package example;
import org.springframework.beans.factory.annotation.Autowired;
import de.felixroske.jfxsupport.FXMLController;
import javafx.event.Event;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
@FXMLController
public class HelloworldController {
@FXML
private Label helloLabel;
@FXML
private TextField nameField;
// Be aware: This is a Spring bean. So we can do the following:
@Autowired
private AwesomeActionService actionService;
@FXML
private void setHelloText(final Event event) {
final String textToBeShown = actionService.processName(nameField.getText());
helloLabel.setText(textToBeShown);
}
}
================================================
FILE: part_3/src/main/java/example/HelloworldView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView
public class HelloworldView extends AbstractFxmlView {
}
================================================
FILE: part_3/src/main/java/example/Main.java
================================================
package example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
@SpringBootApplication
public class Main extends AbstractJavaFxApplicationSupport{
public static void main(String[] args) {
launch(Main.class, HelloworldView.class, args);
}
}
================================================
FILE: part_3/src/main/resources/application.yaml
================================================
spring:
jmx:
enabled: false
================================================
FILE: part_3/src/main/resources/example/global.css
================================================
.root {
-fx-background-color: #FFFFFF;
}
================================================
FILE: part_3/src/main/resources/example/helloworld.css
================================================
.button {
-fx-background-color: #009688;
-fx-background-radius: 0;
-fx-text-fill: #FFFFFF;
-fx-margin: 0;
}
.text-field {
-fx-background-color: #000000, white , white;
-fx-background-insets: 0 0 -1 0, 0 0 0 0, 0 -1 3 -1;
-fx-background-radius: 0;
-fx-margin: 0;
}
.text-field:focused {
-fx-background-color: #009688 , white , white;
-fx-background-insets: 0 0 -2 0, 0 0 0 0, 0 -1 3 -1;
}
================================================
FILE: part_3/src/main/resources/example/helloworld.fxml
================================================
================================================
FILE: part_4/pom.xml
================================================
4.0.0
part-4
0.0.1
de.roskenet.spring-fx-examples
parent
3.0.0
../pom.xml
org.springframework.boot
spring-boot-starter
de.roskenet
springboot-javafx-support
================================================
FILE: part_4/src/main/java/example/AwesomeActionService.java
================================================
package example;
public interface AwesomeActionService {
String processName(String name);
}
================================================
FILE: part_4/src/main/java/example/DefaultAwesomeActionService.java
================================================
package example;
import java.text.MessageFormat;
import java.util.ResourceBundle;
import org.springframework.stereotype.Component;
@Component
public class DefaultAwesomeActionService implements AwesomeActionService {
private ResourceBundle bundle = ResourceBundle.getBundle("example.helloworld");
@Override
public String processName(final String name) {
return MessageFormat.format(bundle.getString("greeting"), name);
}
}
================================================
FILE: part_4/src/main/java/example/HelloworldController.java
================================================
package example;
import org.springframework.beans.factory.annotation.Autowired;
import de.felixroske.jfxsupport.FXMLController;
import javafx.event.Event;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
@FXMLController
public class HelloworldController {
@FXML
private Label helloLabel;
@FXML
private TextField nameField;
// Be aware: This is a Spring bean. So we can do the following:
@Autowired
private AwesomeActionService actionService;
@FXML
private void setHelloText(final Event event) {
final String textToBeShown = actionService.processName(nameField.getText());
helloLabel.setText(textToBeShown);
}
}
================================================
FILE: part_4/src/main/java/example/HelloworldView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView(bundle="example.helloworld")
public class HelloworldView extends AbstractFxmlView {
}
================================================
FILE: part_4/src/main/java/example/Main.java
================================================
package example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
@SpringBootApplication
public class Main extends AbstractJavaFxApplicationSupport{
public static void main(String[] args) {
launch(Main.class, HelloworldView.class, args);
}
}
================================================
FILE: part_4/src/main/resources/application.yaml
================================================
spring:
jmx:
enabled: false
================================================
FILE: part_4/src/main/resources/example/global.css
================================================
.root {
-fx-background-color: #FFFFFF;
}
================================================
FILE: part_4/src/main/resources/example/helloworld.css
================================================
.button {
-fx-background-color: #009688;
-fx-background-radius: 0;
-fx-text-fill: #FFFFFF;
-fx-margin: 0;
}
.text-field {
-fx-background-color: #000000, white , white;
-fx-background-insets: 0 0 -1 0, 0 0 0 0, 0 -1 3 -1;
-fx-background-radius: 0;
-fx-margin: 0;
}
.text-field:focused {
-fx-background-color: #009688 , white , white;
-fx-background-insets: 0 0 -2 0, 0 0 0 0, 0 -1 3 -1;
}
================================================
FILE: part_4/src/main/resources/example/helloworld.fxml
================================================
================================================
FILE: part_4/src/main/resources/example/helloworld.properties
================================================
hello=Hello
greeting=Hello {0}!
go=Go!
================================================
FILE: part_4/src/main/resources/example/helloworld_de.properties
================================================
hello=Hallo
greeting=Hallo {0}!
go=Los!
================================================
FILE: part_4/src/main/resources/example/helloworld_fr.properties
================================================
hello=Salut
greeting=Salut {0} !
go=Vas-y !
================================================
FILE: part_5/pom.xml
================================================
4.0.0
part-5
0.0.1
de.roskenet.spring-fx-examples
parent
3.0.0
../pom.xml
0.0.4
org.springframework.boot
spring-boot-starter
de.roskenet
springboot-javafx-support
de.roskenet
springboot-javafx-test
${springboot-javafx-test.version}
test
================================================
FILE: part_5/src/main/java/example/AwesomeActionService.java
================================================
package example;
public interface AwesomeActionService {
String processName(String name);
}
================================================
FILE: part_5/src/main/java/example/DefaultAwesomeActionService.java
================================================
package example;
import org.springframework.stereotype.Component;
@Component
public class DefaultAwesomeActionService implements AwesomeActionService {
@Override
public String processName(final String name) {
if(name.equals("Anton")) {
return "Hello Anton!";
}
else {
return "Hello Unknown Stranger!";
}
}
}
================================================
FILE: part_5/src/main/java/example/HelloworldController.java
================================================
package example;
import org.springframework.beans.factory.annotation.Autowired;
import de.felixroske.jfxsupport.FXMLController;
import javafx.event.Event;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
@FXMLController
public class HelloworldController {
@FXML
private Label helloLabel;
@FXML
private TextField nameField;
// Be aware: This is a Spring bean. So we can do the following:
@Autowired
private AwesomeActionService actionService;
@FXML
private void setHelloText(final Event event) {
final String textToBeShown = actionService.processName(nameField.getText());
helloLabel.setText(textToBeShown);
}
}
================================================
FILE: part_5/src/main/java/example/HelloworldView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView
public class HelloworldView extends AbstractFxmlView {
}
================================================
FILE: part_5/src/main/java/example/Main.java
================================================
package example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
@SpringBootApplication
public class Main extends AbstractJavaFxApplicationSupport{
public static void main(String[] args) {
launch(Main.class, HelloworldView.class, args);
}
}
================================================
FILE: part_5/src/main/resources/application.yaml
================================================
spring:
jmx:
enabled: false
================================================
FILE: part_5/src/main/resources/example/helloworld.fxml
================================================
================================================
FILE: part_5/src/test/java/example/HelloworldView2Test.java
================================================
package example;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import javax.annotation.PostConstruct;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import de.roskenet.jfxsupport.test.GuiTest;
import javafx.application.Platform;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloworldView2Test extends GuiTest {
@Autowired
private HelloworldView helloworldView;
@PostConstruct
public void init() throws Exception {
init(helloworldView);
}
@Test
public void testClickButton_Anton() {
clickOn("#nameField")
.write("Anton")
.clickOn("#helloButton");
assertThat(labelText(), is("Hello Anton!"));
}
@Test
public void testClickButton_Berta() {
clickOn("#nameField")
.write("Berta")
.clickOn("#helloButton");
assertThat(labelText(), is("Hello Unknown Stranger!"));
}
private String labelText() {
return ((Label) find("#helloLabel")).getText();
}
@After
public void resetValues() {
// You are responsible for cleaning up your Beans!
Platform.runLater(() -> {
TextField helloLabel = (TextField) find("#nameField");
helloLabel.setText("");
});
}
}
================================================
FILE: part_5/src/test/java/example/HelloworldViewTest.java
================================================
package example;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import javax.annotation.PostConstruct;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import de.roskenet.jfxsupport.test.GuiTest;
import javafx.application.Platform;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloworldViewTest extends GuiTest {
@PostConstruct
public void init() throws Exception {
init(HelloworldView.class);
}
@Test
public void testClickButton_Anton() {
clickOn("#nameField")
.write("Anton")
.clickOn("#helloButton");
assertThat(labelText(), is("Hello Anton!"));
}
@Test
public void testClickButton_Berta() {
clickOn("#nameField")
.write("Berta")
.clickOn("#helloButton");
assertThat(labelText(), is("Hello Unknown Stranger!"));
}
private String labelText() {
return ((Label) find("#helloLabel")).getText();
}
@After
public void resetValues() {
// You are responsible for cleaning up your Beans!
Platform.runLater(() -> {
TextField helloLabel = (TextField) find("#nameField");
helloLabel.setText("");
});
}
}
================================================
FILE: part_6_1/pom.xml
================================================
4.0.0
part-6-1
0.0.1
de.roskenet.spring-fx-examples
parent
3.0.0
../pom.xml
org.springframework.boot
spring-boot-starter
de.roskenet
springboot-javafx-support
================================================
FILE: part_6_1/src/main/java/example/HelloworldJavaView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
import javafx.scene.Parent;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
@FXMLView
public class HelloworldJavaView extends AbstractFxmlView {
private Pane myJavaCodedPane;
public HelloworldJavaView() {
Pane pane = new Pane();
Button button = new Button("A Button");
pane.getChildren().add(button);
myJavaCodedPane = pane;
}
@Override
public Parent getView() {
return myJavaCodedPane;
}
}
================================================
FILE: part_6_1/src/main/java/example/Main.java
================================================
package example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
@SpringBootApplication
public class Main extends AbstractJavaFxApplicationSupport{
public static void main(String[] args) {
launch(Main.class, HelloworldJavaView.class, args);
}
}
================================================
FILE: part_6_1/src/main/resources/application.yaml
================================================
spring:
jmx:
enabled: false
================================================
FILE: part_6_2/pom.xml
================================================
4.0.0
part-6-2
0.0.1
de.roskenet.spring-fx-examples
parent
3.0.0
../pom.xml
org.springframework.boot
spring-boot-starter
de.roskenet
springboot-javafx-support
================================================
FILE: part_6_2/src/main/java/example/FirstView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView
public class FirstView extends AbstractFxmlView {
}
================================================
FILE: part_6_2/src/main/java/example/Main.java
================================================
package example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
@SpringBootApplication
public class Main extends AbstractJavaFxApplicationSupport{
public static void main(String[] args) {
launch(Main.class, FirstView.class, args);
}
}
================================================
FILE: part_6_2/src/main/java/example/SecondView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView
public class SecondView extends AbstractFxmlView{
}
================================================
FILE: part_6_2/src/main/java/example/ViewController.java
================================================
package example;
import de.felixroske.jfxsupport.FXMLController;
import javafx.event.Event;
@FXMLController
public class ViewController {
public void showFirstView(Event event) {
Main.showView(FirstView.class);
}
public void showSecondView(Event event) {
Main.showView(SecondView.class);
}
}
================================================
FILE: part_6_2/src/main/resources/application.yaml
================================================
spring:
jmx:
enabled: false
javafx:
stage:
resizable: false
title: MyCoolApp
================================================
FILE: part_6_2/src/main/resources/example/first.fxml
================================================
================================================
FILE: part_6_2/src/main/resources/example/second.fxml
================================================
================================================
FILE: part_7/pom.xml
================================================
4.0.0
part-7
0.0.1
de.roskenet.spring-fx-examples
parent
3.0.0
../pom.xml
org.springframework.boot
spring-boot-starter
de.roskenet
springboot-javafx-support
================================================
FILE: part_7/src/main/java/example/HelloworldController.java
================================================
package example;
import org.springframework.beans.factory.annotation.Autowired;
import de.felixroske.jfxsupport.FXMLController;
import javafx.event.Event;
import javafx.fxml.FXML;
import javafx.scene.layout.Pane;
@FXMLController
public class HelloworldController {
@FXML
Pane myDynamicPane;
@Autowired
SomeButtonsView someButtonsView;
@Autowired
SomeOtherView someOtherView;
public void showSomeButtonView(final Event e) {
myDynamicPane.getChildren().clear();
myDynamicPane.getChildren().add(someButtonsView.getView());
}
public void showSomeOtherView(final Event e) {
myDynamicPane.getChildren().clear();
myDynamicPane.getChildren().add(someOtherView.getView());
}
}
================================================
FILE: part_7/src/main/java/example/HelloworldView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView
public class HelloworldView extends AbstractFxmlView {
}
================================================
FILE: part_7/src/main/java/example/Main.java
================================================
package example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
@SpringBootApplication
public class Main extends AbstractJavaFxApplicationSupport{
public static void main(String[] args) {
launch(Main.class, HelloworldView.class, args);
}
}
================================================
FILE: part_7/src/main/java/example/SomeButtonsController.java
================================================
package example;
import de.felixroske.jfxsupport.FXMLController;
import javafx.event.Event;
import javafx.fxml.FXML;
@FXMLController
public class SomeButtonsController {
@FXML
public void reactOnClick(final Event e) {
System.out.println("Clicked a button");
}
}
================================================
FILE: part_7/src/main/java/example/SomeButtonsView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView
public class SomeButtonsView extends AbstractFxmlView{
}
================================================
FILE: part_7/src/main/java/example/SomeOtherView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView
public class SomeOtherView extends AbstractFxmlView{
}
================================================
FILE: part_7/src/main/resources/application.yaml
================================================
spring:
jmx:
enabled: false
javafx:
title: MyCoolApp
================================================
FILE: part_7/src/main/resources/example/helloworld.fxml
================================================
================================================
FILE: part_7/src/main/resources/example/somebuttons.fxml
================================================
================================================
FILE: part_7/src/main/resources/example/someother.fxml
================================================
================================================
FILE: part_8/pom.xml
================================================
4.0.0
part-8
0.0.1
de.roskenet.spring-fx-examples
parent
3.0.0
../pom.xml
org.springframework.boot
spring-boot-starter
de.roskenet
springboot-javafx-support
================================================
FILE: part_8/src/main/java/example/FirstView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView
public class FirstView extends AbstractFxmlView {
}
================================================
FILE: part_8/src/main/java/example/Main.java
================================================
package example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
@SpringBootApplication
public class Main extends AbstractJavaFxApplicationSupport{
public static void main(String[] args) {
launch(Main.class, FirstView.class, args);
}
}
================================================
FILE: part_8/src/main/java/example/ToolController.java
================================================
package example;
import de.felixroske.jfxsupport.FXMLController;
import javafx.event.Event;
@FXMLController
public class ToolController {
public void doSomething(final Event e) {
System.out.println("You pressed some button!");
}
}
================================================
FILE: part_8/src/main/java/example/ToolView.java
================================================
package example;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView(title="My second view")
public class ToolView extends AbstractFxmlView{
}
================================================
FILE: part_8/src/main/java/example/ViewController.java
================================================
package example;
import java.io.IOException;
import de.felixroske.jfxsupport.FXMLController;
import javafx.event.Event;
import javafx.stage.Modality;
@FXMLController
public class ViewController {
public void showToolWindow(Event event) throws IOException {
Main.showView(ToolView.class, Modality.NONE);
}
}
================================================
FILE: part_8/src/main/resources/application.yaml
================================================
spring:
jmx:
enabled: false
javafx:
stage:
resizable: false
title: MyCoolApp
================================================
FILE: part_8/src/main/resources/example/first.fxml
================================================
================================================
FILE: part_8/src/main/resources/example/tool.fxml
================================================
================================================
FILE: pom.xml
================================================
4.0.0
de.roskenet.spring-fx-examples
parent
pom
3.0.0
Multi Chapter Parent Project
org.springframework.boot
spring-boot-starter-parent
2.0.0.RELEASE
UTF-8
1.8
2.1.6
part_1
part_2
part_3
part_4
part_5
part_6_1
part_6_2
part_7
part_8
de.roskenet
springboot-javafx-support
${springboot-javafx.version}
org.springframework.boot
spring-boot-maven-plugin