diff --git a/.gitignore b/.gitignore index af7b7b6e08..6a3d41f624 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,8 @@ !.idea/copyright/Bitsquare_Affero_GPLv3.xml !.idea/copyright/profiles_settings.xml !.idea/codeStyleSettings.xml -bitsquare.iml +*.iml +*/*.iml *.spvchain *.wallet *.ser diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index fde7fbb678..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -language: java -jdk: oraclejdk8 - -before_install: - - "export DISPLAY=:99.0" - - "sh -e /etc/init.d/xvfb start" - -notifications: - irc: - channels: chat.freenode.net#bitsquare - template: - - '%{message} (%{repository}#%{build_number}, %{duration})' - - '%{repository}/%{branch} %{commit} %{author}: %{commit_message}' - - '%{build_url}' - on_success: change - on_failure: always - use_notice: true - skip_join: true - -env: - - TERM=dumb - -after_success: - - ./gradlew jacocoTestReport coveralls diff --git a/README.md b/README.md index 347d96897d..8058079267 100644 --- a/README.md +++ b/README.md @@ -18,44 +18,12 @@ You can read about all of this and more in the [whitepaper](https://bitsquare.io Status ------ -Pre-alpha and under heavy development. +Alpha and under heavy development. Building from source -------------------- -1. Install the latest JDK (8u20 or better) -2. Clone this repository -3. **Build and launch the Bitsquare JavaFX client** by running: -``` -./gradlew run -``` - -Pass command line arguments to the app via the Gradle `-Pargs` property as follows: - - ./gradlew run -Pargs="--help" - -Or, **build an executable jar** with the `appJar` task: - - ./gradlew appJar - -Run the app as follows: - - java -jar build/libs/bitsquare-<version>-app.jar - -Pass the `--help` flag to see what options are available: - - java -jar build/libs/bitsquare-<version>-app.jar --help - -To **build a headless bootstrap node jar**, run the `bootstrapNodeJar` task: - - ./gradlew bootstrapNodeJar - -Run the bootstrap node: - - java -jar build/libs/bitsquare-<version>-bootstrapNode.jar - - -See [doc/build.md](doc/build.md) for additional information. +See [doc/build.md](doc/build.md). Staying in Touch diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 5bbc101ae8..0000000000 --- a/build.gradle +++ /dev/null @@ -1,102 +0,0 @@ -import org.apache.tools.ant.filters.ReplaceTokens -import org.apache.tools.ant.taskdefs.condition.Os - -plugins { - id "com.github.johnrengelman.shadow" version "1.1.2" - id "com.github.kt3k.coveralls" version "2.0.1x" -} - -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'application' -apply plugin: 'jacoco' - -wrapper.gradleVersion = '2.1' - -version = '0.1.1-SNAPSHOT' -sourceCompatibility = 1.8 - -sourceSets.main.resources.srcDirs += 'src/main/java' -sourceSets.test.resources.srcDirs += 'src/test/java' - -mainClassName = "io.bitsquare.app.gui.BitsquareAppMain" - -run { - if (project.hasProperty('args')) { - args project.args.split(',') - } -} - -processResources { - from(sourceSets.main.resources.srcDirs) { - include '**/*.properties' - filter(ReplaceTokens, tokens: ['app.version': project.version]) - } -} - -repositories { - jcenter() - maven { url 'http://tomp2p.net/dev/mvn/' } -} - -dependencies { - compile 'org.bitcoinj:bitcoinj-core:0.12.2' - compile 'net.tomp2p:tomp2p-all:5.0-Beta3' - compile 'io.reactivex:rxjava:1.0.0' - compile 'org.springframework:spring-core:4.1.1.RELEASE' - compile 'net.sf.jopt-simple:jopt-simple:4.8' - compile 'org.slf4j:slf4j-api:1.7.7' - compile 'ch.qos.logback:logback-core:1.1.2' - compile 'ch.qos.logback:logback-classic:1.1.2' - compile 'com.google.inject:guice:3.0' - compile 'com.google.guava:guava:16.0.1' - compile 'com.google.code.gson:gson:2.2.4' - compile 'org.controlsfx:controlsfx:8.0.6_20' - compile 'de.jensd:fontawesomefx:8.0.0' - compile 'net.glxn:qrgen:1.3' - compile 'com.google.code.findbugs:jsr305:2.0.3' - compile 'net.jcip:jcip-annotations:1.0' - compile 'org.jetbrains:annotations:13.0' - compile 'eu.hansolo.enzo:Enzo:0.1.5' - compile 'com.vinumeris:updatefx:1.2' - testCompile 'junit:junit:4.11' - testCompile "org.mockito:mockito-core:1.+" - testCompile 'org.springframework:spring-test:4.1.1.RELEASE' -} - -shadowJar.classifier = 'app' - -task packageNative(type: Exec, dependsOn: shadowJar) { - if (Os.isFamily(Os.FAMILY_MAC)) - executable "${project.rootDir}/package/mac.sh" - else if (Os.isFamily(Os.FAMILY_UNIX)) - executable "${project.rootDir}/package/linux.sh" - else if (Os.isFamily(Os.FAMILY_WINDOWS)) - executable "${project.rootDir}/package/windows.bat" - else - throw new GradleException("Unsupported OS: " + System.properties['os.name']) - - args project.version, shadowJar.archivePath, mainClassName -} - -task appJar(dependsOn: shadowJar) { - group = "shadow" - description = "Builds a Bitsquare client UI executable jar" -} - -task bootstrapNodeJar(type: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) { - group = "shadow" - description = "Builds a Bitsquare bootstrap node executable jar" - manifest.attributes 'Main-Class': 'io.bitsquare.app.cli.BootstrapNodeMain' - classifier = 'bootstrapNode' - from(project.convention.getPlugin(JavaPluginConvention).sourceSets.main.output) - configurations = [project.configurations.runtime] - exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA') -} - -jacocoTestReport { - reports { - xml.enabled = true - html.enabled = true - } -} diff --git a/common/pom.xml b/common/pom.xml new file mode 100755 index 0000000000..18102fb14a --- /dev/null +++ b/common/pom.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <artifactId>parent</artifactId> + <groupId>io.bitsquare</groupId> + <version>0.1.1-SNAPSHOT</version> + </parent> + + <artifactId>common</artifactId> + + <dependencies> + </dependencies> +</project> \ No newline at end of file diff --git a/doc/build.md b/doc/build.md index 52f1fa8b9c..75369886bb 100644 --- a/doc/build.md +++ b/doc/build.md @@ -9,21 +9,21 @@ This guide will walk you through the process of building Bitsquare from source. For the impatient ----------------- -What follows is explained in detail in the sections below, but for those who know their way around Java, git and Gradle, here are the instructions in a nutshell: +What follows is explained in detail in the sections below, but for those who know their way around Java, git and Maven, here are the instructions in a nutshell: $ javac -version javac 1.8.0_20 # must be 1.8.0_20 or better $ git clone https://github.com/bitsquare/bitsquare.git $ cd bitsquare - $ ./gradlew appJar # (on *nix) - --- or --- - $ gradlew appJar # (on Windows) + $ mvn package -When the build completes, you will find an excutable jar in the `build/libs` directory. Run it as follows for the help screen: - - $ java -jar build/libs/bitsquare-<version>-app.jar --help +When the build completes, you will find an excutable jar: `gui/target/shaded.jar`. +To run it use: + $ java -jar gui/target/shaded.jar +To build the binary needs a bit more preparation as we use [UpdateFX](https://github.com/vinumeris/updatefx) for automatic updates. +You can find more information in the build scripts under package. Prerequisites ------------- @@ -52,19 +52,20 @@ The preferred approach is to clone the Bitsquare repository using [git](http://w However, if you're not familiar with git or it is otherwise inconvenient to use, you can also download and extract a zip file of the latest sources at https://github.com/bitsquare/bitsquare/archive/master.zip. -### 2. Build +### 2. Build jar -Bitsquare uses [Gradle](http://www.gradle.org/), and the [Gradle wrapper](http://www.gradle.org/docs/current/userguide/gradle_wrapper.html) as a build system. This means you don't need to download or do anything other than run the following command within the `bitsquare` directory. - - ./gradlew appJar - -> _**NOTE:** on Windows, leave out the `./` and simply run `gradlew appJar`._ +Bitsquare uses maven as a build system. + $ cd bitsquare + $ mvn package + ### 3. Run -When the build completes, you'll find an executable jar in the `build/libs` directory. See instructions above for how to run it. +When the build completes, you will find an excutable jar: `gui/target/shaded.jar`. +To run it use: + $ java -jar gui/target/shaded.jar Problems? --------- diff --git a/doc/update_fork_tomp2p.sh b/doc/update_fork_tomp2p.sh new file mode 100755 index 0000000000..37aec820da --- /dev/null +++ b/doc/update_fork_tomp2p.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +cd /Users/mk/Documents/_intellij/TomP2P-master_fork/TomP2P +git reset --hard +git remote add upstream https://github.com/tomp2p/TomP2P.git +git checkout master +git pull upstream master +git push origin master + +git checkout published +git reset --hard master +export COMMITHASH=$(git log --oneline -1 | cut -d" " -f1) +git grep -l 5.0-Alpha | xargs perl -p -i -e "s/5.0-Alpha(..?)-SNAPSHOT/5.0-Alpha$1.$COMMITHASH-SNAPSHOT/" +git commit -am"Qualify pom version for publication" +echo $COMMITHASH + +mvn clean install -DskipTests + +git show bitsquare-published-91276e8:README > README +git add README +git commit -m"Add README with publication instructions" + +git tag bitsquare-published-$COMMITHASH published +git push -f origin published +git push --tags + +echo $COMMITHASH + + diff --git a/gradle.properties b/gradle.properties deleted file mode 100644 index 93071f32d8..0000000000 --- a/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -org.gradle.jvmargs=-Xmx1024m -org.gradle.daemon=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index b761216703..0000000000 Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 8e5ef3d667..0000000000 --- a/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Tue Sep 30 23:44:09 CEST 2014 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.1-all.zip diff --git a/gradlew b/gradlew deleted file mode 100755 index 91a7e269e1..0000000000 --- a/gradlew +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -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 -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -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 - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat deleted file mode 100644 index aec99730b4..0000000000 --- a/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/gui/pom.xml b/gui/pom.xml new file mode 100755 index 0000000000..36e0c898ac --- /dev/null +++ b/gui/pom.xml @@ -0,0 +1,210 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <artifactId>parent</artifactId> + <groupId>io.bitsquare</groupId> + <version>0.1.1-SNAPSHOT</version> + </parent> + + <artifactId>gui</artifactId> + + <build> + + <resources> + <resource> + <filtering>false</filtering> + <directory>${basedir}/src/main/java</directory> + <includes> + <include>**/*.fxml</include> + <include>**/*.css</include> + </includes> + </resource> + <resource> + <filtering>false</filtering> + <directory>${basedir}/src/main/resources</directory> + <includes> + <include>**/*.*</include> + </includes> + </resource> + </resources> + + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <version>2.3</version> + <configuration> + <!-- broken with Java 8 (MSHADE-174), using ProGuard instead. --> + <minimizeJar>false</minimizeJar> + <transformers> + <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> + <mainClass>io.bitsquare.app.gui.BitsquareAppMain</mainClass> + </transformer> + </transformers> + <filters> + <filter> + <!-- exclude signatures, the bundling process breaks them for some reason --> + <artifact>*:*</artifact> + <excludes> + <exclude>META-INF/*.SF</exclude> + <exclude>META-INF/*.DSA</exclude> + <exclude>META-INF/*.RSA</exclude> + </excludes> + </filter> + </filters> + </configuration> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + <configuration> + <shadedArtifactAttached>true</shadedArtifactAttached> + <shadedClassifierName>bundled</shadedClassifierName> + <finalName>shaded</finalName> + </configuration> + </execution> + </executions> + </plugin> + + <!-- <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.3.1</version> + <executions> + <execution> + <id>enforce</id> + <configuration> + <rules> + <DependencyConvergence /> + </rules> + </configuration> + <goals> + <goal>enforce</goal> + </goals> + </execution> + </executions> + </plugin>--> + + </plugins> + </build> + + <repositories> + <repository> + <id>sonatype-oss-snapshot</id> + <snapshots/> + <url>https://oss.sonatype.org/content/repositories/snapshots</url> + </repository> + <repository> + <id>repository.tomp2p.net</id> + <url>http://tomp2p.net/dev/mvn</url> + </repository> + </repositories> + + <dependencies> + <dependency> + <groupId>io.bitsquare</groupId> + <artifactId>common</artifactId> + <version>${project.parent.version}</version> + </dependency> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-core</artifactId> + <version>1.1.2</version> + </dependency> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <version>1.1.2</version> + </dependency> + <dependency> + <groupId>net.tomp2p</groupId> + <artifactId>tomp2p-all</artifactId> + <version>5.0-Beta3</version> + </dependency> + <dependency> + <groupId>io.reactivex</groupId> + <artifactId>rxjava</artifactId> + <version>1.0.0</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-core</artifactId> + <version>4.1.1.RELEASE</version> + </dependency> + <dependency> + <groupId>net.sf.jopt-simple</groupId> + <artifactId>jopt-simple</artifactId> + <version>4.8</version> + </dependency> + <dependency> + <groupId>com.google.inject</groupId> + <artifactId>guice</artifactId> + <version>3.0</version> + </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.2.4</version> + </dependency> + <dependency> + <groupId>org.controlsfx</groupId> + <artifactId>controlsfx</artifactId> + <version>8.0.6_20</version> + </dependency> + <dependency> + <groupId>de.jensd</groupId> + <artifactId>fontawesomefx</artifactId> + <version>8.0.0</version> + </dependency> + <dependency> + <groupId>net.glxn</groupId> + <artifactId>qrgen</artifactId> + <version>1.3</version> + </dependency> + <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>jsr305</artifactId> + <version>2.0.1</version> + </dependency> + <dependency> + <groupId>net.jcip</groupId> + <artifactId>jcip-annotations</artifactId> + <version>1.0</version> + </dependency> + <dependency> + <groupId>org.jetbrains</groupId> + <artifactId>annotations</artifactId> + <version>13.0</version> + </dependency> + <dependency> + <groupId>eu.hansolo.enzo</groupId> + <artifactId>Enzo</artifactId> + <version>0.1.5</version> + </dependency> + + <dependency> + <groupId>org.fxmisc.easybind</groupId> + <artifactId>easybind</artifactId> + <version>1.0.2</version> + </dependency> + + <dependency> + <groupId>com.vinumeris</groupId> + <artifactId>updatefx</artifactId> + <version>1.2</version> + </dependency> + + <!-- + <dependency> + <groupId>com.vinumeris</groupId> + <artifactId>crashfx-client</artifactId> + <version>1.1</version> + </dependency> + --> + </dependencies> +</project> diff --git a/src/main/java/eu/hansolo/enzo/notification/Notification.java b/gui/src/main/java/eu/hansolo/enzo/notification/Notification.java similarity index 100% rename from src/main/java/eu/hansolo/enzo/notification/Notification.java rename to gui/src/main/java/eu/hansolo/enzo/notification/Notification.java diff --git a/src/main/java/io/bitsquare/BitsquareException.java b/gui/src/main/java/io/bitsquare/BitsquareException.java similarity index 100% rename from src/main/java/io/bitsquare/BitsquareException.java rename to gui/src/main/java/io/bitsquare/BitsquareException.java diff --git a/src/main/java/io/bitsquare/BitsquareModule.java b/gui/src/main/java/io/bitsquare/BitsquareModule.java similarity index 100% rename from src/main/java/io/bitsquare/BitsquareModule.java rename to gui/src/main/java/io/bitsquare/BitsquareModule.java diff --git a/src/main/java/io/bitsquare/account/AccountSettings.java b/gui/src/main/java/io/bitsquare/account/AccountSettings.java similarity index 100% rename from src/main/java/io/bitsquare/account/AccountSettings.java rename to gui/src/main/java/io/bitsquare/account/AccountSettings.java diff --git a/src/main/java/io/bitsquare/app/BitsquareEnvironment.java b/gui/src/main/java/io/bitsquare/app/BitsquareEnvironment.java similarity index 99% rename from src/main/java/io/bitsquare/app/BitsquareEnvironment.java rename to gui/src/main/java/io/bitsquare/app/BitsquareEnvironment.java index 5c80aea540..005833d285 100644 --- a/src/main/java/io/bitsquare/app/BitsquareEnvironment.java +++ b/gui/src/main/java/io/bitsquare/app/BitsquareEnvironment.java @@ -45,7 +45,6 @@ public class BitsquareEnvironment extends StandardEnvironment { public static final String APP_VERSION_KEY = "app.version"; - // TODO what is the difference to APP_DATA_DIR ? public static final String USER_DATA_DIR_KEY = "user.data.dir"; public static final String DEFAULT_USER_DATA_DIR = defaultUserDataDir(); @@ -99,7 +98,6 @@ public class BitsquareEnvironment extends StandardEnvironment { } } - PropertySource<?> appDirProperties() throws Exception { String location = String.format("file:%s/bitsquare.properties", appDataDir); Resource resource = resourceLoader.getResource(location); diff --git a/src/main/java/io/bitsquare/app/BitsquareExecutable.java b/gui/src/main/java/io/bitsquare/app/BitsquareExecutable.java similarity index 100% rename from src/main/java/io/bitsquare/app/BitsquareExecutable.java rename to gui/src/main/java/io/bitsquare/app/BitsquareExecutable.java diff --git a/src/main/java/io/bitsquare/app/cli/BootstrapNode.java b/gui/src/main/java/io/bitsquare/app/cli/BootstrapNode.java similarity index 100% rename from src/main/java/io/bitsquare/app/cli/BootstrapNode.java rename to gui/src/main/java/io/bitsquare/app/cli/BootstrapNode.java diff --git a/src/main/java/io/bitsquare/app/cli/BootstrapNodeMain.java b/gui/src/main/java/io/bitsquare/app/cli/BootstrapNodeMain.java similarity index 100% rename from src/main/java/io/bitsquare/app/cli/BootstrapNodeMain.java rename to gui/src/main/java/io/bitsquare/app/cli/BootstrapNodeMain.java diff --git a/src/main/java/io/bitsquare/app/gui/BitsquareApp.java b/gui/src/main/java/io/bitsquare/app/gui/BitsquareApp.java similarity index 96% rename from src/main/java/io/bitsquare/app/gui/BitsquareApp.java rename to gui/src/main/java/io/bitsquare/app/gui/BitsquareApp.java index a36d32bb40..0f072e9b00 100644 --- a/src/main/java/io/bitsquare/app/gui/BitsquareApp.java +++ b/gui/src/main/java/io/bitsquare/app/gui/BitsquareApp.java @@ -58,7 +58,7 @@ import org.springframework.util.FileSystemUtils; import static io.bitsquare.app.BitsquareEnvironment.*; public class BitsquareApp extends Application { - private static final Logger log = LoggerFactory.getLogger(BitsquareAppMain.class); + private static final Logger log = LoggerFactory.getLogger(BitsquareApp.class); private static Environment env; @@ -71,9 +71,7 @@ public class BitsquareApp extends Application { @Override public void start(Stage primaryStage) throws IOException { - // For some reason the JavaFX launch process results in us losing the thread context class loader: reset it. - Thread.currentThread().setContextClassLoader(BitsquareApp.class.getClassLoader()); - + log.trace("BitsquareApp.start"); bitsquareAppModule = new BitsquareAppModule(env, primaryStage); injector = Guice.createInjector(bitsquareAppModule); injector.getInstance(InjectorViewFactory.class).setInjector(injector); @@ -107,6 +105,7 @@ public class BitsquareApp extends Application { // load the main view and create the main scene + log.trace("viewLoader.load(MainView.class)"); ViewLoader viewLoader = injector.getInstance(CachingViewLoader.class); View view = viewLoader.load(MainView.class); @@ -152,6 +151,7 @@ public class BitsquareApp extends Application { // make the UI visible + log.trace("primaryStage.show"); primaryStage.show(); } diff --git a/src/main/java/io/bitsquare/app/gui/BitsquareAppMain.java b/gui/src/main/java/io/bitsquare/app/gui/BitsquareAppMain.java similarity index 71% rename from src/main/java/io/bitsquare/app/gui/BitsquareAppMain.java rename to gui/src/main/java/io/bitsquare/app/gui/BitsquareAppMain.java index a9e660c036..a1c6129325 100644 --- a/src/main/java/io/bitsquare/app/gui/BitsquareAppMain.java +++ b/gui/src/main/java/io/bitsquare/app/gui/BitsquareAppMain.java @@ -30,6 +30,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.vinumeris.updatefx.UpdateFX; +import joptsimple.OptionException; import joptsimple.OptionParser; import joptsimple.OptionSet; @@ -42,14 +43,38 @@ public class BitsquareAppMain extends BitsquareExecutable { private static final Logger log = LoggerFactory.getLogger(BitsquareAppMain.class); public static void main(String[] args) throws Exception { - // We don't want to do the whole arg parsing/setup here as that might easily change in update versions - // So we only handle the absolute minimum which is APP_NAME and USER_DATA_DIR - // TODO Not impl. yet, just use default for first testings - UpdateFX.bootstrap(BitsquareAppMain.class, new File(BitsquareEnvironment.DEFAULT_APP_DATA_DIR).toPath(), args); + // We don't want to do the full argument parsing here as that might easily change in update versions + // So we only handle the absolute minimum which is APP_NAME, APP_DATA_DIR_KEY and USER_DATA_DIR + OptionParser parser = new OptionParser(); + parser.accepts(USER_DATA_DIR_KEY, description("User data directory", DEFAULT_USER_DATA_DIR)) + .withRequiredArg(); + parser.accepts(APP_NAME_KEY, description("Application name", DEFAULT_APP_NAME)) + .withRequiredArg(); + parser.accepts(APP_DATA_DIR_KEY, description("Application data directory", DEFAULT_APP_DATA_DIR)) + .withRequiredArg(); + + OptionSet options; + try { + options = parser.parse(args); + } catch (OptionException ex) { + System.out.println("error: " + ex.getMessage()); + System.out.println(); + parser.printHelpOn(System.out); + System.exit(EXIT_FAILURE); + return; + } + BitsquareEnvironment bitsquareEnvironment = new BitsquareEnvironment(options); + String updatesDirectory = bitsquareEnvironment.getProperty(BitsquareEnvironment.APP_DATA_DIR_KEY); + UpdateFX.bootstrap(BitsquareAppMain.class, new File(updatesDirectory).toPath(), args); } // That will be called from UpdateFX after updates are checked public static void realMain(String[] args) throws Exception { + log.trace("realMain"); + // For some reason the JavaFX launch process results in us losing the thread context class loader: reset it. + // In order to work around a bug in JavaFX 8u25 and below, you must include the following code as the first line of your realMain method: + Thread.currentThread().setContextClassLoader(BitsquareAppMain.class.getClassLoader()); + new BitsquareAppMain().execute(args); } diff --git a/src/main/java/io/bitsquare/app/gui/BitsquareAppModule.java b/gui/src/main/java/io/bitsquare/app/gui/BitsquareAppModule.java similarity index 93% rename from src/main/java/io/bitsquare/app/gui/BitsquareAppModule.java rename to gui/src/main/java/io/bitsquare/app/gui/BitsquareAppModule.java index a3ed2b1739..3f13e671d7 100644 --- a/src/main/java/io/bitsquare/app/gui/BitsquareAppModule.java +++ b/gui/src/main/java/io/bitsquare/app/gui/BitsquareAppModule.java @@ -61,10 +61,8 @@ class BitsquareAppModule extends BitsquareModule { bindConstant().annotatedWith(named(Persistence.PREFIX_KEY)).to(env.getRequiredProperty(Persistence.PREFIX_KEY)); bind(Persistence.class).asEagerSingleton(); - // TODO UpdateFXHelper needs Environment. Should we just expose the 2 properties needed? bind(Environment.class).toInstance(env); - // for temp testing with mock - bind(UpdateProcess.class).to(MockUpdateProcess.class).asEagerSingleton(); + bind(UpdateProcess.class).asEagerSingleton(); install(messageModule()); install(bitcoinModule()); diff --git a/src/main/java/io/bitsquare/app/gui/UpdateProcess.java b/gui/src/main/java/io/bitsquare/app/gui/UpdateProcess.java similarity index 86% rename from src/main/java/io/bitsquare/app/gui/UpdateProcess.java rename to gui/src/main/java/io/bitsquare/app/gui/UpdateProcess.java index 827157336b..ac573d4c4a 100644 --- a/src/main/java/io/bitsquare/app/gui/UpdateProcess.java +++ b/gui/src/main/java/io/bitsquare/app/gui/UpdateProcess.java @@ -51,14 +51,15 @@ import rx.subjects.Subject; public class UpdateProcess { private static final Logger log = LoggerFactory.getLogger(UpdateProcess.class); + // Edit version for updateFX private static final int VERSION = 1; - private static final List<ECPoint> UPDATE_SIGNING_KEYS = Crypto.decode( - "028B41BDDCDCAD97B6AE088FEECA16DC369353B717E13319370C729CB97D677A11", - "031E3D80F21A4D10D385A32ABEDC300DACBEDBC839FBA58376FBD5D791D806BA68" - ); - private static final int UPDATE_SIGNING_THRESHOLD = 1; + + private static final List<ECPoint> UPDATE_SIGNING_KEYS = Crypto.decode("032D7B4073B0B94F0B0AAD72D4CC2B86FDDE7AAE334DE4BE448B0983D887975289"); private static final String UPDATES_BASE_URL = "http://localhost:8000/"; + + private static final int UPDATE_SIGNING_THRESHOLD = 1; private static final Path ROOT_CLASS_PATH = UpdateFX.findCodePath(BitsquareAppMain.class); + private Environment environment; public enum State { @@ -72,22 +73,11 @@ public class UpdateProcess { protected String errorMessage; protected final Subject<State, State> process = BehaviorSubject.create(); - protected final AnimationTimer timeoutTimer; + protected AnimationTimer timeoutTimer; @Inject public UpdateProcess(Environment environment) { - // process.timeout() will cause an error state back but we dont want to break startup in case of an update - // timeout - timeoutTimer = Utilities.setTimeout(10000, new Function<AnimationTimer, Void>() { - @Override - public Void apply(AnimationTimer animationTimer) { - process.onCompleted(); - return null; - } - }); - timeoutTimer.start(); - - init(environment); + this.environment = environment; } public void restart() { @@ -102,16 +92,26 @@ public class UpdateProcess { return errorMessage; } - protected void init(Environment environment) { - log.info("version " + VERSION); + public void init() { + log.info("UpdateFX current version " + VERSION); + // process.timeout() will cause an error state back but we don't want to break startup in case of an timeout + timeoutTimer = Utilities.setTimeout(10000, new Function<AnimationTimer, Void>() { + @Override + public Void apply(AnimationTimer animationTimer) { + process.onCompleted(); + return null; + } + }); + timeoutTimer.start(); + String agent = environment.getProperty(BitsquareEnvironment.APP_NAME_KEY) + VERSION; Path dataDirPath = new File(environment.getProperty(BitsquareEnvironment.APP_DATA_DIR_KEY)).toPath(); Updater updater = new Updater(UPDATES_BASE_URL, agent, VERSION, dataDirPath, ROOT_CLASS_PATH, UPDATE_SIGNING_KEYS, UPDATE_SIGNING_THRESHOLD) { @Override protected void updateProgress(long workDone, long max) { - log.debug("updateProgress " + workDone + "/" + max); + //log.trace("updateProgress " + workDone + "/" + max); super.updateProgress(workDone, max); } }; @@ -127,24 +127,24 @@ public class UpdateProcess { updater.setOnSucceeded(event -> { try { UpdateSummary summary = updater.get(); - if (summary.descriptions.size() > 0) { + log.info("summary " +summary.toString()); + if (summary.descriptions != null && summary.descriptions.size() > 0) { log.info("One liner: {}", summary.descriptions.get(0).getOneLiner()); log.info("{}", summary.descriptions.get(0).getDescription()); } if (summary.highestVersion > VERSION) { + log.info("UPDATE_AVAILABLE"); state.set(State.UPDATE_AVAILABLE); + // We stop the timeout and treat it not completed. + // The user should click the restart button manually if there are updates available. + timeoutTimer.stop(); } else if (summary.highestVersion == VERSION) { + log.info("UP_TO_DATE"); state.set(State.UP_TO_DATE); timeoutTimer.stop(); process.onCompleted(); } - - /* if (summary.highestVersion > VERSION) { - log.info("Restarting to get version " + summary.highestVersion); - if (UpdateFX.getVersionPin(dataDirPath) == 0) - UpdateFX.restartApp(); - }*/ } catch (Throwable e) { log.error("Exception at processing UpdateSummary: " + e.getMessage()); @@ -172,5 +172,4 @@ public class UpdateProcess { thread.setDaemon(true); thread.start(); } - -} +} \ No newline at end of file diff --git a/src/main/java/io/bitsquare/arbitrator/Arbitrator.java b/gui/src/main/java/io/bitsquare/arbitrator/Arbitrator.java similarity index 100% rename from src/main/java/io/bitsquare/arbitrator/Arbitrator.java rename to gui/src/main/java/io/bitsquare/arbitrator/Arbitrator.java diff --git a/src/main/java/io/bitsquare/arbitrator/Reputation.java b/gui/src/main/java/io/bitsquare/arbitrator/Reputation.java similarity index 100% rename from src/main/java/io/bitsquare/arbitrator/Reputation.java rename to gui/src/main/java/io/bitsquare/arbitrator/Reputation.java diff --git a/src/main/java/io/bitsquare/bank/BankAccount.java b/gui/src/main/java/io/bitsquare/bank/BankAccount.java similarity index 100% rename from src/main/java/io/bitsquare/bank/BankAccount.java rename to gui/src/main/java/io/bitsquare/bank/BankAccount.java diff --git a/src/main/java/io/bitsquare/bank/BankAccountType.java b/gui/src/main/java/io/bitsquare/bank/BankAccountType.java similarity index 100% rename from src/main/java/io/bitsquare/bank/BankAccountType.java rename to gui/src/main/java/io/bitsquare/bank/BankAccountType.java diff --git a/src/main/java/io/bitsquare/btc/AddressBasedCoinSelector.java b/gui/src/main/java/io/bitsquare/btc/AddressBasedCoinSelector.java similarity index 100% rename from src/main/java/io/bitsquare/btc/AddressBasedCoinSelector.java rename to gui/src/main/java/io/bitsquare/btc/AddressBasedCoinSelector.java diff --git a/src/main/java/io/bitsquare/btc/AddressEntry.java b/gui/src/main/java/io/bitsquare/btc/AddressEntry.java similarity index 100% rename from src/main/java/io/bitsquare/btc/AddressEntry.java rename to gui/src/main/java/io/bitsquare/btc/AddressEntry.java diff --git a/src/main/java/io/bitsquare/btc/BitcoinModule.java b/gui/src/main/java/io/bitsquare/btc/BitcoinModule.java similarity index 100% rename from src/main/java/io/bitsquare/btc/BitcoinModule.java rename to gui/src/main/java/io/bitsquare/btc/BitcoinModule.java diff --git a/src/main/java/io/bitsquare/btc/BitcoinNetwork.java b/gui/src/main/java/io/bitsquare/btc/BitcoinNetwork.java similarity index 100% rename from src/main/java/io/bitsquare/btc/BitcoinNetwork.java rename to gui/src/main/java/io/bitsquare/btc/BitcoinNetwork.java diff --git a/src/main/java/io/bitsquare/btc/BlockChainService.java b/gui/src/main/java/io/bitsquare/btc/BlockChainService.java similarity index 100% rename from src/main/java/io/bitsquare/btc/BlockChainService.java rename to gui/src/main/java/io/bitsquare/btc/BlockChainService.java diff --git a/src/main/java/io/bitsquare/btc/FeePolicy.java b/gui/src/main/java/io/bitsquare/btc/FeePolicy.java similarity index 100% rename from src/main/java/io/bitsquare/btc/FeePolicy.java rename to gui/src/main/java/io/bitsquare/btc/FeePolicy.java diff --git a/src/main/java/io/bitsquare/btc/Restrictions.java b/gui/src/main/java/io/bitsquare/btc/Restrictions.java similarity index 100% rename from src/main/java/io/bitsquare/btc/Restrictions.java rename to gui/src/main/java/io/bitsquare/btc/Restrictions.java diff --git a/src/main/java/io/bitsquare/btc/UserAgent.java b/gui/src/main/java/io/bitsquare/btc/UserAgent.java similarity index 100% rename from src/main/java/io/bitsquare/btc/UserAgent.java rename to gui/src/main/java/io/bitsquare/btc/UserAgent.java diff --git a/src/main/java/io/bitsquare/btc/WalletService.java b/gui/src/main/java/io/bitsquare/btc/WalletService.java similarity index 100% rename from src/main/java/io/bitsquare/btc/WalletService.java rename to gui/src/main/java/io/bitsquare/btc/WalletService.java diff --git a/src/main/java/io/bitsquare/btc/listeners/AddressConfidenceListener.java b/gui/src/main/java/io/bitsquare/btc/listeners/AddressConfidenceListener.java similarity index 100% rename from src/main/java/io/bitsquare/btc/listeners/AddressConfidenceListener.java rename to gui/src/main/java/io/bitsquare/btc/listeners/AddressConfidenceListener.java diff --git a/src/main/java/io/bitsquare/btc/listeners/BalanceListener.java b/gui/src/main/java/io/bitsquare/btc/listeners/BalanceListener.java similarity index 100% rename from src/main/java/io/bitsquare/btc/listeners/BalanceListener.java rename to gui/src/main/java/io/bitsquare/btc/listeners/BalanceListener.java diff --git a/src/main/java/io/bitsquare/btc/listeners/TxConfidenceListener.java b/gui/src/main/java/io/bitsquare/btc/listeners/TxConfidenceListener.java similarity index 100% rename from src/main/java/io/bitsquare/btc/listeners/TxConfidenceListener.java rename to gui/src/main/java/io/bitsquare/btc/listeners/TxConfidenceListener.java diff --git a/src/main/java/io/bitsquare/crypto/CryptoModule.java b/gui/src/main/java/io/bitsquare/crypto/CryptoModule.java similarity index 100% rename from src/main/java/io/bitsquare/crypto/CryptoModule.java rename to gui/src/main/java/io/bitsquare/crypto/CryptoModule.java diff --git a/src/main/java/io/bitsquare/crypto/HashService.java b/gui/src/main/java/io/bitsquare/crypto/HashService.java similarity index 100% rename from src/main/java/io/bitsquare/crypto/HashService.java rename to gui/src/main/java/io/bitsquare/crypto/HashService.java diff --git a/src/main/java/io/bitsquare/crypto/SignatureService.java b/gui/src/main/java/io/bitsquare/crypto/SignatureService.java similarity index 100% rename from src/main/java/io/bitsquare/crypto/SignatureService.java rename to gui/src/main/java/io/bitsquare/crypto/SignatureService.java diff --git a/src/main/java/io/bitsquare/gui/GuiModule.java b/gui/src/main/java/io/bitsquare/gui/GuiModule.java similarity index 100% rename from src/main/java/io/bitsquare/gui/GuiModule.java rename to gui/src/main/java/io/bitsquare/gui/GuiModule.java diff --git a/src/main/java/io/bitsquare/gui/Navigation.java b/gui/src/main/java/io/bitsquare/gui/Navigation.java similarity index 100% rename from src/main/java/io/bitsquare/gui/Navigation.java rename to gui/src/main/java/io/bitsquare/gui/Navigation.java diff --git a/src/main/java/io/bitsquare/gui/OverlayManager.java b/gui/src/main/java/io/bitsquare/gui/OverlayManager.java similarity index 100% rename from src/main/java/io/bitsquare/gui/OverlayManager.java rename to gui/src/main/java/io/bitsquare/gui/OverlayManager.java diff --git a/src/main/java/io/bitsquare/gui/SystemTray.java b/gui/src/main/java/io/bitsquare/gui/SystemTray.java similarity index 100% rename from src/main/java/io/bitsquare/gui/SystemTray.java rename to gui/src/main/java/io/bitsquare/gui/SystemTray.java diff --git a/src/main/java/io/bitsquare/gui/bitsquare.css b/gui/src/main/java/io/bitsquare/gui/bitsquare.css similarity index 100% rename from src/main/java/io/bitsquare/gui/bitsquare.css rename to gui/src/main/java/io/bitsquare/gui/bitsquare.css diff --git a/src/main/java/io/bitsquare/gui/components/AddressTextField.java b/gui/src/main/java/io/bitsquare/gui/components/AddressTextField.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/AddressTextField.java rename to gui/src/main/java/io/bitsquare/gui/components/AddressTextField.java diff --git a/src/main/java/io/bitsquare/gui/components/BalanceTextField.java b/gui/src/main/java/io/bitsquare/gui/components/BalanceTextField.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/BalanceTextField.java rename to gui/src/main/java/io/bitsquare/gui/components/BalanceTextField.java diff --git a/src/main/java/io/bitsquare/gui/components/BalanceWithConfirmationTextField.java b/gui/src/main/java/io/bitsquare/gui/components/BalanceWithConfirmationTextField.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/BalanceWithConfirmationTextField.java rename to gui/src/main/java/io/bitsquare/gui/components/BalanceWithConfirmationTextField.java diff --git a/src/main/java/io/bitsquare/gui/components/InfoDisplay.java b/gui/src/main/java/io/bitsquare/gui/components/InfoDisplay.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/InfoDisplay.java rename to gui/src/main/java/io/bitsquare/gui/components/InfoDisplay.java diff --git a/src/main/java/io/bitsquare/gui/components/InputTextField.java b/gui/src/main/java/io/bitsquare/gui/components/InputTextField.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/InputTextField.java rename to gui/src/main/java/io/bitsquare/gui/components/InputTextField.java diff --git a/src/main/java/io/bitsquare/gui/components/NetworkSyncPane.java b/gui/src/main/java/io/bitsquare/gui/components/NetworkSyncPane.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/NetworkSyncPane.java rename to gui/src/main/java/io/bitsquare/gui/components/NetworkSyncPane.java diff --git a/src/main/java/io/bitsquare/gui/components/Popups.java b/gui/src/main/java/io/bitsquare/gui/components/Popups.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/Popups.java rename to gui/src/main/java/io/bitsquare/gui/components/Popups.java diff --git a/src/main/java/io/bitsquare/gui/components/SystemNotification.java b/gui/src/main/java/io/bitsquare/gui/components/SystemNotification.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/SystemNotification.java rename to gui/src/main/java/io/bitsquare/gui/components/SystemNotification.java diff --git a/src/main/java/io/bitsquare/gui/components/TextFieldWithCopyIcon.java b/gui/src/main/java/io/bitsquare/gui/components/TextFieldWithCopyIcon.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/TextFieldWithCopyIcon.java rename to gui/src/main/java/io/bitsquare/gui/components/TextFieldWithCopyIcon.java diff --git a/src/main/java/io/bitsquare/gui/components/TitledGroupBg.java b/gui/src/main/java/io/bitsquare/gui/components/TitledGroupBg.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/TitledGroupBg.java rename to gui/src/main/java/io/bitsquare/gui/components/TitledGroupBg.java diff --git a/src/main/java/io/bitsquare/gui/components/TitledSeparator.java b/gui/src/main/java/io/bitsquare/gui/components/TitledSeparator.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/TitledSeparator.java rename to gui/src/main/java/io/bitsquare/gui/components/TitledSeparator.java diff --git a/src/main/java/io/bitsquare/gui/components/TxIdTextField.java b/gui/src/main/java/io/bitsquare/gui/components/TxIdTextField.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/TxIdTextField.java rename to gui/src/main/java/io/bitsquare/gui/components/TxIdTextField.java diff --git a/src/main/java/io/bitsquare/gui/components/confidence/ConfidenceProgressIndicator.java b/gui/src/main/java/io/bitsquare/gui/components/confidence/ConfidenceProgressIndicator.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/confidence/ConfidenceProgressIndicator.java rename to gui/src/main/java/io/bitsquare/gui/components/confidence/ConfidenceProgressIndicator.java diff --git a/src/main/java/io/bitsquare/gui/components/confidence/behavior/ConfidenceProgressIndicatorBehavior.java b/gui/src/main/java/io/bitsquare/gui/components/confidence/behavior/ConfidenceProgressIndicatorBehavior.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/confidence/behavior/ConfidenceProgressIndicatorBehavior.java rename to gui/src/main/java/io/bitsquare/gui/components/confidence/behavior/ConfidenceProgressIndicatorBehavior.java diff --git a/src/main/java/io/bitsquare/gui/components/confidence/skin/ConfidenceProgressIndicatorSkin.java b/gui/src/main/java/io/bitsquare/gui/components/confidence/skin/ConfidenceProgressIndicatorSkin.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/confidence/skin/ConfidenceProgressIndicatorSkin.java rename to gui/src/main/java/io/bitsquare/gui/components/confidence/skin/ConfidenceProgressIndicatorSkin.java diff --git a/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBar.java b/gui/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBar.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBar.java rename to gui/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBar.java diff --git a/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java b/gui/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java rename to gui/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java diff --git a/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepItem.java b/gui/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepItem.java similarity index 100% rename from src/main/java/io/bitsquare/gui/components/processbar/ProcessStepItem.java rename to gui/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepItem.java diff --git a/src/main/java/io/bitsquare/gui/images.css b/gui/src/main/java/io/bitsquare/gui/images.css similarity index 100% rename from src/main/java/io/bitsquare/gui/images.css rename to gui/src/main/java/io/bitsquare/gui/images.css diff --git a/src/main/java/io/bitsquare/gui/main/MainView.fxml b/gui/src/main/java/io/bitsquare/gui/main/MainView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/MainView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/MainView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/MainView.java b/gui/src/main/java/io/bitsquare/gui/main/MainView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/MainView.java rename to gui/src/main/java/io/bitsquare/gui/main/MainView.java diff --git a/src/main/java/io/bitsquare/gui/main/MainViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java similarity index 98% rename from src/main/java/io/bitsquare/gui/main/MainViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java index c68f2a3ab7..c822a7cff6 100644 --- a/src/main/java/io/bitsquare/gui/main/MainViewModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java @@ -149,6 +149,8 @@ class MainViewModel implements ViewModel { } public void initBackend() { + Platform.runLater(() -> updateProcess.init()); + setBitcoinNetworkSyncProgress(-1); walletService.getDownloadProgress().subscribe( percentage -> Platform.runLater(() -> { @@ -195,16 +197,16 @@ class MainViewModel implements ViewModel { log.trace("updateProcess completed"); }); - Observable<?> backEnd = Observable.merge(message, wallet, updateProcess); - backEnd.subscribe( + Observable<?> allTasks = Observable.merge(message, wallet, updateProcess); + allTasks.subscribe( next -> { }, error -> log.error(error.toString()), - () -> Platform.runLater(() -> backEndCompleted()) + () -> Platform.runLater(() -> allTasksCompleted()) ); } - private void backEndCompleted() { + private void allTasksCompleted() { log.trace("backend completed"); tradeManager.getPendingTrades().addListener( diff --git a/src/main/java/io/bitsquare/gui/main/account/AccountView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/AccountView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/AccountView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/AccountView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/AccountView.java b/gui/src/main/java/io/bitsquare/gui/main/account/AccountView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/AccountView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/AccountView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/AccountViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/AccountViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/AccountViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/AccountViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.java b/gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java b/gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/profile/ArbitratorProfileView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/profile/ArbitratorProfileView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/arbitrator/profile/ArbitratorProfileView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/profile/ArbitratorProfileView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/profile/ArbitratorProfileView.java b/gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/profile/ArbitratorProfileView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/arbitrator/profile/ArbitratorProfileView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/profile/ArbitratorProfileView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.java b/gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordView.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountDataModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountDataModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountDataModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountView.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountDataModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountDataModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountDataModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountView.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/password/PasswordView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordView.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/password/PasswordView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/password/PasswordViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationDataModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationDataModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationDataModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationView.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsDataModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsDataModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsDataModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsView.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.java b/gui/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.java rename to gui/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.java diff --git a/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.fxml rename to gui/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.java b/gui/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.java rename to gui/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.java diff --git a/src/main/java/io/bitsquare/gui/main/funds/FundsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/funds/FundsView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/funds/FundsView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/funds/FundsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/funds/FundsView.java b/gui/src/main/java/io/bitsquare/gui/main/funds/FundsView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/funds/FundsView.java rename to gui/src/main/java/io/bitsquare/gui/main/funds/FundsView.java diff --git a/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsListItem.java b/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsListItem.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsListItem.java rename to gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsListItem.java diff --git a/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java b/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java rename to gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java diff --git a/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalListItem.java b/gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalListItem.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalListItem.java rename to gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalListItem.java diff --git a/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml b/gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.java b/gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.java rename to gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.java diff --git a/src/main/java/io/bitsquare/gui/main/help/Help.java b/gui/src/main/java/io/bitsquare/gui/main/help/Help.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/help/Help.java rename to gui/src/main/java/io/bitsquare/gui/main/help/Help.java diff --git a/src/main/java/io/bitsquare/gui/main/help/HelpId.java b/gui/src/main/java/io/bitsquare/gui/main/help/HelpId.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/help/HelpId.java rename to gui/src/main/java/io/bitsquare/gui/main/help/HelpId.java diff --git a/src/main/java/io/bitsquare/gui/main/home/HomeView.fxml b/gui/src/main/java/io/bitsquare/gui/main/home/HomeView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/home/HomeView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/home/HomeView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/home/HomeView.java b/gui/src/main/java/io/bitsquare/gui/main/home/HomeView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/home/HomeView.java rename to gui/src/main/java/io/bitsquare/gui/main/home/HomeView.java diff --git a/src/main/java/io/bitsquare/gui/main/msg/MsgView.fxml b/gui/src/main/java/io/bitsquare/gui/main/msg/MsgView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/msg/MsgView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/msg/MsgView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/msg/MsgView.java b/gui/src/main/java/io/bitsquare/gui/main/msg/MsgView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/msg/MsgView.java rename to gui/src/main/java/io/bitsquare/gui/main/msg/MsgView.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/PortfolioView.fxml b/gui/src/main/java/io/bitsquare/gui/main/portfolio/PortfolioView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/PortfolioView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/PortfolioView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/PortfolioView.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/PortfolioView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/PortfolioView.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/PortfolioView.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesDataModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesDataModel.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesDataModel.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesListItem.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesListItem.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesListItem.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesListItem.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesView.fxml b/gui/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesView.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesView.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesView.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/offer/OfferListItem.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/offer/OfferListItem.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/offer/OfferListItem.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/offer/OfferListItem.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersDataModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersDataModel.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersDataModel.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersView.fxml b/gui/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersView.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersView.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersView.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesDataModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesDataModel.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesDataModel.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesListItem.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesListItem.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesListItem.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesListItem.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesView.fxml b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesView.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesView.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesView.java diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/settings/SettingsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/settings/SettingsView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/settings/SettingsView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/settings/SettingsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/settings/SettingsView.java b/gui/src/main/java/io/bitsquare/gui/main/settings/SettingsView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/settings/SettingsView.java rename to gui/src/main/java/io/bitsquare/gui/main/settings/SettingsView.java diff --git a/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesDataModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/settings/application/PreferencesDataModel.java rename to gui/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesDataModel.java diff --git a/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesView.fxml b/gui/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/settings/application/PreferencesView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesView.java b/gui/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/settings/application/PreferencesView.java rename to gui/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesView.java diff --git a/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/settings/application/PreferencesViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/settings/application/PreferencesViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/settings/network/NetworkSettingsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/settings/network/NetworkSettingsView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/settings/network/NetworkSettingsView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/settings/network/NetworkSettingsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/settings/network/NetworkSettingsView.java b/gui/src/main/java/io/bitsquare/gui/main/settings/network/NetworkSettingsView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/settings/network/NetworkSettingsView.java rename to gui/src/main/java/io/bitsquare/gui/main/settings/network/NetworkSettingsView.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/BuyView.fxml b/gui/src/main/java/io/bitsquare/gui/main/trade/BuyView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/BuyView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/trade/BuyView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/trade/BuyView.java b/gui/src/main/java/io/bitsquare/gui/main/trade/BuyView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/BuyView.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/BuyView.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/SellView.fxml b/gui/src/main/java/io/bitsquare/gui/main/trade/SellView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/SellView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/trade/SellView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/trade/SellView.java b/gui/src/main/java/io/bitsquare/gui/main/trade/SellView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/SellView.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/SellView.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/TradeView.java b/gui/src/main/java/io/bitsquare/gui/main/trade/TradeView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/TradeView.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/TradeView.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferDataModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferDataModel.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferDataModel.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.fxml b/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.java b/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBook.java b/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBook.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBook.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBook.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookDataModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookDataModel.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookDataModel.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookListItem.java b/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookListItem.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookListItem.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookListItem.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.fxml b/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.java b/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookViewModel.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferDataModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferDataModel.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferDataModel.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferView.fxml b/gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferView.fxml similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferView.fxml rename to gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferView.java b/gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferView.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferView.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferView.java diff --git a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java similarity index 100% rename from src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java rename to gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java diff --git a/src/main/java/io/bitsquare/gui/util/BSFormatter.java b/gui/src/main/java/io/bitsquare/gui/util/BSFormatter.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/BSFormatter.java rename to gui/src/main/java/io/bitsquare/gui/util/BSFormatter.java diff --git a/src/main/java/io/bitsquare/gui/util/Colors.java b/gui/src/main/java/io/bitsquare/gui/util/Colors.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/Colors.java rename to gui/src/main/java/io/bitsquare/gui/util/Colors.java diff --git a/src/main/java/io/bitsquare/gui/util/ImageUtil.java b/gui/src/main/java/io/bitsquare/gui/util/ImageUtil.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/ImageUtil.java rename to gui/src/main/java/io/bitsquare/gui/util/ImageUtil.java diff --git a/src/main/java/io/bitsquare/gui/util/Profiler.java b/gui/src/main/java/io/bitsquare/gui/util/Profiler.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/Profiler.java rename to gui/src/main/java/io/bitsquare/gui/util/Profiler.java diff --git a/src/main/java/io/bitsquare/gui/util/Transitions.java b/gui/src/main/java/io/bitsquare/gui/util/Transitions.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/Transitions.java rename to gui/src/main/java/io/bitsquare/gui/util/Transitions.java diff --git a/src/main/java/io/bitsquare/gui/util/validation/BankAccountNumberValidator.java b/gui/src/main/java/io/bitsquare/gui/util/validation/BankAccountNumberValidator.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/validation/BankAccountNumberValidator.java rename to gui/src/main/java/io/bitsquare/gui/util/validation/BankAccountNumberValidator.java diff --git a/src/main/java/io/bitsquare/gui/util/validation/BtcAddressValidator.java b/gui/src/main/java/io/bitsquare/gui/util/validation/BtcAddressValidator.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/validation/BtcAddressValidator.java rename to gui/src/main/java/io/bitsquare/gui/util/validation/BtcAddressValidator.java diff --git a/src/main/java/io/bitsquare/gui/util/validation/BtcValidator.java b/gui/src/main/java/io/bitsquare/gui/util/validation/BtcValidator.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/validation/BtcValidator.java rename to gui/src/main/java/io/bitsquare/gui/util/validation/BtcValidator.java diff --git a/src/main/java/io/bitsquare/gui/util/validation/FiatValidator.java b/gui/src/main/java/io/bitsquare/gui/util/validation/FiatValidator.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/validation/FiatValidator.java rename to gui/src/main/java/io/bitsquare/gui/util/validation/FiatValidator.java diff --git a/src/main/java/io/bitsquare/gui/util/validation/InputValidator.java b/gui/src/main/java/io/bitsquare/gui/util/validation/InputValidator.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/validation/InputValidator.java rename to gui/src/main/java/io/bitsquare/gui/util/validation/InputValidator.java diff --git a/src/main/java/io/bitsquare/gui/util/validation/NumberValidator.java b/gui/src/main/java/io/bitsquare/gui/util/validation/NumberValidator.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/validation/NumberValidator.java rename to gui/src/main/java/io/bitsquare/gui/util/validation/NumberValidator.java diff --git a/src/main/java/io/bitsquare/gui/util/validation/OptionalBtcValidator.java b/gui/src/main/java/io/bitsquare/gui/util/validation/OptionalBtcValidator.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/validation/OptionalBtcValidator.java rename to gui/src/main/java/io/bitsquare/gui/util/validation/OptionalBtcValidator.java diff --git a/src/main/java/io/bitsquare/gui/util/validation/OptionalFiatValidator.java b/gui/src/main/java/io/bitsquare/gui/util/validation/OptionalFiatValidator.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/validation/OptionalFiatValidator.java rename to gui/src/main/java/io/bitsquare/gui/util/validation/OptionalFiatValidator.java diff --git a/src/main/java/io/bitsquare/gui/util/validation/PasswordValidator.java b/gui/src/main/java/io/bitsquare/gui/util/validation/PasswordValidator.java similarity index 100% rename from src/main/java/io/bitsquare/gui/util/validation/PasswordValidator.java rename to gui/src/main/java/io/bitsquare/gui/util/validation/PasswordValidator.java diff --git a/src/main/java/io/bitsquare/locale/BSResources.java b/gui/src/main/java/io/bitsquare/locale/BSResources.java similarity index 100% rename from src/main/java/io/bitsquare/locale/BSResources.java rename to gui/src/main/java/io/bitsquare/locale/BSResources.java diff --git a/src/main/java/io/bitsquare/locale/Country.java b/gui/src/main/java/io/bitsquare/locale/Country.java similarity index 100% rename from src/main/java/io/bitsquare/locale/Country.java rename to gui/src/main/java/io/bitsquare/locale/Country.java diff --git a/src/main/java/io/bitsquare/locale/CountryUtil.java b/gui/src/main/java/io/bitsquare/locale/CountryUtil.java similarity index 100% rename from src/main/java/io/bitsquare/locale/CountryUtil.java rename to gui/src/main/java/io/bitsquare/locale/CountryUtil.java diff --git a/src/main/java/io/bitsquare/locale/CurrencyUtil.java b/gui/src/main/java/io/bitsquare/locale/CurrencyUtil.java similarity index 100% rename from src/main/java/io/bitsquare/locale/CurrencyUtil.java rename to gui/src/main/java/io/bitsquare/locale/CurrencyUtil.java diff --git a/src/main/java/io/bitsquare/locale/LanguageUtil.java b/gui/src/main/java/io/bitsquare/locale/LanguageUtil.java similarity index 100% rename from src/main/java/io/bitsquare/locale/LanguageUtil.java rename to gui/src/main/java/io/bitsquare/locale/LanguageUtil.java diff --git a/src/main/java/io/bitsquare/locale/Region.java b/gui/src/main/java/io/bitsquare/locale/Region.java similarity index 100% rename from src/main/java/io/bitsquare/locale/Region.java rename to gui/src/main/java/io/bitsquare/locale/Region.java diff --git a/gui/src/main/java/io/bitsquare/modena.css b/gui/src/main/java/io/bitsquare/modena.css new file mode 100644 index 0000000000..65796ee424 --- /dev/null +++ b/gui/src/main/java/io/bitsquare/modena.css @@ -0,0 +1,3115 @@ +/* + Modena + + This is the second generation theme for JavaFX after Caspian. +*/ + +/* + * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +/******************************************************************************* + * * + * THEMING INSTRUCTIONS * + * * + ******************************************************************************* + +TODO: Explain here how theming works: + + * -fx-text-base-color for text on top of -fx-base, -fx-color, and -fx-body-color + * -fx-text-background-color for text on top of -fx-background + * -fx-text-inner-color for text on top of -fx-control-inner-color + * -fx-selection-bar-text for text on top of -fx-selection-bar + +RESIZING FOR DIFFERENT SCREEN DPI +------------------------------- + +When the screen DPI changes Windows will use a different font size by default. +The default is 12px and can change to 15px or 18px depending on user +preference or screen DPI. On Mac the default is 13px and embedded will depend +on hardware. To make UI controls scale and be the right proportions for each of +these font sizes we base the padding (which controls size of control) on the +font size. This is done using the CSS measurement unit of a "em" where +(1em = font size). The default sizes are based on Windows default of 12px, as +a quick reference here are common px sizes in em units on windows. + +Windows 12px -> em units -> Mac 13px | +---------------------------------------- + 1px -> 0.083333em -> 1.08px ~ 2px + 2px -> 0.166667em -> 2.16px ~ 3px + 3px = 0.25em + 4px = 0.333333em + 5px = 0.416667em + 6px = 0.5em + 7px = 0.583333em + 8px = 0.666667em + 9px = 0.75em + 10px = 0.833333em + 11px = 0.916667em + 12px = 1em + +IMPORTANT: Not all sizes are scaled with em units only padding. All borders and +background insets are still in pixels. Also any padding where it has to match up +is being used to size a border should also be in pixels. + + ******************************************************************************/ + +/******************************************************************************* + * * + * CSS Styles for core infrastructure bits. The .root section provides the * + * overall default colors used by the rest of the sections. * + * * + ******************************************************************************/ + +.root { + /*************************************************************************** + * * + * The main color palette from which the rest of the colors are derived. * + * * + **************************************************************************/ + + /* A light grey that is the base color for objects. Instead of using + * -fx-base directly, the sections in this file will typically use -fx-color. + */ + -fx-base: #ececec; + + /* A very light grey used for the background of windows. See also + * -fx-text-background-color, which should be used as the -fx-text-fill + * value for text painted on top of backgrounds colored with -fx-background. + */ + -fx-background: derive(-fx-base,26.4%); + + /* Used for the inside of text boxes, password boxes, lists, trees, and + * tables. See also -fx-text-inner-color, which should be used as the + * -fx-text-fill value for text painted on top of backgrounds colored + * with -fx-control-inner-background. + */ + -fx-control-inner-background: derive(-fx-base,80%); + /* Version of -fx-control-inner-background for alternative rows */ + -fx-control-inner-background-alt: derive(-fx-control-inner-background,-2%); + + /* One of these colors will be chosen based upon a ladder calculation + * that uses the brightness of a background color. Instead of using these + * colors directly as -fx-text-fill values, the sections in this file should + * use a derived color to match the background in use. See also: + * + * -fx-text-base-color for text on top of -fx-base, -fx-color, and -fx-body-color + * -fx-text-background-color for text on top of -fx-background + * -fx-text-inner-color for text on top of -fx-control-inner-color + * -fx-selection-bar-text for text on top of -fx-selection-bar + */ + -fx-dark-text-color: black; + -fx-mid-text-color: #333; + -fx-light-text-color: white; + + /* A bright blue for highlighting/accenting objects. For example: selected + * text; selected items in menus, lists, trees, and tables; progress bars */ + -fx-accent: #0096C9; + + /* Default buttons color, this is similar to accent but more subtle */ + -fx-default-button: #ABD8ED; + + /* A bright blue for the focus indicator of objects. Typically used as the + * first color in -fx-background-color for the "focused" pseudo-class. Also + * typically used with insets of -1.4 to provide a glowing effect. + */ + -fx-focus-color: #039ED3; + -fx-faint-focus-color: #039ED322; + + /* The color that is used in styling controls. The default value is based + * on -fx-base, but is changed by pseudoclasses to change the base color. + * For example, the "hover" pseudoclass will typically set -fx-color to + * -fx-hover-base (see below) and the "armed" pseudoclass will typically + * set -fx-color to -fx-pressed-base. + */ + -fx-color: -fx-base; + + /* Chart Color Palette */ + CHART_COLOR_1: #f3622d; + CHART_COLOR_2: #fba71b; + CHART_COLOR_3: #57b757; + CHART_COLOR_4: #41a9c9; + CHART_COLOR_5: #4258c9; + CHART_COLOR_6: #9a42c8; + CHART_COLOR_7: #c84164; + CHART_COLOR_8: #888888; + /* Chart Color Palette Semi-Transparent + * These are used by charts that need semi transparent versions of the above colors, such as BubbleChart. They + * are exactly the same colors as above just with alpha + * + * 20% opacity + */ + CHART_COLOR_1_TRANS_20: #f3622d33; + CHART_COLOR_2_TRANS_20: #fba71b33; + CHART_COLOR_3_TRANS_20: #57b75733; + CHART_COLOR_4_TRANS_20: #41a9c933; + CHART_COLOR_5_TRANS_20: #4258c933; + CHART_COLOR_6_TRANS_20: #9a42c833; + CHART_COLOR_7_TRANS_20: #c8416433; + CHART_COLOR_8_TRANS_20: #88888833; + /* 70% opacity */ + CHART_COLOR_1_TRANS_70: #f3622db3; + CHART_COLOR_2_TRANS_70: #fba71bb3; + CHART_COLOR_3_TRANS_70: #57b757b3; + CHART_COLOR_4_TRANS_70: #41a9c9b3; + CHART_COLOR_5_TRANS_70: #4258c9b3; + CHART_COLOR_6_TRANS_70: #9a42c8b3; + CHART_COLOR_7_TRANS_70: #c84164b3; + CHART_COLOR_8_TRANS_70: #888888b3; + + /*************************************************************************** + * * + * Colors that are derived from the main color palette. * + * * + **************************************************************************/ + + /* A little lighter than -fx-base and used as the -fx-color for the + * "hovered" pseudoclass state. + */ + -fx-hover-base: ladder( + -fx-base, + derive(-fx-base,20%) 20%, + derive(-fx-base,30%) 35%, + derive(-fx-base,40%) 50% + ); + + /* A little darker than -fx-base and used as the -fx-color for the + * "armed" pseudoclass state. + * + * TODO: should this be renamed to -fx-armed-base? + */ + -fx-pressed-base: derive(-fx-base,-6%); + + /* The color to use for -fx-text-fill when text is to be painted on top of + * a background filled with the -fx-background color. + */ + -fx-text-background-color: ladder( + -fx-background, + -fx-light-text-color 45%, + -fx-dark-text-color 46%, + -fx-dark-text-color 59%, + -fx-mid-text-color 60% + ); + + /* A little darker than -fx-color and used to draw boxes around objects such + * as progress bars, scroll bars, scroll panes, trees, tables, and lists. + */ + -fx-box-border: ladder( + -fx-color, + black 20%, + derive(-fx-color,-15%) 30% + ); + + /* Darker than -fx-background and used to draw boxes around text boxes and + * password boxes. + */ + -fx-text-box-border: ladder( + -fx-background, + black 10%, + derive(-fx-background, -15%) 30% + ); + + /* Lighter than -fx-background and used to provide a small highlight when + * needed on top of -fx-background. This is never a shadow in Modena but + * keep -fx-shadow-highlight-color name to be compatible with Caspian. + */ + -fx-shadow-highlight-color: ladder( + -fx-background, + rgba(255,255,255,0.07) 0%, + rgba(255,255,255,0.07) 20%, + rgba(255,255,255,0.07) 70%, + rgba(255,255,255,0.7) 90%, + rgba(255,255,255,0.75) 100% + ); + + /* A gradient that goes from a little darker than -fx-color on the top to + * even more darker than -fx-color on the bottom. Typically is the second + * color in the -fx-background-color list as the small thin border around + * a control. It is typically the same size as the control (i.e., insets + * are 0). + */ + -fx-outer-border: derive(-fx-color,-23%); + + /* A gradient that goes from a bit lighter than -fx-color on the top to + * a little darker at the bottom. Typically is the third color in the + * -fx-background-color list as a thin highlight inside the outer border. + * Insets are typically 1. + */ + -fx-inner-border: linear-gradient(to bottom, + ladder( + -fx-color, + derive(-fx-color,30%) 0%, + derive(-fx-color,20%) 40%, + derive(-fx-color,25%) 60%, + derive(-fx-color,55%) 80%, + derive(-fx-color,55%) 90%, + derive(-fx-color,75%) 100% + ), + ladder( + -fx-color, + derive(-fx-color,20%) 0%, + derive(-fx-color,10%) 20%, + derive(-fx-color,5%) 40%, + derive(-fx-color,-2%) 60%, + derive(-fx-color,-5%) 100% + )); + -fx-inner-border-horizontal: linear-gradient(to right, derive(-fx-color,55%), derive(-fx-color,-5%)); + -fx-inner-border-bottomup: linear-gradient(to top, derive(-fx-color,55%), derive(-fx-color,-5%)); + + /* A gradient that goes from a little lighter than -fx-color at the top to + * a little darker than -fx-color at the bottom and is used to fill the + * body of many controls such as buttons. + */ + -fx-body-color: linear-gradient(to bottom, + ladder( + -fx-color, + derive(-fx-color,8%) 75%, + derive(-fx-color,10%) 80% + ), + derive(-fx-color,-8%)); + -fx-body-color-bottomup: linear-gradient(to top, derive(-fx-color,10%) ,derive(-fx-color,-6%)); + -fx-body-color-to-right: linear-gradient(to right, derive(-fx-color,10%) ,derive(-fx-color,-6%)); + + /* The color to use as -fx-text-fill when painting text on top of + * backgrounds filled with -fx-base, -fx-color, and -fx-body-color. + */ + -fx-text-base-color: ladder( + -fx-color, + -fx-light-text-color 45%, + -fx-dark-text-color 46%, + -fx-dark-text-color 59%, + -fx-mid-text-color 60% + ); + + /* The color to use as -fx-text-fill when painting text on top of + * backgrounds filled with -fx-control-inner-background. + */ + -fx-text-inner-color: ladder( + -fx-control-inner-background, + -fx-light-text-color 45%, + -fx-dark-text-color 46%, + -fx-dark-text-color 59%, + -fx-mid-text-color 60% + ); + + /* The color to use for small mark-like objects such as checks on check + * boxes, filled in circles in radio buttons, arrows on scroll bars, etc. + */ + -fx-mark-color: ladder( + -fx-color, + white 30%, + derive(-fx-color,-63%) 31% + ); + + /* The small thin light "shadow" for mark-like objects. Typically used in + * conjunction with -fx-mark-color with an insets of 1 0 -1 0. */ + -fx-mark-highlight-color: ladder( + -fx-color, + derive(-fx-color,80%) 60%, + white 70% + ); + + /* Background for items in list like things such as menus, lists, trees, + * and tables. */ + -fx-selection-bar: -fx-accent; + + /* Background color to use for selection of list cells etc. This is when + * the control doesn't have focus or the row of a previously selected item. */ + -fx-selection-bar-non-focused: lightgrey; + + /* The color to use as -fx-text-fill when painting text on top of + * backgrounds filled with -fx-selection-bar. + * + * TODO: this can be removed + */ + -fx-selection-bar-text: -fx-text-background-color; + + /* These are needed for Popup */ + -fx-background-color: inherit; + -fx-background-radius: inherit; + -fx-background-insets: inherit; + -fx-padding: inherit; + + /* The color to use in ListView/TreeView/TableView to indicate hover. */ + -fx-cell-hover-color: #cce3f4; + + /** Focus line for keyboard focus traversal on cell based controls */ + -fx-cell-focus-inner-border: derive(-fx-selection-bar,30%); + + /* The colors to use in Pagination */ + -fx-page-bullet-border: #acacac; + -fx-page-indicator-hover-border: #accee5; + + /*************************************************************************** + * * + * Set the default background color for the scene * + * * + **************************************************************************/ + + -fx-background-color: -fx-background; +} + +/* Make popups transparent */ +.root.popup { + -fx-background-color: transparent; +} + +/******************************************************************************* + * * + * Common Styles * + * * + * These are styles that give a standard look to a whole range of controls * + * * + ******************************************************************************/ + +/* ==== TEXT NODES IN CONTROLS ========================================== */ + +.text { + /* This adjusts text alignment within the bounds of text nodes so that + the text is always vertically centered within the bounds. Based on + the cap height of the text. */ + -fx-bounds-type: logical_vertical_center; + /* Enable LCD text rendering */ + -fx-font-smoothing-type: lcd; +} + +/* ==== BUTTON LIKE THINGS ============================================== */ + +.button, +.toggle-button, +.radio-button > .radio, +.check-box > .box, +.menu-button, +.choice-box, +.color-picker.split-button > .color-picker-label, +.combo-box-base, +.combo-box-base:editable > .arrow-button { + -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color; + -fx-background-insets: 0 0 -1 0, 0, 1, 2; + -fx-background-radius: 3px, 3px, 2px, 1px; + -fx-padding: 0.333333em 0.666667em 0.333333em 0.666667em; /* 4 8 4 8 */ + -fx-text-fill: -fx-text-base-color; + -fx-alignment: CENTER; + -fx-content-display: LEFT; +} +.menu-button > .label { + -fx-alignment: CENTER_LEFT; +} +.button:hover, +.toggle-button:hover, +.radio-button:hover > .radio, +.check-box:hover > .box, +.menu-button:hover, +.split-menu-button > .label:hover, +.split-menu-button > .arrow-button:hover, +.slider .thumb:hover, +.scroll-bar > .thumb:hover, +.scroll-bar > .increment-button:hover, +.scroll-bar > .decrement-button:hover, +.choice-box:hover, +.color-picker.split-button > .arrow-button:hover, +.color-picker.split-button > .color-picker-label:hover, +.combo-box-base:hover, +.combo-box-base:editable > .arrow-button:hover, +.tab-pane > .tab-header-area > .control-buttons-tab > .container > .tab-down-button:hover { + -fx-color: -fx-hover-base; +} +.button:armed, +.toggle-button:armed, +.radio-button:armed > .radio, +.check-box:armed .box, +.menu-button:armed, +.split-menu-button:armed > .label, +.split-menu-button > .arrow-button:pressed, +.split-menu-button:showing > .arrow-button, +.slider .thumb:pressed, +.scroll-bar > .thumb:pressed, +.scroll-bar > .increment-button:pressed, +.scroll-bar > .decrement-button:pressed, +.choice-box:showing, +.combo-box-base:showing, +.combo-box-base:editable:showing > .arrow-button, +.tab-pane > .tab-header-area > .control-buttons-tab > .container > .tab-down-button:pressed { + -fx-color: -fx-pressed-base; +} +.button:focused, +.toggle-button:focused, +.radio-button:focused > .radio, +.check-box:focused > .box, +.menu-button:focused, +.choice-box:focused, +.color-picker.split-button:focused > .color-picker-label, +.combo-box-base:focused, +.slider:focused .thumb { + -fx-background-color: -fx-focus-color, -fx-inner-border, -fx-body-color, -fx-faint-focus-color, -fx-body-color; + -fx-background-insets: -0.2, 1, 2, -1.4, 2.6; + -fx-background-radius: 3, 2, 1, 4, 1; +} + +/* ==== DISABLED THINGS ================================================= */ + +.label:disabled, +.button:disabled, +.toggle-button:disabled, +.radio-button:disabled, +.check-box:disabled, +.hyperlink:disabled, +.menu-button:disabled, +.split-menu-button:disabled, +.slider:disabled, +.scroll-bar:disabled, +.scroll-pane:disabled, +.progress-bar:disabled, +.progress-indicator:disabled, +.text-input:disabled, +.choice-box:disabled, +.combo-box-base:disabled, +.date-cell:disabled > *, /* This is set on children so border is not affected. */ +.list-view:disabled, +.tree-view:disabled, +.table-view:disabled, +.tree-table-view:disabled, +.tab-pane:disabled, +.titled-pane:disabled > .title, +.accordion:disabled > .titled-pane > .title, +.tab-pane > .tab-header-area > .headers-region > .tab:disabled, +.menu:disabled, +.menu-item:disabled > .label, +.menu-item:disabled, +.list-cell:filled:selected:focused:disabled, +.list-cell:filled:selected:disabled, +.tree-cell:filled:selected:focused:disabled, +.tree-cell:filled:selected:disabled, +.tree-cell > .tree-disclosure-node:disabled, +.tree-table-row-cell > .tree-disclosure-node:disabled, +.table-row-cell:selected:disabled, +.tree-table-row-cell:selected:disabled, +.table-cell:selected:disabled, +.tree-table-cell:selected:disabled { + -fx-opacity: 0.4; +} + +/* ==== MNEMONIC THINGS ================================================= */ + +.mnemonic-underline { + -fx-stroke: transparent; +} + +.titled-pane:show-mnemonics > .mnemonic-underline, +.label:show-mnemonics > .mnemonic-underline, +.context-menu:show-mnemonics > .mnemonic-underline, +.menu:show-mnemonics > .mnemonic-underline, +.menu-bar:show-mnemonics > .mnemonic-underline, +.menu-item:show-mnemonics > .mnemonic-underline, +.button:show-mnemonics > .mnemonic-underline, +.toggle-button:show-mnemonics > .mnemonic-underline, +.radio-button:show-mnemonics > .mnemonic-underline, +.check-box:show-mnemonics > .mnemonic-underline, +.hyperlink:show-mnemonics > .mnemonic-underline, +.split-menu-button:show-mnemonics > .mnemonic-underline, +.menu-button:show-mnemonics > .mnemonic-underline { + -fx-stroke: -fx-text-base-color; +} + +/* ==== MARKS =========================================================== */ + +.radio-button:selected > .radio > .dot, +.check-box:selected > .box > .mark, +.check-box:indeterminate > .box > .mark { + -fx-background-color: -fx-mark-highlight-color, -fx-mark-color; + -fx-background-insets: 1 0 -1 0, 0; +} + +/* ==== ARROWS ========================================================== */ + +.menu-button > .arrow-button > .arrow, +.split-menu-button > .arrow-button > .arrow { + -fx-background-color: -fx-mark-highlight-color, -fx-mark-color; + -fx-background-insets: 0 0 -1 0, 0; + -fx-padding: 0.25em; + -fx-shape: "M 0 -3.5 v 7 l 4 -3.5 z"; +} +.choice-box > .open-button > .arrow, +.menu-button:openvertically > .arrow-button > .arrow, +.split-menu-button:openvertically > .arrow-button > .arrow, +.combo-box-base > .arrow-button > .arrow, +.web-view .form-select-button .arrow, +.tab-pane > .tab-header-area > .control-buttons-tab > .container > .tab-down-button > .arrow { + -fx-background-color: -fx-mark-highlight-color, -fx-mark-color; + -fx-background-insets: 0 0 -1 0, 0; + -fx-padding: 0.166667em 0.333333em 0.166667em 0.333333em; /* 2 4 2 4 */ + -fx-shape: "M 0 0 h 7 l -3.5 4 z"; +} + +/* ==== CHOICE BOX LIKE THINGS ========================================== */ + +.choice-box, +.menu-button, +.combo-box-base { + -fx-padding: 0; +} +.choice-box > .label, +.menu-button > .label, +.color-picker > .label { + -fx-padding: 0.333333em 0.666667em 0.333333em 0.666667em; /* 4 8 4 8 */ + -fx-text-fill: -fx-text-base-color; +} +.choice-box > .open-button, +.menu-button > .arrow-button { + -fx-padding: 0.5em 0.667em 0.5em 0.0em; /* 6 8 6 0 */ +} + +/* ==== BOX LIKE THINGS ================================================= */ + +.scroll-pane, +.split-pane, +.list-view, +.tree-view, +.table-view, +.tree-table-view, +.html-editor { + -fx-background-color: -fx-box-border, -fx-control-inner-background; + -fx-background-insets: 0, 1; + -fx-padding: 1; +} +.scroll-pane:focused, +.split-pane:focused, +.list-view:focused, +.tree-view:focused, +.table-view:focused, +.tree-table-view:focused, +.html-editor:focused { + -fx-background-color: -fx-faint-focus-color, -fx-focus-color, -fx-control-inner-background; + -fx-background-insets: -1.4, -0.3, 1; + -fx-background-radius: 2, 0, 0; +} +/* ones with grey -fx-background not lighter -fx-control-inner-background */ +.scroll-pane, +.split-pane { + -fx-background-color: -fx-box-border, -fx-background; +} +.scroll-pane:focused, +.split-pane:focused { + -fx-background-color: -fx-faint-focus-color, -fx-focus-color, -fx-background; +} + +/******************************************************************************* + * * + * Label * + * * + ******************************************************************************/ + +.label { + -fx-text-fill: -fx-text-background-color; +} + +/******************************************************************************* + * * + * Button & ToggleButton * + * * + ******************************************************************************/ + +/* ==== DEFAULT ========================================================= */ + +.button:default { + -fx-base: -fx-default-button; +} + +/* ==== WEB BUTTONS ===================================================== */ + +.web-view .form-select-button { + -fx-background-radius: 2, 2, 1, 0; + -fx-background-insets: 2 2 1 2, 2, 3, 4; +} + +/* ==== PILL BUTTONS ==================================================== */ + +.button.left-pill, +.toggle-button.left-pill { + -fx-background-radius: 3 0 0 3, 3 0 0 3, 2 0 0 2, 1 0 0 1; + -fx-background-insets: 0 0 -1 0, 0, 1, 2; + -fx-padding: 0.333333em 0.666667em 0.333333em 0.75em; /* 4 8 4 9 */ +} +.button.center-pill, +.toggle-button.center-pill { + -fx-background-radius: 0; + -fx-background-insets: 0 0 -1 0, 0 0 0 0, 1 1 1 0, 2 2 2 1 ; +} +.button.right-pill, +.toggle-button.right-pill { + -fx-background-radius: 0 3 3 0, 0 3 3 0, 0 2 2 0, 0 1 1 0; + -fx-background-insets: 0 0 -1 0, 0, 1 1 1 0, 2 2 2 1 ; +} +.button.left-pill:focused, +.toggle-button.left-pill:focused { + -fx-background-insets: -0.2 0 -0.2 -0.2, 1, 2, -1.4 0 -1.4 -1.4, 2.6; + -fx-background-radius: 3 0 0 3, 2 0 0 2, 1 0 0 1, 4 0 0 4, 1 0 0 1; +} +.button.center-pill:focused, +.toggle-button.center-pill:focused { + -fx-background-insets: -0.2 0 -0.2 -1, 1 1 1 0, 2 2 2 1, -1.4 0 -1.4 -1, 2.6 2.6 2.6 1.6; + -fx-background-radius: 0, 0, 0, 0, 0; +} +.button.right-pill:focused, +.toggle-button.right-pill:focused { + -fx-background-insets: -0.2 -0.2 -0.2 -1, 1 1 1 0, 2 2 2 1, -1.4 -1.4 -1.4 -1, 2.6 2.6 2.6 1.6; + -fx-background-radius: 0 3 3 0, 0 2 2 0, 0 1 1 0, 0 4 4 0, 0 1 1 0; +} +.toggle-button:selected.left-pill:focused { + -fx-background-insets: -0.2 0 -0.2 -0.2, 1, -1.4 0 -1.4 -1.4, 2.6; + -fx-background-radius: 3 0 0 3, 2 0 0 2, 4 0 0 4, 0; +} +.toggle-button:selected.center-pill:focused { + -fx-background-insets: -0.2 0 -0.2 -1, 1 1 1 0, -1.4 0 -1.4 -1, 2.6 2.6 2.6 1.6; + -fx-background-radius: 0, 0, 0, 0; +} +.toggle-button:selected.right-pill:focused { + -fx-background-insets: -0.2 -0.2 -0.2 -1, 1 1 1 0, -1.4 -1.4 -1.4 -1, 2.6 2.6 2.6 1.6; + -fx-background-radius: 0 3 3 0, 0 2 2 0, 0 4 4 0, 0; +} + +/* ==== SELECTED TOGGLE ================================================= */ + +.toggle-button:selected { + -fx-background-color: + -fx-shadow-highlight-color, + linear-gradient(to bottom, derive(-fx-outer-border, -20%), -fx-outer-border), + linear-gradient(to bottom, + derive(-fx-color, -22%) 0%, + derive(-fx-color, -13%) 20%, + derive(-fx-color, -11%) 50%); + -fx-background-insets: 0 0 -1 0, 0, 1; +} +.toggle-button:selected:focused { + -fx-background-color: + -fx-focus-color, + linear-gradient(to bottom, + derive(-fx-color, -22%) 0%, + derive(-fx-color, -13%) 20%, + derive(-fx-color, -11%) 50%), + -fx-faint-focus-color, + linear-gradient(to bottom, + derive(-fx-color, -22%) 0%, + derive(-fx-color, -13%) 20%, + derive(-fx-color, -11%) 50%); + -fx-background-insets: -0.2, 1, -1.4, 2.6; + -fx-background-radius: 3, 2, 4, 0; +} + +/******************************************************************************* + * * + * RadioButton * + * * + ******************************************************************************/ + +.radio-button { + -fx-label-padding: 0.0em 0.0em 0.0em 0.416667em; /* 0 0 0 5 */ + -fx-text-fill: -fx-text-background-color; +} +.radio-button > .radio, +.radio-button:focused > .radio { + -fx-background-radius: 1.0em; /* large value to make sure this remains circular */ + -fx-padding: 0.333333em; /* 4 -- padding from outside edge to the inner black dot */ +} +.radio-button > .radio > .dot { + -fx-background-color: transparent; + -fx-background-radius: 1.0em; /* large value to make sure this remains circular */ + -fx-padding: 0.333333em; /* 4 -- radius of the inner black dot when selected */ +} + +/******************************************************************************* + * * + * CheckBox * + * * + ******************************************************************************/ + +.check-box { + -fx-label-padding: 0.0em 0.0em 0.0em 0.416667em; /* 0 0 0 5 */ + -fx-text-fill: -fx-text-background-color; +} +.check-box > .box { + -fx-background-radius: 3, 2, 1; + -fx-padding: 0.166667em 0.166667em 0.25em 0.25em; /* 2 2 3 3 */ +} +.check-box > .box > .mark { + -fx-background-color: null; + -fx-padding: 0.416667em 0.416667em 0.5em 0.5em; /* 5 5 6 6 */ + -fx-shape: "M-0.25,6.083c0.843-0.758,4.583,4.833,5.75,4.833S14.5-1.5,15.917-0.917c1.292,0.532-8.75,17.083-10.5,17.083C3,16.167-1.083,6.833-0.25,6.083z"; +} +.check-box:indeterminate > .box { + -fx-padding: 0; +} +.check-box:indeterminate > .box > .mark { + -fx-shape: "M0,0H10V2H0Z"; + -fx-scale-shape: false; + -fx-padding: 0.666667em; /* 16x16 = 8+8 */ +} + +/******************************************************************************* + * * + * Hyperlink * + * * + ******************************************************************************/ + +.hyperlink { + -fx-padding: 0.166667em 0.25em 0.166667em 0.25em; /* 2 3 2 3 */ + -fx-cursor: hand; + -fx-content-display: LEFT; + -fx-text-fill: -fx-text-background-color; + -fx-border-color: transparent; + -fx-border-width: 1px; +} +.hyperlink, +.hyperlink:hover, +.hyperlink:hover:visited { + -fx-text-fill: -fx-accent; +} +.hyperlink:armed, +.hyperlink:visited, +.hyperlink:hover:armed { + -fx-text-fill: -fx-text-background-color; +} +.hyperlink:hover, +.hyperlink:visited, +.hyperlink:hover:visited { + -fx-underline: true; +} +.hyperlink:visited:armed { + -fx-underline: false; +} +.hyperlink:focused { + -fx-border-color: -fx-focus-color; + -fx-border-style: segments(0.166667em, 0.166667em); + -fx-border-width: 1px; +} +.hyperlink:show-mnemonics > .mnemonic-underline { + -fx-stroke: -fx-text-fill; +} + +/******************************************************************************* + * * + * SplitMenuButton * + * * + ******************************************************************************/ + +.split-menu-button { + -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border; + -fx-background-insets: 0 0 -1 0, 0; + -fx-background-radius: 3, 3; + -fx-padding: 0; +} +.split-menu-button > .label { + -fx-text-fill: -fx-text-base-color; + -fx-background-color: -fx-inner-border, -fx-body-color; + -fx-background-insets: 1 0 1 1, 2 1 2 2; + -fx-background-radius: 2 0 0 2, 1 0 0 1; + -fx-padding: 0.333333em 0.667em 0.333333em 0.667em; /* 4 8 4 8 */ +} +.split-menu-button > .arrow-button { + -fx-background-color: -fx-inner-border, -fx-body-color; + -fx-background-insets: 1, 2; + -fx-background-radius: 0 2 2 0, 0 1 1 0; + -fx-padding: 0.5em 0.667em 0.5em 0.667em; /* 6 8 6 8 */ +} +.split-menu-button:focused { + -fx-background-color: -fx-focus-color; + -fx-background-insets: -0.2; + -fx-background-radius: 3; +} +.split-menu-button:focused > .label { + -fx-background-color: -fx-inner-border, -fx-body-color, -fx-faint-focus-color, -fx-body-color; + -fx-background-insets: 1 0 1 1, 2 1 2 2, -1.4 0 -1.4 -1.4, 2.6 1.6 2.6 2.6; + -fx-background-radius: 2 0 0 2, 1 0 0 1, 4 0 0 4, 0; +} +.split-menu-button:focused > .arrow-button { + -fx-background-color: -fx-inner-border, -fx-body-color, -fx-faint-focus-color, -fx-body-color; + -fx-background-insets: 1, 2, -1.4, 2.6; + -fx-background-radius: 0 2 2 0, 0 1 1 0, 0 4 4 0, 0; +} + +/******************************************************************************* + * * + * ToolBar * + * * + ******************************************************************************/ + +.tool-bar:vertical { /* left */ + -fx-background-color: + -fx-outer-border, + linear-gradient(to right, derive(-fx-base,0%) 0%, derive(-fx-base,10%) 50%, derive(-fx-base,0%) 100%); + -fx-background-insets: 0, 0 0 0 1; + -fx-padding: 0.5em 0.416667em 0.5em 0.416667em; /* 6 5 6 5 */ + -fx-spacing: 0.333em; /* 4 */ + -fx-alignment: TOP_LEFT; +} +.tool-bar { /* top */ + TOP-COLOR: ladder( + -fx-base, + derive(-fx-base,0%) 0%, + derive(-fx-base,46%) 100% + ); + -fx-background-color: + linear-gradient(to bottom, derive(TOP-COLOR,25%) 0%, -fx-outer-border 90%), + linear-gradient(to bottom, TOP-COLOR 2%, derive(-fx-base,-2.1%) 95%); + -fx-background-insets: 0 0 0 0, 1 0 1 0; + -fx-padding: 0.416667em 0.5em 0.416667em 0.5em; /* 5 6 5 6 */ + -fx-spacing: 0.333em; /* 4 */ + -fx-alignment: CENTER_LEFT; +} +.tool-bar:vertical.right { + -fx-background-insets: 0, 0 1 0 0; +} +.tool-bar.bottom { + -fx-background-color: + -fx-outer-border, + derive(TOP-COLOR,25%), + linear-gradient(to bottom, TOP-COLOR 2%, derive(-fx-base,-2.1%) 95%); + -fx-background-insets: 0, 1 0 0 0, 2 0 0 0; +} +.tool-bar > .container > .separator { + -fx-orientation: vertical; +} +.tool-bar:vertical > .container > .separator { + -fx-orientation: horizontal; +} +.tool-bar-overflow-button { + -fx-padding: 0 0.75em 0 0 ; +} +.tool-bar:vertical > .tool-bar-overflow-button { + -fx-padding: 0 0 0.75em 0 ; +} +.tool-bar-overflow-button > .arrow { + -fx-background-color: -fx-mark-highlight-color, -fx-mark-color; + -fx-background-insets: 1 0 -1 0, 0; + -fx-padding: 0.666667em 0.916667em 0em 0em; /* 8 11 0 0 */ + -fx-shape: "M337.273,297.622l-0.016,1.069l2.724,2.639l-2.723,2.628l0.015,1.048h0.881l3.81-3.685l-3.788-3.699H337.273z M343.783,297.622h-0.902l-0.015,1.069l2.724,2.639l-2.724,2.628l0.015,1.048h0.882l3.809-3.685L343.783,297.622z" ; +} + +.tool-bar-overflow-button:focused > .arrow { + -fx-background-color: -fx-mark-highlight-color, derive(-fx-accent, -15%); + -fx-background-insets: 1 0 -1 0, 0; +} + +.tool-bar-overflow-button:hover > .arrow { + -fx-background-color: -fx-mark-highlight-color, derive(-fx-hover-base, -35%); + -fx-background-insets: 1 0 -1 0, 0; +} + +/******************************************************************************* + * * + * Slider * + * * + ******************************************************************************/ + +.slider .thumb { + -fx-background-color: + linear-gradient(to bottom, derive(-fx-text-box-border, -20%), derive(-fx-text-box-border, -30%)), + -fx-inner-border, + -fx-body-color; + -fx-background-insets: 0, 1, 2; + -fx-background-radius: 1.0em; /* makes sure this remains circular */ + -fx-padding: 0.583333em; /* 7 */ + -fx-effect: dropshadow(two-pass-box , rgba(0, 0, 0, 0.1), 5, 0.0 , 0, 2); +} +.slider:focused .thumb { + -fx-background-radius: 1.0em; /* makes sure this remains circular */ +} +.slider .track { + -fx-background-color: + -fx-shadow-highlight-color, + linear-gradient(to bottom, derive(-fx-text-box-border, -10%), -fx-text-box-border), + linear-gradient(to bottom, + derive(-fx-control-inner-background, -9%), + derive(-fx-control-inner-background, 0%), + derive(-fx-control-inner-background, -5%), + derive(-fx-control-inner-background, -12%) + ); + -fx-background-insets: 0 0 -1 0, 0, 1; + -fx-background-radius: 0.25em, 0.25em, 0.166667em; /* 3 3 2 */ + -fx-padding: 0.25em; /* 3 */ +} +.slider:vertical .track { + -fx-background-color: + -fx-shadow-highlight-color, + -fx-text-box-border, + linear-gradient(to right, + derive(-fx-control-inner-background, -9%), + -fx-control-inner-background, + derive(-fx-control-inner-background, -9%) + ); +} +.slider .axis { + -fx-tick-label-fill: derive(-fx-text-background-color, 30%); + -fx-tick-length: 5px; + -fx-minor-tick-length: 3px; + -fx-border-color: null; +} + +/******************************************************************************* + * * + * ScrollBar * + * * + ******************************************************************************/ + +.scroll-bar:horizontal { + -fx-background-color: derive(-fx-box-border,30%), linear-gradient(to bottom, derive(-fx-base,-3%), derive(-fx-base,5%) 50%, derive(-fx-base,-3%)); + -fx-background-insets: 0, 1 0 1 0; +} +.scroll-bar:vertical { + -fx-background-color: derive(-fx-box-border,30%), linear-gradient(to right, derive(-fx-base,-3%), derive(-fx-base,5%) 50%, derive(-fx-base,-3%)); + -fx-background-insets: 0, 0 1 0 1; +} +.scroll-bar:focused { + -fx-background-color: + -fx-focus-color, + linear-gradient(to bottom, derive(-fx-base,-3%), derive(-fx-base,5%) 50%, derive(-fx-base,-3%)), + -fx-faint-focus-color, + linear-gradient(to bottom, derive(-fx-base,-3%), derive(-fx-base,5%) 50%, derive(-fx-base,-3%)); + -fx-background-insets: -0.2, 1, -1.4, 2.6; +} +.scroll-bar:vertical:focused { + -fx-background-color: + -fx-focus-color, + linear-gradient(to right, derive(-fx-base,-3%), derive(-fx-base,5%) 50%, derive(-fx-base,-3%)), + -fx-faint-focus-color, + linear-gradient(to right, derive(-fx-base,-3%), derive(-fx-base,5%) 50%, derive(-fx-base,-3%)); +} +.scroll-bar > .thumb { + -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color; + /*-fx-background-insets: 1, 2, 3;*/ + -fx-background-insets: 2, 3, 4; + /*-fx-background-radius: 0.416667em, 0.333333em, 0.25em; *//* 5, 4,3 */ + -fx-background-radius: 3, 2, 1; +} +.scroll-bar:vertical > .thumb { + -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color-to-right; +} +.scroll-bar > .increment-button, +.scroll-bar > .decrement-button { + -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color; + -fx-color: transparent; + -fx-padding: 0.25em; /* 3px */ +} +.scroll-bar:horizontal > .increment-button, +.scroll-bar:horizontal > .decrement-button { + -fx-background-insets: 2 1 2 1, 3 2 3 2, 4 3 4 3; +} +.scroll-bar:vertical > .increment-button, +.scroll-bar:vertical > .decrement-button { + -fx-background-insets: 1 2 1 2, 2 3 2 3, 3 4 3 4; +} +.scroll-bar > .increment-button > .increment-arrow, +.scroll-bar > .decrement-button > .decrement-arrow { + -fx-background-color: -fx-mark-highlight-color,derive(-fx-base,-45%); +} +.scroll-bar > .increment-button:hover > .increment-arrow, +.scroll-bar > .decrement-button:hover > .decrement-arrow { + -fx-background-color: -fx-mark-highlight-color,derive(-fx-base,-50%); +} +.scroll-bar > .increment-button:pressed > .increment-arrow, +.scroll-bar > .decrement-button:pressed > .decrement-arrow { + -fx-background-color: -fx-mark-highlight-color,derive(-fx-base,-55%); +} +.scroll-bar:horizontal > .decrement-button > .decrement-arrow { + -fx-padding: 0.333em 0.167em 0.333em 0.167em; /* 4 2 4 2 */ + -fx-shape: "M5.997,5.072L5.995,6.501l-2.998-4l2.998-4l0.002,1.43l-1.976,2.57L5.997,5.072z"; + -fx-effect: dropshadow(two-pass-box , -fx-shadow-highlight-color, 1, 0.0 , 0, 1.4); + /*-fx-background-insets: 2 0 -2 0, 0;*/ +} +.scroll-bar:horizontal > .increment-button > .increment-arrow { + -fx-padding: 0.333em 0.167em 0.333em 0.167em; /* 4 2 4 2 */ + -fx-shape: "M2.998-0.07L3-1.499l2.998,4L3,6.501l-0.002-1.43l1.976-2.57L2.998-0.07z"; + -fx-effect: dropshadow(two-pass-box , -fx-shadow-highlight-color, 1, 0.0 , 0, 1.4); + /*-fx-background-insets: 2 0 -2 0, 0;*/ +} +.scroll-bar:vertical > .decrement-button > .decrement-arrow { + -fx-padding: 0.167em 0.333em 0.167em 0.333em; /* 2 4 2 4 */ + -fx-shape: "M1.929,4L0.5,3.998L4.5,1l4,2.998L7.07,4L4.5,2.024L1.929,4z"; + -fx-effect: dropshadow(two-pass-box , -fx-shadow-highlight-color, 1, 0.0 , 0, 1.4); + /*-fx-background-insets: 2 0 -2 0, 0;*/ +} +.scroll-bar:vertical > .increment-button > .increment-arrow { + -fx-padding: 0.167em 0.333em 0.167em 0.333em; /* 2 4 2 4 */ + -fx-shape: "M7.071,1L8.5,1.002L4.5,4l-4-2.998L1.93,1L4.5,2.976L7.071,1z"; + -fx-effect: dropshadow(two-pass-box , -fx-shadow-highlight-color, 1, 0.0 , 0, 1.4); + /*-fx-background-insets: 2 0 -2 0, 0;*/ +} + +/******************************************************************************* + * * + * ScrollPane * + * * + ******************************************************************************/ +.scroll-pane > .viewport { + -fx-background-color: -fx-background; +} +.scroll-pane > .scroll-bar:horizontal { + -fx-background-insets: 0 1 1 1, 1; + -fx-padding: 0 1 0 1; +} +.scroll-pane > .scroll-bar:horizontal > .increment-button, +.scroll-pane > .scroll-bar:horizontal > .decrement-button { + -fx-padding: 0.166667em 0.25em 0.25em 0.25em; /* 2 3 3 3 */ +} +.scroll-pane > .scroll-bar:vertical > .increment-button, +.scroll-pane > .scroll-bar:vertical > .decrement-button { + -fx-padding: 0.25em 0.25em 0.25em 0.166667em; /* 3 3 3 2 */ +} +.scroll-pane > .scroll-bar:vertical { + -fx-background-insets: 1 1 1 0, 1; + -fx-padding: 1 0 1 0; +} +.scroll-pane > .corner { + -fx-background-color: derive(-fx-base,-1%); + -fx-background-insets: 0 1 1 0; +} +/* new styleclass for edge to edge scrollpanes that don't want to draw a border */ +.scroll-pane.edge-to-edge, +.tab-pane > * > .scroll-pane { + -fx-background-color: -fx-background; + -fx-background-insets: 0; + -fx-padding: 0; +} +.scroll-pane.edge-to-edge > .scroll-bar, +.tab-pane > * > .scroll-pane > .scroll-bar, +.titled-pane > * > * > .scroll-pane > .scroll-bar { + -fx-background-insets: 0; + -fx-padding: 0; +} +.scroll-pane.edge-to-edge > .scroll-bar > .increment-button, +.scroll-pane.edge-to-edge > .scroll-bar > .decrement-button, +.tab-pane > * > .scroll-pane > .scroll-bar > .increment-button, +.tab-pane > * > .scroll-pane > .scroll-bar > .decrement-button, +.titled-pane > * > * > .scroll-pane > .scroll-bar > .increment-button, +.titled-pane > * > * > .scroll-pane > .scroll-bar > .decrement-button { + -fx-padding: 0.25em; /* 3px */ +} + +/******************************************************************************* + * * + * Separator * + * * + ******************************************************************************/ + +.separator:horizontal .line { + -fx-border-color: -fx-text-box-border transparent transparent transparent, + -fx-shadow-highlight-color transparent transparent transparent; + -fx-border-insets: 0, 1 0 0 0; +} +.separator:vertical .line { + -fx-border-color: transparent transparent transparent -fx-shadow-highlight-color, + transparent transparent transparent -fx-text-box-border; + -fx-border-width: 3, 1; + -fx-border-insets: 0, 0 0 0 1; +} + +/******************************************************************************* + * * + * ProgressBar * + * * + ******************************************************************************/ + +.progress-bar { + -fx-indeterminate-bar-length: 60; + -fx-indeterminate-bar-escape: true; + -fx-indeterminate-bar-flip: true; + -fx-indeterminate-bar-animation-time: 2; +} +.progress-bar > .bar { + -fx-background-color: linear-gradient(to bottom, derive(-fx-accent, -7%), derive(-fx-accent, 0%), derive(-fx-accent, -3%), derive(-fx-accent, -9%) ); + -fx-background-insets: 3 3 4 3; + /*-fx-background-radius: 0.583em; *//* 7 */ + -fx-background-radius: 2; + -fx-padding: 0.75em; +} +.progress-bar:indeterminate > .bar { + -fx-background-color: linear-gradient(to left, transparent, -fx-accent); +} +.progress-bar > .track { + -fx-background-color: + -fx-shadow-highlight-color, + linear-gradient(to bottom, derive(-fx-text-box-border, -10%), -fx-text-box-border), + linear-gradient(to bottom, + derive(-fx-control-inner-background, -7%), + derive(-fx-control-inner-background, 0%), + derive(-fx-control-inner-background, -3%), + derive(-fx-control-inner-background, -9%) + ); + -fx-background-insets: 0, 0 0 1 0, 1 1 2 1; + -fx-background-radius: 4, 3, 2; /* 10, 9, 8 */ +} + +/******************************************************************************* + * * + * ProgressIndicator * + * * + ******************************************************************************/ + +.progress-indicator { + -fx-indeterminate-segment-count: 12; + -fx-spin-enabled: true; +} +.progress-indicator > .determinate-indicator > .indicator { + -fx-background-color: -fx-box-border, + radial-gradient(center 50% 50%, radius 50%, -fx-control-inner-background 70%, derive(-fx-control-inner-background, -9%) 100%), + -fx-control-inner-background; + -fx-background-insets: 0, 1, 5 2 1 2; + -fx-padding: 0.166667em; /* 2px */ +} +.progress-indicator > .determinate-indicator > .progress { + -fx-background-color: -fx-accent; + -fx-padding: 0.083333em; /* 1px */ +} +.progress-indicator > .determinate-indicator > .tick { + -fx-background-color: white; + -fx-background-insets: 0; + -fx-padding: 0.666667em; /* 8 */ + -fx-shape: "M-0.25,6.083c0.843-0.758,4.583,4.833,5.75,4.833S14.5-1.5,15.917-0.917c1.292,0.532-8.75,17.083-10.5,17.083C3,16.167-1.083,6.833-0.25,6.083z"; +} +.progress-indicator > .percentage { + -fx-font-size: 0.916667em; /* 11pt - 1 less than the default font */ + -fx-fill: -fx-text-background-color; +} +.progress-indicator:indeterminate .segment { + -fx-background-color: -fx-accent; +} +.progress-indicator:indeterminate .segment0 { + -fx-shape:"M41.98 14.74 a3.5,3.5 0 1,1 0,1 Z"; +} +.progress-indicator:indeterminate .segment1 { + -fx-shape:"M33.75 6.51 a3.5,3.5 0 1,1 0,1 Z"; +} +.progress-indicator:indeterminate .segment2 { + -fx-shape:"M22.49 3.5 a3.5,3.5 0 1,1 0,1 Z"; +} +.progress-indicator:indeterminate .segment3 { + -fx-shape:"M11.24 6.51 a3.5,3.5 0 1,1 0,1 Z"; +} +.progress-indicator:indeterminate .segment4 { + -fx-shape:"M3.01 14.74 a3.5,3.5 0 1,1 0,1 Z"; +} +.progress-indicator:indeterminate .segment5 { + -fx-shape:"M0.0 26.0 a3.5,3.5 0 1,1 0,1 Z"; +} +.progress-indicator:indeterminate .segment6 { + -fx-shape:"M3.01 37.25 a3.5,3.5 0 1,1 0,1 Z"; +} +.progress-indicator:indeterminate .segment7 { + -fx-shape:"M11.25 45.48 a3.5,3.5 0 1,1 0,1 Z"; +} +.progress-indicator:indeterminate .segment8 { + -fx-shape:"M22.5 48.5 a3.5,3.5 0 1,1 0,1 Z"; +} +.progress-indicator:indeterminate .segment9 { + -fx-shape:"M33.75 45.48 a3.5,3.5 0 1,1 0,1 Z"; +} +.progress-indicator:indeterminate .segment10 { + -fx-shape:"M41.98 37.25 a3.5,3.5 0 1,1 0,1 Z"; +} +.progress-indicator:indeterminate .segment11 { + -fx-shape:"M45.0 26.0 a3.5,3.5 0 1,1 0,1 Z"; +} + +/******************************************************************************* + * * + * Text COMMON * + * * + ******************************************************************************/ + +.text-input { + -fx-text-fill: -fx-text-inner-color; + -fx-highlight-fill: derive(-fx-control-inner-background,-20%); + -fx-highlight-text-fill: -fx-text-inner-color; + -fx-prompt-text-fill: derive(-fx-control-inner-background,-30%); + -fx-background-color: linear-gradient(to bottom, derive(-fx-text-box-border, -10%), -fx-text-box-border), + linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background); + -fx-background-insets: 0, 1; + -fx-background-radius: 3, 2; + -fx-cursor: text; + -fx-padding: 0.333333em 0.583em 0.333333em 0.583em; /* 4 7 4 7 */ +} +.text-input:focused { + -fx-highlight-fill: -fx-accent; + -fx-highlight-text-fill: white; + -fx-background-color: + -fx-focus-color, + -fx-control-inner-background, + -fx-faint-focus-color, + linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background); + -fx-background-insets: -0.2, 1, -1.4, 3; + -fx-background-radius: 3, 2, 4, 0; + -fx-prompt-text-fill: transparent; +} + +/******************************************************************************* + * * + * TextArea * + * * + ******************************************************************************/ + +.text-area { + -fx-padding: 0; + -fx-cursor: default; + -fx-background-color: linear-gradient(to bottom, derive(-fx-text-box-border, -10%), -fx-text-box-border), + derive(-fx-base,-1%); +} +.text-area > .scroll-pane { + -fx-background-color: null; +} +.text-area > .scroll-pane > .scroll-bar:horizontal { + -fx-background-radius: 0 0 2 2; +} +.text-area > .scroll-pane > .scroll-bar:vertical { + -fx-background-radius: 0 2 2 0; +} +.text-area > .scroll-pane > .corner { + -fx-background-radius: 0 0 2 0; +} +.text-area .content { + /*the is 1px less top and bottom than TextInput because of scrollpane border */ + -fx-padding: 0.25em 0.583em 0.25em 0.583em; /* 3 7 3 7 */ + -fx-cursor: text; + -fx-background-color: + linear-gradient(from 0px 0px to 0px 4px, derive(-fx-control-inner-background, -8%), -fx-control-inner-background); + -fx-background-radius: 2; +} +.text-area:focused .content { + -fx-background-color: + -fx-control-inner-background, + -fx-faint-focus-color, + linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background); + -fx-background-insets: 0, 0, 2; + -fx-background-radius: 2, 1, 0; +} + +/******************************************************************************* + * * + * HTML Editor * + * * + ******************************************************************************/ + +.html-editor-foreground { + -fx-color-label-visible: false; + -fx-color-rect-x: 1; + -fx-color-rect-y: 1; + -fx-color-rect-width: 4; + -fx-color-rect-height: 3; + -fx-graphic: url("HTMLEditor-Text-Color.png"); +} +.html-editor-background { + -fx-color-label-visible: false; + -fx-color-rect-x: 1; + -fx-color-rect-y: 1; + -fx-color-rect-width: 4; + -fx-color-rect-height: 3; + -fx-graphic: url("HTMLEditor-Background-Color.png"); +} +.color-picker.html-editor-foreground > .color-picker-label > .picker-color > .picker-color-rect, +.color-picker.html-editor-background > .color-picker-label > .picker-color > .picker-color-rect { + -fx-stroke: null; +} +.html-editor .button , +.html-editor .toggle-button { + -fx-padding: 0.333333em 0.416667em 0.333333em 0.416667em; /* 4 5 4 5 */ +} +.html-editor-cut { + -fx-graphic: url("HTMLEditor-Cut.png"); +} +.html-editor-copy { + -fx-graphic: url("HTMLEditor-Copy.png"); +} +.html-editor-paste { + -fx-graphic: url("HTMLEditor-Paste.png"); +} +.html-editor-align-left { + -fx-graphic: url("HTMLEditor-Left.png"); +} +.html-editor-align-center { + -fx-graphic: url("HTMLEditor-Center.png"); +} +.html-editor-align-right { + -fx-graphic: url("HTMLEditor-Right.png"); +} +.html-editor-align-justify { + -fx-graphic: url("HTMLEditor-Justify.png"); +} +.html-editor-outdent { + -fx-graphic: url("HTMLEditor-Outdent.png"); +} +.html-editor-indent { + -fx-graphic: url("HTMLEditor-Indent.png"); +} +.html-editor-bullets { + -fx-graphic: url("HTMLEditor-Bullets.png"); +} +.html-editor-numbers { + -fx-graphic: url("HTMLEditor-Numbered.png"); +} +.html-editor-bold { + -fx-graphic: url("HTMLEditor-Bold.png"); +} +.html-editor-italic { + -fx-graphic: url("HTMLEditor-Italic.png"); +} +.html-editor-underline { + -fx-graphic: url("HTMLEditor-Underline.png"); +} +.html-editor-strike { + -fx-graphic: url("HTMLEditor-Strikethrough.png"); +} +.html-editor-hr { + -fx-graphic: url("HTMLEditor-Break.png"); +} + +/******************************************************************************* + * * + * PopupMenu * + * * + ******************************************************************************/ + +.context-menu { + -fx-background-color: + linear-gradient(to bottom, + derive(-fx-color,-17%), + derive(-fx-color,-30%) + ), + -fx-control-inner-background; + -fx-background-insets: 0, 1; + -fx-padding: 0.333333em 0.083333em 0.333333em 0.083333em; /* 4 1 8 1 */ + -fx-effect: dropshadow( gaussian , rgba(0,0,0,0.2) , 12, 0.0 , 0 , 8 ); +} +.context-menu .separator:horizontal .line { + -fx-border-color: -fx-box-border transparent transparent transparent; + -fx-border-insets: 1 0 0 0; +} +.context-menu > .scroll-arrow { + -fx-padding: 0.416667em 0.416667em 0.416667em 0.416667em; /* 5 */ + -fx-background-color: transparent; +} +.context-menu > .scroll-arrow:hover { + -fx-background: -fx-selection-bar; + -fx-background-color: -fx-background; + -fx-text-fill: -fx-text-background-color; +} +.context-menu:show-mnemonics > .mnemonic-underline { + -fx-stroke: -fx-text-fill; +} + +/******************************************************************************* + * * + * Menu * + * * + ******************************************************************************/ + +.menu { + -fx-background-color: transparent; + -fx-padding: 0.333333em 0.666667em 0.333333em 0.666667em; /* 4 8 4 8 */ +} +.menu:show-mnemonics > .mnemonic-underline { + -fx-stroke: -fx-text-fill; +} +.menu > .right-container > .arrow { + -fx-padding: 0.458em 0.167em 0.458em 0.167em; /* 4.5 2 4.5 2 */ + -fx-background-color: -fx-mark-color; + -fx-shape: "M0,-4L4,0L0,4Z"; + -fx-scale-shape: false; +} +.menu:focused > .right-container > .arrow { + -fx-background-color: white; +} +.menu-up-arrow { + -fx-padding: 0.666667em 0.416667em 0.0em 0.416667em; /* 8 5 0 5 */ + -fx-background-color: derive(-fx-color,-2%); + -fx-shape: "M0 1 L1 1 L.5 0 Z"; + -fx-effect: innershadow( two-pass-box , rgba(0,0,0,0.6) , 4, 0.0 , 0 , 1 ); +} +.menu-down-arrow { + -fx-background-color: derive(-fx-color,-2%); + -fx-padding: 0.666667em 0.416667em 0.0em 0.416667em; /* 8 5 0 5 */ + -fx-shape: "M0 0 L1 0 L.5 1 Z"; + -fx-effect: innershadow( two-pass-box , rgba(0,0,0,0.6) , 4, 0.0 , 0 , 1 ); +} + + +/******************************************************************************* + * * + * MenuBar * + * * + ******************************************************************************/ + +.menu-bar { + -fx-padding: 0.0em 0.666667em 0.0em 0.666667em; /* 0 8 0 8 */ + -fx-spacing: 0.166667em; /* 2 */ + -fx-background-color: + linear-gradient(to bottom, derive(-fx-base,75%) 0%, -fx-outer-border 90%), + linear-gradient(to bottom, derive(-fx-base,46.9%) 2%, derive(-fx-base,-2.1%) 95%); + -fx-background-insets: 0 0 0 0, 1 0 1 0; + -fx-background-radius: 0, 0 ; +} +/* Show nothing for background of normal menu button in a menu bar */ +.menu-bar > .container > .menu-button { + -fx-background-radius: 0; + -fx-background-color: transparent; + -fx-background-insets: 0; +} +/* Change padding of menu buttons when in menu bar */ +.menu-bar > .container > .menu-button > .label { + -fx-padding: 0; +} +/* Hide the down arrow for a menu placed in a menubar */ +.menu-bar > .container > .menu-button > .arrow-button > .arrow { + -fx-padding: 0.167em 0 0.250em 0; /* 2 0 3 0 */ + -fx-background-color: transparent; + -fx-shape: null; +} +.menu-bar > .container > .menu > .arrow-button { + -fx-padding: 0.500em 0 0.500em 0; /* 6 0 6 0 */ +} +.menu-bar > .container > .menu-button:hover, +.menu-bar > .container > .menu-button:focused, +.menu-bar > .container > .menu-button:showing { + -fx-background: -fx-selection-bar; + -fx-background-color: -fx-background; +} +.menu-bar > .container > .menu-button:hover > .label, +.menu-bar > .container > .menu-button:focused > .label, +.menu-bar > .container > .menu-button:showing > .label { + -fx-text-fill: -fx-text-background-color; +} +.menu-bar:show-mnemonics > .mnemonic-underline { + -fx-stroke: -fx-text-fill; +} + +/******************************************************************************* + * * + * MenuItem * + * * + ******************************************************************************/ + +.menu-item { + -fx-background-color: transparent; + -fx-padding: 0.333333em 0.41777em 0.333333em 0.41777em; /* 4 5 4 5 */ +} +.menu-item > .left-container { + -fx-padding: 0.458em 0.791em 0.458em 0.458em; +} +.menu-item > .graphic-container { + -fx-padding: 0em 0.333em 0em 0em; +} +.menu-item >.label { + -fx-padding: 0em 0.5em 0em 0em; + -fx-text-fill: -fx-text-base-color; +} +.menu-item:focused { + -fx-background: -fx-selection-bar; + -fx-background-color: -fx-background; + -fx-text-fill: -fx-text-background-color; +} +.menu-item:focused > .label { + -fx-text-fill: white; +} +.menu-item > .right-container { + -fx-padding: 0em 0em 0em 0.5em; +} +.menu-item:show-mnemonics > .mnemonic-underline { + -fx-stroke: -fx-text-fill; +} +.radio-menu-item:checked > .left-container > .radio { + -fx-background-color: -fx-mark-color; + -fx-shape: "M0,5H2L4,8L8,0H10L5,10H3Z"; + -fx-scale-shape: false; +} +.radio-menu-item:focused:checked > .left-container > .radio { + -fx-background-color: white; +} +.check-menu-item:checked > .left-container > .check { + -fx-background-color: -fx-mark-color; + -fx-shape: "M0,5H2L4,8L8,0H10L5,10H3Z"; + -fx-scale-shape: false; +} +.check-menu-item:focused:checked > .left-container > .check { + -fx-background-color: white; +} +/******************************************************************************* + * * + * ChoiceBox * + * * + ******************************************************************************/ + +/*.choice-box > .open-button > .arrow { + -fx-background-color: -fx-mark-highlight-color, -fx-mark-color; + -fx-background-insets: 1 0 -1 0, 0; + -fx-padding: 0.166667em 0.333333em 0.166667em 0.333333em; 2 3.5 2 3.5 + -fx-shape: "M 0 0 h 7 l -3.5 4 z"; +}*/ +.choice-box > .context-menu { + -fx-background-radius: 6, 5, 4; +} + +/******************************************************************************* + * * + * TabPane * + * * + ******************************************************************************/ + +.tab-pane { + -fx-tab-min-height: 1.8333em; /* 22 */ + -fx-tab-max-height: 1.8333em; /* 22 */ +} +.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-label { + -fx-alignment: CENTER; + -fx-text-fill: -fx-text-base-color; +} +.tab-pane > .tab-header-area > .headers-region > .tab { + -fx-background-insets: 0 1 1 0, 1 2 1 1, 2 3 1 2; + -fx-background-radius: 3 3 0 0, 2 2 0 0, 1 1 0 0; + -fx-padding: 0.083333em 0.5em 0.0769em 0.5em; /* 1 6 0.99 6 */ +} +.tab-pane > .tab-header-area > .headers-region > .tab:top { + -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color; +} +.tab-pane > .tab-header-area > .headers-region > .tab:right { + -fx-background-color: -fx-outer-border, -fx-inner-border-bottomup, -fx-body-color-bottomup; +} +.tab-pane > .tab-header-area > .headers-region > .tab:bottom { + -fx-background-color: -fx-outer-border, -fx-inner-border-bottomup, -fx-body-color-bottomup; +} +.tab-pane > .tab-header-area > .headers-region > .tab:left { + -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color; +} +.tab-pane > .tab-header-area > .headers-region > .tab:hover { + -fx-color: -fx-hover-base; +} +.tab-pane > .tab-header-area > .headers-region > .tab:selected { + -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-background; + -fx-background-insets: 0 1 1 0, 1 2 0 1, 2 3 0 2; +} +.tab-pane:focused > .tab-header-area > .headers-region > .tab:selected .focus-indicator { + -fx-border-width: 1, 1; + -fx-border-color: -fx-focus-color, -fx-faint-focus-color; + -fx-border-insets: -4 -4 -6 -5, -2 -2 -5 -3; + -fx-border-radius: 2, 1; /* looks sharper if outer border has a tighter radius (2 instead of 3) */ +} +.tab-pane:focused > .tab-header-area > .headers-region > .tab:bottom:selected .focus-indicator { + -fx-border-insets: -6 -5 -4 -4, -5 -3 -2 -2; +} +.tab-pane > .tab-header-area > .headers-region > .tab:disabled:hover { + -fx-color: -fx-base; +} +.tab-pane > .tab-header-area > .tab-header-background { + /* TODO should not be using text-box-border I think? */ + -fx-background-color: + -fx-outer-border, + -fx-text-box-border, + linear-gradient(from 0px 0px to 0px 5px, -fx-text-box-border, derive(-fx-text-box-border, 30%)); +} +.tab-pane:top > .tab-header-area > .tab-header-background { + -fx-background-insets: 0, 0 0 1 0, 1; +} +.tab-pane:bottom > .tab-header-area > .tab-header-background { + -fx-background-insets: 0, 1 0 0 0, 1; +} +.tab-pane:left > .tab-header-area > .tab-header-background { + -fx-background-insets: 0, 0 1 0 0, 1; +} +.tab-pane:right > .tab-header-area > .tab-header-background { + -fx-background-insets: 0, 0 0 0 1, 1; +} +.tab-pane:top > .tab-header-area { + /*-fx-padding: 0.416667em 0.166667em 0.0em 0.416667em; *//* 5 2 0 5 */ + -fx-padding: 0.416667em 5 0.0em 0.416667em; /* 5 2 0 5 */ +} +.tab-pane:bottom > .tab-header-area { + -fx-padding: 0 0.166667em 0.416667em 0.416667em; /* 0 2 5 5 */ +} +.tab-pane:left > .tab-header-area { + -fx-padding: 0.416667em 0.0em 0.166667em 0.416667em; /* 5 0 2 5 */ +} +.tab-pane:right > .tab-header-area { + -fx-padding: 0.416667em 0.416667em 0.166667em 0.0em; /* 5 5 2 0 */ +} +/* TODO: scaling the shape seems to make it way too large */ +.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-close-button { + -fx-background-color: -fx-mark-color; + -fx-shape: "M 0,0 H1 L 4,3 7,0 H8 V1 L 5,4 8,7 V8 H7 L 4,5 1,8 H0 V7 L 3,4 0,1 Z"; + -fx-scale-shape: false; + -fx-effect: dropshadow(two-pass-box , rgba(255, 255, 255, 0.4), 1, 0.0 , 0, 1); +} +.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-close-button:hover { + -fx-background-color: derive(-fx-mark-color, -30%); +} +/* CONTROL BUTTONS */ +.tab-pane > .tab-header-area > .control-buttons-tab > .container { + -fx-padding: 3 0 0 0; +} +.tab-pane > .tab-header-area > .control-buttons-tab > .container > .tab-down-button { + -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color; + -fx-background-insets: -1 0 5 0, 0 1 6 1, 1 2 7 2; + -fx-padding: 4 4 9 4; + -fx-background-radius: 10; +} +.tab-pane:bottom > .tab-header-area > .control-buttons-tab > .container > .tab-down-button { + -fx-padding: -5 4 4 4; /* TODO convert to ems */ +} +/* FLOATING TABS CUSTOMISATION */ +.tab-pane.floating > .tab-header-area > .tab-header-background { + -fx-background-color: null; +} +.tab-pane.floating > .tab-header-area { + -fx-background-color: null; +} +.tab-pane.floating > .tab-content-area { + -fx-background-color: -fx-outer-border, -fx-background; + -fx-background-insets: 0, 1; + -fx-background-radius: 2, 0; + -fx-padding: 2; +} + +/******************************************************************************* + * * + * ComboBox * + * * + ******************************************************************************/ + +/* Customise the ListCell that appears in the ComboBox button itself */ +.combo-box > .list-cell { + -fx-background: transparent; + -fx-background-color: transparent; + -fx-text-fill: -fx-text-base-color; + -fx-padding: 0.333333em 0.666667em 0.333333em 0.666667em; /* 4 8 4 8 */ +} +.combo-box-base > .arrow-button { + -fx-background-radius: 0 3 3 0, 0 2 2 0, 0 1 1 0; + -fx-padding: 0.5em 0.667em 0.5em 0.833333em; /* 6 8 6 10 */ + -fx-background-color: transparent; +} + +/******************************************************************************* + * * + * Editable ComboBox * + * * + * The editable ComboBox TextBox inherits its properties from the TextBox * + * Control. Only the properties with values that are different from the * + * TextBox are specified here. * + * * + ******************************************************************************/ + +.combo-box-base:editable > .arrow-button, +.date-picker > .arrow-button { + -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color; + -fx-background-insets: 1 1 1 0, 1, 2; + -fx-background-radius: 0 3 3 0, 0 2 2 0, 0 1 1 0; +} +.combo-box-base:editable > .text-field, +.date-picker > .text-field { + -fx-background-color: -fx-control-inner-background; + -fx-background-insets: 1 0 1 1; + -fx-background-radius: 2 0 0 2; +} +.combo-box-base:editable:contains-focus, +.date-picker:contains-focus { + -fx-background-color: -fx-focus-color; + -fx-background-insets: -0.2; + -fx-background-radius: 3; +} +.combo-box-base:editable:focused > .text-field, +.combo-box-base:editable > .text-field:focused, +.date-picker:focused > .text-field, +.date-picker > .text-field:focused { + -fx-background-color: + -fx-control-inner-background, + -fx-faint-focus-color, + linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background); + -fx-background-insets: 1 0 1 1, 1 0 1 1, 3 2 3 3; + -fx-background-radius: 2 0 0 2, 1 0 0 1, 0; +} +.combo-box-base:editable:contains-focus > .arrow-button, +.date-picker:contains-focus > .arrow-button { + -fx-background-color: -fx-inner-border, -fx-body-color, -fx-faint-focus-color, -fx-body-color; + -fx-background-insets: 1, 2, 1, 2.6; + -fx-background-radius: 0 2 2 0, 0 1 1 0, 0 1 1 0, 0 1 1 0; +} + +/* -------------- STYLES FOR THE DEFAULT LISTVIEW-BASED COMBOBOX ------------- */ + +.combo-box-popup > .list-view { + -fx-background-color: + linear-gradient(to bottom, + derive(-fx-color,-17%), + derive(-fx-color,-30%) + ), + -fx-control-inner-background; + -fx-background-insets: 0, 1; + -fx-effect: dropshadow( gaussian , rgba(0,0,0,0.2) , 12, 0.0 , 0 , 8 ); +} +.combo-box-popup > .list-view > .virtual-flow > .clipped-container > .sheet > .list-cell { + -fx-padding: 4 0 4 5; + /* No alternate highlighting */ + -fx-background: -fx-control-inner-background; +} +.combo-box-popup > .list-view > .virtual-flow > .clipped-container > .sheet > .list-cell:filled:selected { + -fx-background: -fx-selection-bar-non-focused; + -fx-background-color: -fx-background; +} +.combo-box-popup > .list-view > .virtual-flow > .clipped-container > .sheet > .list-cell:filled:hover, +.combo-box-popup > .list-view > .virtual-flow > .clipped-container > .sheet > .list-cell:filled:selected:hover { + -fx-background: -fx-accent; + -fx-background-color: -fx-selection-bar; +} +.combo-box-popup > .list-view > .placeholder > .label { + -fx-text-fill: derive(-fx-control-inner-background,-30%); +} + +/******************************************************************************* + * * + * TitledPane * + * * + ******************************************************************************/ + +.titled-pane { + -fx-text-fill: -fx-text-base-color; +} +.titled-pane > .title { + -fx-background-color: + linear-gradient(to bottom, + derive(-fx-color,-15%) 95%, + derive(-fx-color,-25%) 100% + ), + -fx-inner-border, -fx-body-color; + -fx-background-insets: 0, 1, 2; + -fx-background-radius: 3 3 0 0, 2 2 0 0, 1 1 0 0; + -fx-padding: 0.3333em 0.75em 0.3333em 0.75em; /* 4 9 4 9 */ +} +/* alternative focus using the ring around the entire title area */ +/*.titled-pane:focused > .title { + -fx-background-color: -fx-faint-focus-color, -fx-focus-color, -fx-inner-border, -fx-body-color; + -fx-background-insets: 0, 0.7, 2, 3; +}*/ +/* focus purely on the arrow */ +.titled-pane:focused > .title > .arrow-button > .arrow { + -fx-background-color: -fx-focus-color, -fx-mark-color; + -fx-background-insets: -1, 0; + -fx-effect: dropshadow(two-pass-box , -fx-focus-color, 5, 0.2 , 0, 0); +} +.titled-pane > .title > .arrow-button { + -fx-background-color: null; + -fx-background-insets: 0; + -fx-background-radius: 0; + -fx-padding: 0.0em 0.583em 0.0em 0.0em; /* 0 7 0 0 */ +} +.titled-pane > .title > .arrow-button > .arrow { + -fx-background-color: -fx-mark-highlight-color, -fx-mark-color; + -fx-background-insets: 1 0 -1 0, 0; + -fx-padding: 0.25em 0.3125em 0.25em 0.3125em; /* 3 3.75 3 3.75 */ + -fx-shape: "M 0 0 h 7 l -3.5 4 z"; +} +.titled-pane > .title:hover { + -fx-color: -fx-hover-base; +} +/* alternative content using a border and a grad to transparent background - why should TitledPane content have a colour? */ +.titled-pane > *.content { + -fx-border-color: -fx-box-border; + -fx-border-insets: -1 0 0 0; + -fx-background-color: linear-gradient(from 0px 0px to 0px 5px, derive(-fx-background, -6%), -fx-background); +} + + + +/******************************************************************************* + * * + * Accordion * + * * + ******************************************************************************/ + +.accordion > .titled-pane > .title { + -fx-background-color: + linear-gradient(to bottom, + derive(-fx-color,-15%) 95%, + derive(-fx-color,-25%) 100% + ), + -fx-inner-border, + -fx-body-color; + -fx-background-insets: -1 0 0 0, 0 1 1 1, 1 2 2 2; + -fx-background-radius: 0, 0, 0; +} +.accordion > .first-titled-pane > .title { + -fx-background-insets: 0, 1, 2; +} + +/******************************************************************************* + * * + * SplitPane * + * * + ******************************************************************************/ + +.split-pane > .split-pane-divider { + -fx-padding: 0 0.25em 0 0.25em; /* 0 3 0 3 */ +} +/* horizontal the two nodes are placed to the left/right of each other. */ +.split-pane:horizontal > .split-pane-divider { + -fx-background-color: -fx-box-border, -fx-inner-border-horizontal; + -fx-background-insets: 0, 0 1 0 1; +} +/* vertical the two nodes are placed on top of each other. */ +.split-pane:vertical > .split-pane-divider { + -fx-background-color: -fx-box-border, -fx-inner-border; + -fx-background-insets: 0, 1 0 1 0; +} + +/******************************************************************************* + * * + * ColorPicker * + * * + ******************************************************************************/ + +.color-picker > .arrow-button { + -fx-background-color: null; + -fx-padding: 0.5em 0.667em 0.5em 0; /* 6 8 6 0 */ +} +.color-picker.split-button > .arrow-button { + -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color; + -fx-background-insets: 1 1 1 0, 1, 2; + -fx-background-radius: 0 3 3 0, 0 2 2 0, 0 1 1 0; +} +.color-picker.split-button:focused > .arrow-button { + /*-fx-background-color: -fx-focus-color, -fx-inner-border, -fx-body-color !important;*/ + /*-fx-background-insets: 0, 1, 2;*/ + -fx-background-color: -fx-focus-color, -fx-inner-border, -fx-body-color, -fx-faint-focus-color, -fx-body-color; + -fx-background-insets: 1 1 1 0, 1, 2, 1, 2.6; + -fx-background-radius: 0 3 3 0, 0 2 2 0, 0 1 1 0, 0 1 1 0, 0 1 1 0; +} +.color-picker.split-button > .color-picker-label, +.color-picker.split-button:focused > .color-picker-label{ + -fx-background-color: null; +} +.color-picker.split-button > .arrow-button { + /*-fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color !important;*/ + -fx-padding: 0.5em 0.667em 0.5em 0.667em; /* 6 8 6 8 */ +} +.color-picker > .color-picker-label > .picker-color > .picker-color-rect { + -fx-stroke: -fx-box-border; +} + +.color-palette { + -fx-spacing: 0.833333em; /* 10px */ + -fx-background-color: + linear-gradient(to bottom, + derive(-fx-color,-17%), + derive(-fx-color,-30%) + ), + linear-gradient(to bottom, + derive(-fx-background,10%) 0%, + derive(-fx-background,-5%) 12%, + derive(-fx-background,15%) 88%, + derive(-fx-background,-10%) 100%); + -fx-background-insets: 0, 1; + -fx-background-radius: 6, 5; + -fx-padding: 1em; /* 12 */ + -fx-effect: dropshadow( gaussian , rgba(0,0,0,0.2) , 12, 0.0 , 0 , 8 ); +} +.color-palette > .color-picker-grid { + -fx-padding: 0.5px; + -fx-snap-to-pixel: false; +} +.color-palette > .color-picker-grid > .color-square { + -fx-background-color: transparent; + -fx-padding: 0.5px; +} +/* the color over which the user is hovering */ +.color-palette > .color-picker-grid > .color-square:focused, +.color-palette > .color-picker-grid > .color-square:selected:focused { + -fx-background-color: -fx-faint-focus-color, -fx-focus-color; + -fx-background-insets: -2,0; + -fx-background-radius: 5,0; + -fx-scale-x: 1.5; + -fx-scale-y: 1.5; +} +/* the currently selected color */ +.color-palette > .color-picker-grid > .color-square:selected { + -fx-background-color: black; +} +/* ------- CUSTOM COLOR DIALOG ------- */ +.custom-color-dialog > .color-rect-pane { + -fx-spacing: 0.75em; + -fx-pref-height: 16.666667em; + -fx-alignment: top-left; + -fx-fill-height: true; +} + +.custom-color-dialog .color-rect-pane .color-rect { + -fx-min-width: 16.666667em; + -fx-min-height: 16.666667em; +} + +.custom-color-dialog .color-rect-pane .color-rect-border { + -fx-border-color: derive(-fx-base, -20%); +} + +.custom-color-dialog > .color-rect-pane #color-rect-indicator { + -fx-background-color: null; + -fx-border-color: white; + -fx-border-radius: 0.4166667em; + -fx-translate-x: -0.4166667em; + -fx-translate-y: -0.4166667em; + -fx-pref-width: 0.833333em; + -fx-pref-height: 0.833333em; + -fx-effect: dropshadow(three-pass-box, black, 2, 0.0, 0, 1); +} + +.custom-color-dialog > .color-rect-pane > .color-bar { + -fx-min-width: 1.666667em; + -fx-min-height: 16.666667em; + -fx-max-width: 1.666667em; + -fx-border-color: derive(-fx-base, -20%); +} + +.custom-color-dialog > .color-rect-pane > .color-bar > #color-bar-indicator { + -fx-border-radius: 0.333333em; + -fx-border-color: white; + -fx-effect: dropshadow(three-pass-box, black, 2, 0.0, 0, 1); + -fx-pref-width: 2em; + -fx-pref-height: 0.833333em; + -fx-translate-x: -0.1666667em; + -fx-translate-y: -0.4166667em; +} + +.custom-color-dialog { + -fx-background-color: -fx-background; + -fx-padding: 1.25em; + -fx-spacing: 1.25em; +} +.custom-color-dialog .controls-pane .current-new-color-grid #current-new-color-border { + -fx-border-color: derive(-fx-base, -20%); + -fx-border-width: 2px; +} + +.custom-color-dialog .controls-pane .current-new-color-grid .color-rect { + -fx-min-width: 10.666667em; + -fx-min-height: 1.75em; + -fx-pref-width: 10.666667em; + -fx-pref-height: 1.75em; +} + +.custom-color-dialog .transparent-pattern { + -fx-background-image: url("pattern-transparent.png"); + -fx-background-repeat: repeat; + -fx-background-size: auto; +} + +.custom-color-dialog .controls-pane #spacer1 { + -fx-min-height: 0.1666667em; + -fx-max-height: 0.1666667em; + -fx-pref-height: 0.1666667em; +} + +.custom-color-dialog .controls-pane #spacer2 { + -fx-min-height: 1em; + -fx-max-height: 1em; + -fx-pref-height: 1em; +} + +.custom-color-dialog .controls-pane #settings-pane { + -fx-hgap: 0.4166667em; + -fx-vgap: 0.3333333em; +} + +.custom-color-dialog .controls-pane #settings-pane .settings-label { + -fx-min-width: 5.75em; +} + +.custom-color-dialog .controls-pane #settings-pane .settings-unit { + -fx-max-width: 1em; +} + +.custom-color-dialog .controls-pane #settings-pane .slider { + -fx-pref-width: 8.25em; +} + +.custom-color-dialog .controls-pane .color-input-field { + -fx-pref-column-count: 3; + -fx-max-width: 3.25em; + -fx-min-width: 3.25em; + -fx-pref-width: 3.25em; +} + +.custom-color-dialog .controls-pane .web-field { + -fx-pref-column-count: 6; + -fx-pref-width: 8.25em; +} + +.custom-color-dialog .controls-pane #spacer-side { + -fx-min-width: 0.5em; + -fx-pref-width: 0.5em; +} + +.custom-color-dialog .controls-pane #spacer-bottom { + -fx-pref-height: 0.833333em; + -fx-min-height: 0.833333em; +} + +.custom-color-dialog .controls-pane .customcolor-controls-background { + -fx-background-color: -fx-text-box-border, -fx-control-inner-background; + -fx-background-insets: + 0.8333333em 0 0.4166667em 0, + 1em 0.166667em 0.5833333em 0.166667em; + -fx-background-radius: 0.3333333em, 0.166667em; +} + +.custom-color-dialog .controls-pane .current-new-color-grid .label { + -fx-padding: 0 0 0 0.4166667em; +} + +.custom-color-dialog .controls-pane #buttons-hbox { + -fx-spacing: 0.333333em; + -fx-padding: 1em 0 0 0; + -fx-alignment: bottom-right; +} + +/******************************************************************************* + * * + * Pagination * + * * + ******************************************************************************/ + +.pagination { + -fx-padding: 0; + -fx-arrows-visible: true; + -fx-tooltip-visible: true; + -fx-page-information-visible: true; + -fx-page-information-alignment: bottom; + -fx-arrow-button-gap: 0; +} +.pagination > .page { + -fx-background-color: transparent; +} +.pagination > .pagination-control { + -fx-background-color: transparent; + -fx-font-size: 0.82em; +} +.pagination > .pagination-control > .control-box { + -fx-padding: 5px 0 0 0; + -fx-spacing: 2; + -fx-alignment: center; +} +.pagination > .pagination-control > .control-box > .left-arrow-button { + -fx-background-radius: 3 0 0 3, 3 0 0 3, 2 0 0 2, 1 0 0 1; + -fx-background-insets: 0 0 -1 5, 0 0 0 5, 1 1 1 6, 2 2 2 7; + -fx-padding: 0em 0.417em 0em 0.833em; /* 0 5 0 10 */ +} +.pagination > .pagination-control > .control-box > .right-arrow-button { + -fx-background-radius: 0 3 3 0, 0 3 3 0, 0 2 2 0, 0 1 1 0; + -fx-background-insets: 0 5 -1 0, 0 5 0 0, 1 6 1 1, 2 7 2 2; + -fx-padding: 0em 0.75em 0em 0.417em; /* 0 9 0 5 */ +} +.pagination > .pagination-control .left-arrow { + -fx-background-color: -fx-mark-highlight-color, -fx-mark-color; + -fx-background-insets: 1 0 -1 0, 0; + -fx-padding: 0.375em 0.291em 0.375em 0.291em; + -fx-shape: "M 0 0 L -13 7 L 0 13 z"; + -fx-scale-shape: true; +} +.pagination > .pagination-control .right-arrow { + -fx-background-color: -fx-mark-highlight-color, -fx-mark-color; + -fx-background-insets: 1 0 -1 0, 0; + -fx-padding: 0.375em 0.291em 0.375em 0.291em; + -fx-shape: "M 0 0 L 13 7 L 0 13 z"; + -fx-scale-shape: true; +} +.pagination > .pagination-control > .control-box > .bullet-button { + -fx-background-radius: 0, 4em, 4em, 4em, 4em; + -fx-padding: 0.333em; + -fx-background-color: transparent, -fx-outer-border, -fx-inner-border, -fx-body-color; + -fx-background-insets: 0, 5, 6, 7; +} +.pagination > .pagination-control > .control-box > .bullet-button:selected { + -fx-base: -fx-accent; +} +.pagination.bullet > .pagination-control > .control-box { + -fx-spacing: 0; + -fx-alignment: center; +} +.pagination.bullet > .pagination-control > .control-box > .left-arrow-button { + -fx-background-radius: 4em; + -fx-background-insets: 0, 1, 2; + -fx-padding: 0em 0.25em 0em 0.083em; /* 0 3 0 1 */ +} +.pagination.bullet > .pagination-control > .control-box > .right-arrow-button { + -fx-background-radius: 4em; + -fx-background-insets: 0, 1, 2; + -fx-padding: 0em 0.083em 0em 0.25em; /* 0 1 0 3 */ +} +.pagination > .pagination-control > .control-box > .number-button { + -fx-background-radius: 0; + -fx-padding: 0.166667em 0.25em 0.25em 0.333em; + -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color; +} +.pagination > .pagination-control > .control-box > .number-button:selected { + -fx-base: -fx-accent; +} +.pagination > .pagination-control > .page-information { + -fx-padding: 0.416em 0 0 0; +} + +/******************************************************************************* + * * + * Customised CSS for controls placed directly within cells * + * * + ******************************************************************************/ + +.cell > .choice-box { + -fx-background-color: transparent; + -fx-background-insets: 0; + -fx-background-radius: 0; + -fx-padding: 0.0em 0.5em 0.0em 0.0em; /* 0 6 0 0 */ + -fx-alignment: CENTER_LEFT; + -fx-content-display: LEFT; +} +.cell > .choice-box > .label { + -fx-padding: 0em 0.333333em 0.0em 0.333333; /* 2 4 3 6 */ +} +.cell:focused:selected > .choice-box > .label { + -fx-text-fill: white; +} +.cell:focused:selected > .choice-box > .open-button > .arrow { + -fx-background-color: -fx-mark-highlight-color, white; +} + +/******************************************************************************* + * * + * List, Tree, Table COMMON * + * * + ******************************************************************************/ + +/* remove double borders from scrollbars */ +.list-view > .virtual-flow > .scroll-bar:vertical, +.tree-view > .virtual-flow > .scroll-bar:vertical, +.table-view > .virtual-flow > .scroll-bar:vertical, +.tree-table-view > .virtual-flow > .scroll-bar:vertical { + -fx-background-insets: 0, 0 0 0 1; + -fx-padding: -1 -1 -1 0; +} +.list-view > .virtual-flow > .scroll-bar:horizontal, +.tree-view > .virtual-flow > .scroll-bar:horizontal, +.table-view > .virtual-flow > .scroll-bar:horizontal, +.tree-table-view > .virtual-flow > .scroll-bar:horizontal { + -fx-background-insets: 0, 1 0 0 0; + -fx-padding: 0 -1 -1 -1; +} +.list-view > .virtual-flow > .corner, +.tree-view > .virtual-flow > .corner, +.table-view > .virtual-flow > .corner, +.tree-table-view > .virtual-flow > .corner { + -fx-background-color: derive(-fx-base,-1%); +} +/* standard cell */ +.list-cell, +.tree-cell { + -fx-background: -fx-control-inner-background; + -fx-background-color: -fx-background; + -fx-text-fill: -fx-text-background-color; +} +/* Selected rows */ +.list-view:focused > .virtual-flow > .clipped-container > .sheet > .list-cell:filled:selected, +.tree-view:focused > .virtual-flow > .clipped-container > .sheet > .tree-cell:filled:selected, +.table-view:focused > .virtual-flow > .clipped-container > .sheet > .table-row-cell:filled:selected, +.tree-table-view:focused > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell:filled:selected, +.table-view:focused > .virtual-flow > .clipped-container > .sheet > .table-row-cell .table-cell:selected, +.tree-table-view:focused > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell .tree-table-cell:selected { + -fx-background: -fx-selection-bar; + -fx-table-cell-border-color: derive(-fx-selection-bar, 20%); +} +/* Selected when control is not focused */ +.list-cell:filled:selected, +.tree-cell:filled:selected, +.table-row-cell:filled:selected, +.tree-table-row-cell:filled:selected, +.table-row-cell:filled > .table-cell:selected, +.tree-table-row-cell:filled > .tree-table-cell:selected { + -fx-background: -fx-selection-bar-non-focused; + -fx-table-cell-border-color: derive(-fx-selection-bar-non-focused, 20%); +} +/* focused cell (keyboard navigation) */ +.list-view:focused > .virtual-flow > .clipped-container > .sheet > .list-cell:focused, +.tree-view:focused > .virtual-flow > .clipped-container > .sheet > .tree-cell:focused, +.table-view:focused:row-selection > .virtual-flow > .clipped-container > .sheet > .table-row-cell:focused, +.tree-table-view:focused:row-selection > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell:focused, +.table-view:focused:cell-selection > .virtual-flow > .clipped-container > .sheet > .table-row-cell > .table-cell:focused, +.tree-table-view:focused:cell-selection > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell > .tree-table-cell:focused { + -fx-background-color: -fx-background, -fx-cell-focus-inner-border, -fx-background; + -fx-background-insets: 0, 1, 2; +} + +/******************************************************************************* + * * + * ListView and ListCell * + * * + ******************************************************************************/ + +.list-cell { + -fx-padding: 0.25em 0.583em 0.25em 0.583em; /* 3 7 3 7 */ +} +.list-cell:odd { + -fx-background: -fx-control-inner-background-alt; +} + +/******************************************************************************* + * * + * TreeView and TreeCell * + * * + ******************************************************************************/ + +.tree-cell { + -fx-padding: 0.25em; /* 3 */ + -fx-indent: 1em; +} +.tree-cell .label { + -fx-padding: 0.0em 0.0em 0.0em 0.25em; /* 0 0 0 3 */ +} +.tree-cell > .tree-disclosure-node, +.tree-table-row-cell > .tree-disclosure-node { + -fx-padding: 4 6 4 8; + -fx-background-color: transparent; +} +.tree-cell > .tree-disclosure-node > .arrow, +.tree-table-row-cell > .tree-disclosure-node > .arrow { + -fx-background-color: -fx-text-background-color; + -fx-padding: 0.333333em 0.229em 0.333333em 0.229em; /* 4 */ + -fx-shape: "M 0 -3.5 L 4 0 L 0 3.5 z"; +} +.tree-cell:expanded > .tree-disclosure-node > .arrow, +.tree-table-row-cell:expanded > .tree-disclosure-node > .arrow { + -fx-rotate: 90; +} + +/******************************************************************************* + * * + * TableView * + * * + ******************************************************************************/ + +.table-view, +.tree-table-view { + /* Constants used throughout the tableview. */ + -fx-table-header-border-color: -fx-box-border; + -fx-table-cell-border-color: derive(-fx-color,5%); +} +/***** ROW CELLS **************************************************************/ +/* Each row in the table is a table-row-cell. Inside a table-row-cell is any + number of table-cell. */ +.table-row-cell { + -fx-background: -fx-control-inner-background; + -fx-background-color: -fx-table-cell-border-color, -fx-background; + -fx-background-insets: 0, 0 0 1 0; + -fx-padding: 0; + -fx-text-fill: -fx-text-background-color; +} +.table-row-cell:odd { + -fx-background: -fx-control-inner-background-alt; +} +/***** INDIVIDUAL CELLS ********************************************************/ +.table-cell { + -fx-padding: 0.166667em; /* 2px, plus border adds 1px */ + -fx-background-color: null; + -fx-border-color: transparent -fx-table-cell-border-color transparent transparent; + -fx-cell-size: 2.0em; /* 24 */ + -fx-text-fill: -fx-text-background-color; +} +.table-view > .virtual-flow > .clipped-container > .sheet > .table-row-cell .table-cell:selected, +.tree-table-view > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell .tree-table-cell:selected { + -fx-background-color: -fx-table-cell-border-color, -fx-background; + -fx-background-insets: 0, 0 0 1 0; +} +/* When in constrained resize mode, the right-most visible cell should not have + a right-border, as it is not possible to get this cleanly out of view without + introducing horizontal scrollbars (see RT-14886). */ +.table-view:constrained-resize > .virtual-flow > .clipped-container > .sheet > .table-row-cell > .table-cell:last-visible, +.tree-table-view:constrained-resize > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell > .tree-table-cell:last-visible { + -fx-border-color: transparent; +} +/***** HEADER **********************************************************************/ +/* The column-resize-line is shown when the user is attempting to resize a column. */ +.table-view .column-resize-line, +.tree-table-view .column-resize-line { + -fx-background: -fx-accent; + -fx-background-color: -fx-background; + -fx-padding: 0.0em 0.0416667em 0.0em 0.0416667em; /* 0 0.571429 0 0.571429 */ +} +/* This is the area behind the column headers. An ideal place to specify background + and border colors for the whole area (not individual column-header's). */ +.table-view .column-header-background, +.tree-table-view > .column-header-background { + -fx-background-color: -fx-inner-border, -fx-body-color; + -fx-background-insets: 0, 1; +} +/* The column header row is made up of a number of column-header, one for each + TableColumn, and a 'filler' area that extends from the right-most column + to the edge of the tableview, or up to the 'column control' button. */ +.table-view .column-header, +.tree-table-view .column-header, +.table-view .filler, +.tree-table-view .filler, +.table-view > .column-header-background > .show-hide-columns-button, +.tree-table-view > .column-header-background > .show-hide-columns-button, +.table-view:constrained-resize .filler, +.tree-table-view:constrained-resize .filler { + -fx-background-color: -fx-box-border, -fx-inner-border, -fx-body-color; + -fx-background-insets: 0, 0 1 1 0, 1 2 2 1; + -fx-font-weight: bold; + -fx-size: 2em; + -fx-text-fill: -fx-selection-bar-text; + -fx-padding: 0.166667em; +} +.table-view .filler, +.tree-table-view .filler, +.table-view:constrained-resize .filler, +.tree-table-view:constrained-resize .filler { + -fx-background-insets: 0, 0 0 1 0, 1 1 2 1; +} +.table-view > .column-header-background > .show-hide-columns-button, +.tree-table-view > .column-header-background > .show-hide-columns-button { + -fx-background-insets: 0, 0 0 1 1, 1 1 2 2; +} +.table-view .column-header .sort-order-dots-container, +.tree-table-view .column-header .sort-order-dots-container{ + -fx-padding: 2 0 2 0; +} +.table-view .column-header .sort-order, +.tree-table-view .column-header .sort-order{ + -fx-font-size: 0.916667em; /* 11pt - 1 less than the default font */ +} +.table-view .column-header .sort-order-dot, +.tree-table-view .column-header .sort-order-dot { + -fx-background-color: -fx-mark-color; + -fx-padding: 0.115em; + -fx-background-radius: 0.115em; +} +.table-view .column-header .label, +.tree-table-view .column-header .label { + -fx-alignment: center; +} + +/* Plus Symbol */ +.table-view .show-hide-column-image, +.tree-table-view .show-hide-column-image { + -fx-background-color: -fx-mark-color; + -fx-padding: 0.25em; /* 3px */ + -fx-shape: "M398.902,298.045c0.667,0,1.333,0,2,0c0,0.667,0,1.333,0,2c0.667,0,1.333,0,2,0c0,0.667,0,1.333,0,2c-0.667,0-1.333,0-2,0c0,0.666,0,1.332,0,1.999c-0.667,0-1.333,0-2,0c0-0.667,0-1.333,0-1.999c-0.666,0-1.333,0-1.999,0c0-0.667,0-1.334,0-2c0.666,0,1.333,0,1.999,0C398.902,299.378,398.902,298.711,398.902,298.045z"; +} +/* When a column is being 'dragged' to be placed in a different position, there + is a region that follows along the column header area to indicate where the + column will be dropped. This region can be styled using the .column-drag-header + name. */ +.table-view .column-drag-header, +.tree-table-view .column-drag-header { + -fx-background: -fx-accent; + -fx-background-color: -fx-selection-bar; + -fx-border-color: transparent; + -fx-opacity: 0.6; +} +/* Semi-transparent overlay to indicate the column that is currently being moved */ +.table-view .column-overlay, +.tree-table-view .column-overlay { + -fx-background-color: darkgray; + -fx-opacity: 0.3; +} +/* Header Sort Arrows */ +.table-view /*> column-header-background > nested-column-header >*/ .arrow, +.tree-table-view /*> column-header-background > nested-column-header >*/ .arrow { + -fx-background-color: -fx-mark-color; + -fx-padding: 0.25em 0.3125em 0.25em 0.3125em; /* 3 3.75 3 3.75 */ + -fx-shape: "M 0 0 h 7 l -3.5 4 z"; +} +/* This is shown when the table has no rows and/or no columns. */ +.table-view .empty-table, +.tree-table-view .empty-table { + -fx-background-color: white; + -fx-font-size: 1.166667em; /* 14pt - 2 more than the default font */ +} + +/******************************************************************************* + * * + * Table Cells * + * * + ******************************************************************************/ + +.check-box-table-cell { + -fx-alignment: center; + -fx-padding: 0; +} +.check-box-table-cell > .check-box { + -fx-font-size: 0.8em; + -fx-opacity: 1; + -fx-padding: 0 0 1 0; +} +.check-box-table-cell > .check-box > .box { + -fx-background-color: -fx-outer-border, -fx-background; + -fx-background-insets: 0,1; +} +.check-box-table-cell > .check-box:selected > .box > .mark { + -fx-background-color: -fx-text-background-color; + -fx-background-insets: 0; +} +.table-view:focused > .virtual-flow > .clipped-container > .sheet > .table-row-cell:filled > .check-box-table-cell:selected > .check-box > .box, +.tree-table-view:focused > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell:filled > .check-box-table-cell:selected > .check-box > .box, +.table-view:focused > .virtual-flow > .clipped-container > .sheet > .table-row-cell:filled:selected > .check-box-table-cell > .check-box > .box, +.tree-table-view:focused > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell:filled:selected > .check-box-table-cell > .check-box > .box { + -fx-background-color: derive(-fx-accent,40%), -fx-background; +} + +/******************************************************************************* + * * + * TreeTableView * + * * + * Note: A lot of the CSS for TreeTableView is included with the TreeView and * + * TableView CSS styles elsewhere in modena.css (as they are the same, just * + * targeting different CSS style classes). * + ******************************************************************************/ + +.tree-table-row-cell { + -fx-background: -fx-control-inner-background; + -fx-background-color: -fx-background; + -fx-padding: 0; + -fx-text-fill: -fx-text-background-color; + -fx-indent: 1em; +} +.tree-table-cell { + /* tree-table-cell needs slightly different padding to make the text sit at + the right height for the arrow */ + -fx-padding: 0.25em 0.166667em 0.083em 0.166667em; /* 3 2 1 2 , plus border adds 1px */ + -fx-background-color: null; + -fx-border-color: transparent -fx-table-cell-border-color transparent transparent; + -fx-cell-size: 2.0em; /* 24 */ + -fx-text-fill: -fx-text-background-color; +} + +/******************************************************************************* + * * + * Tooltip * + * * + ******************************************************************************/ + +.tooltip { + -fx-background: rgba(30,30,30); + -fx-text-fill: white; + -fx-background-color: rgba(30,30,30,0.8); + -fx-background-radius: 6px; + -fx-background-insets: 0; + -fx-padding: 0.667em 0.75em 0.667em 0.75em; /* 10px */ + -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.5) , 10, 0.0 , 0 , 3 ); + -fx-font-size: 0.85em; +} + +/******************************************************************************* + * * + * Charts * + * * + ******************************************************************************/ + +.chart { + -fx-padding: 5px; +} +.chart-content { + -fx-padding: 10px; +} +.chart-title { + -fx-font-size: 1.4em; +} +.chart-legend { + -fx-background-color: -fx-shadow-highlight-color, + linear-gradient(to bottom, derive(-fx-background, -10%), derive(-fx-background, -5%)), + linear-gradient(from 0px 0px to 0px 4px, derive(-fx-background, -4%), derive(-fx-background, 10%)); + -fx-background-insets: 0 0 -1 0, 0,1; + -fx-background-radius: 4,4,3; + -fx-padding: 6px; +} + +/******************************************************************************* + * * + * Axis * + * * + ******************************************************************************/ + +.axis { + AXIS_COLOR: derive(-fx-background,-20%); + -fx-tick-label-font-size: 0.833333em; /* 10px */ + -fx-tick-label-fill: derive(-fx-text-background-color, 30%); +} +.axis:top { + -fx-border-color: transparent transparent AXIS_COLOR transparent; +} +.axis:right { + -fx-border-color: transparent transparent transparent AXIS_COLOR; +} +.axis:bottom { + -fx-border-color: AXIS_COLOR transparent transparent transparent; +} +.axis:left { + -fx-border-color: transparent AXIS_COLOR transparent transparent; +} +.axis:top > .axis-label, +.axis:left > .axis-label { + -fx-padding: 0 0 4px 0; +} +.axis:bottom > .axis-label, +.axis:right > .axis-label { + -fx-padding: 4px 0 0 0; +} +.axis-tick-mark, +.axis-minor-tick-mark { + -fx-fill: null; + -fx-stroke: AXIS_COLOR; +} + +/******************************************************************************* + * * + * ChartPlot * + * * + ******************************************************************************/ + +.chart-vertical-grid-lines { + -fx-stroke: derive(-fx-background,-10%); + -fx-stroke-dash-array: 0.25em, 0.25em; +} +.chart-horizontal-grid-lines { + -fx-stroke: derive(-fx-background,-10%); + -fx-stroke-dash-array: 0.25em, 0.25em; +} +.chart-alternative-column-fill { + -fx-fill: null; + -fx-stroke: null; +} +.chart-alternative-row-fill { + -fx-fill: null; + -fx-stroke: null; +} +.chart-vertical-zero-line, +.chart-horizontal-zero-line { + -fx-stroke: derive(-fx-text-background-color, 40%); +} + +/******************************************************************************* + * * + * ScatterChart * + * * + ******************************************************************************/ + +.chart-symbol { /* solid circle */ + -fx-background-color: CHART_COLOR_1; + -fx-background-radius: 5px; + -fx-padding: 5px; +} +.default-color1.chart-symbol { /* solid square */ + -fx-background-color: CHART_COLOR_2; + -fx-background-radius: 0; +} +.default-color2.chart-symbol { /* solid diamond */ + -fx-background-color: CHART_COLOR_3; + -fx-background-radius: 0; + -fx-padding: 7px 5px 7px 5px; + -fx-shape: "M5,0 L10,9 L5,18 L0,9 Z"; +} +.default-color3.chart-symbol { /* cross */ + -fx-background-color: CHART_COLOR_4; + -fx-background-radius: 0; + -fx-background-insets: 0; + -fx-shape: "M2,0 L5,4 L8,0 L10,0 L10,2 L6,5 L10,8 L10,10 L8,10 L5,6 L2,10 L0,10 L0,8 L4,5 L0,2 L0,0 Z"; +} +.default-color4.chart-symbol { /* solid triangle */ + -fx-background-color: CHART_COLOR_5; + -fx-background-radius: 0; + -fx-background-insets: 0; + -fx-shape: "M5,0 L10,8 L0,8 Z"; +} +.default-color5.chart-symbol { /* hollow circle */ + -fx-background-color: CHART_COLOR_6, white; + -fx-background-insets: 0, 2; + -fx-background-radius: 5px; + -fx-padding: 5px; +} +.default-color6.chart-symbol { /* hollow square */ + -fx-background-color: CHART_COLOR_7, white; + -fx-background-insets: 0, 2; + -fx-background-radius: 0; +} +.default-color7.chart-symbol { /* hollow diamond */ + -fx-background-color: CHART_COLOR_8, white; + -fx-background-radius: 0; + -fx-background-insets: 0, 2.5; + -fx-padding: 7px 5px 7px 5px; + -fx-shape: "M5,0 L10,9 L5,18 L0,9 Z"; +} + +/******************************************************************************* + * * + * LineChart * + * * + ******************************************************************************/ + +.chart-line-symbol { + -fx-background-color: CHART_COLOR_1, white; + -fx-background-insets: 0, 2; + -fx-background-radius: 5px; + -fx-padding: 5px; +} +.chart-series-line { + -fx-stroke: CHART_COLOR_1; + -fx-stroke-width: 3px; +} +.default-color0.chart-line-symbol { -fx-background-color: CHART_COLOR_1, white; } +.default-color1.chart-line-symbol { -fx-background-color: CHART_COLOR_2, white; } +.default-color2.chart-line-symbol { -fx-background-color: CHART_COLOR_3, white; } +.default-color3.chart-line-symbol { -fx-background-color: CHART_COLOR_4, white; } +.default-color4.chart-line-symbol { -fx-background-color: CHART_COLOR_5, white; } +.default-color5.chart-line-symbol { -fx-background-color: CHART_COLOR_6, white; } +.default-color6.chart-line-symbol { -fx-background-color: CHART_COLOR_7, white; } +.default-color7.chart-line-symbol { -fx-background-color: CHART_COLOR_8, white; } +.default-color0.chart-series-line { -fx-stroke: CHART_COLOR_1; } +.default-color1.chart-series-line { -fx-stroke: CHART_COLOR_2; } +.default-color2.chart-series-line { -fx-stroke: CHART_COLOR_3; } +.default-color3.chart-series-line { -fx-stroke: CHART_COLOR_4; } +.default-color4.chart-series-line { -fx-stroke: CHART_COLOR_5; } +.default-color5.chart-series-line { -fx-stroke: CHART_COLOR_6; } +.default-color6.chart-series-line { -fx-stroke: CHART_COLOR_7; } +.default-color7.chart-series-line { -fx-stroke: CHART_COLOR_8; } + +/******************************************************************************* + * * + * AreaChart * + * * + ******************************************************************************/ + +.chart-area-symbol { + -fx-background-color: CHART_COLOR_1, white; + -fx-background-insets: 0, 1; + -fx-background-radius: 4px; /* makes sure this remains circular */ + -fx-padding: 3px; +} +.default-color0.chart-area-symbol { -fx-background-color: CHART_COLOR_1, white; } +.default-color1.chart-area-symbol { -fx-background-color: CHART_COLOR_2, white; } +.default-color2.chart-area-symbol { -fx-background-color: CHART_COLOR_3, white; } +.default-color3.chart-area-symbol { -fx-background-color: CHART_COLOR_4, white; } +.default-color4.chart-area-symbol { -fx-background-color: CHART_COLOR_5, white; } +.default-color5.chart-area-symbol { -fx-background-color: CHART_COLOR_6, white; } +.default-color6.chart-area-symbol { -fx-background-color: CHART_COLOR_7, white; } +.default-color7.chart-area-symbol { -fx-background-color: CHART_COLOR_8, white; } +.chart-series-area-line { + -fx-stroke: CHART_COLOR_1; + -fx-stroke-width: 1px; +} +.default-color0.chart-series-area-line { -fx-stroke: CHART_COLOR_1; } +.default-color1.chart-series-area-line { -fx-stroke: CHART_COLOR_2; } +.default-color2.chart-series-area-line { -fx-stroke: CHART_COLOR_3; } +.default-color3.chart-series-area-line { -fx-stroke: CHART_COLOR_4; } +.default-color4.chart-series-area-line { -fx-stroke: CHART_COLOR_5; } +.default-color5.chart-series-area-line { -fx-stroke: CHART_COLOR_6; } +.default-color6.chart-series-area-line { -fx-stroke: CHART_COLOR_7; } +.default-color7.chart-series-area-line { -fx-stroke: CHART_COLOR_8; } +.chart-series-area-fill { + -fx-stroke: null; + -fx-fill: CHART_COLOR_1_TRANS_20; +} +.default-color0.chart-series-area-fill { -fx-fill: CHART_COLOR_1_TRANS_20; } +.default-color1.chart-series-area-fill { -fx-fill: CHART_COLOR_2_TRANS_20; } +.default-color2.chart-series-area-fill { -fx-fill: CHART_COLOR_3_TRANS_20; } +.default-color3.chart-series-area-fill { -fx-fill: CHART_COLOR_4_TRANS_20; } +.default-color4.chart-series-area-fill { -fx-fill: CHART_COLOR_5_TRANS_20; } +.default-color5.chart-series-area-fill { -fx-fill: CHART_COLOR_6_TRANS_20; } +.default-color6.chart-series-area-fill { -fx-fill: CHART_COLOR_7_TRANS_20; } +.default-color7.chart-series-area-fill { -fx-fill: CHART_COLOR_8_TRANS_20; } +.area-legend-symbol { + -fx-padding: 6px; + -fx-background-radius: 6px; /* makes sure this remains circular */ + -fx-background-insets: 0, 3; +} + +/******************************************************************************* + * * + * BubbleChart * + * * + ******************************************************************************/ + +.bubble-legend-symbol { + -fx-background-radius: 8px; + -fx-padding: 8px; +} +.chart-bubble { + -fx-bubble-fill: CHART_COLOR_1_TRANS_70; + -fx-background-color: radial-gradient(center 50% 50%, radius 80%, derive(-fx-bubble-fill,20%), derive(-fx-bubble-fill,-30%)); +} +.default-color0.chart-bubble { -fx-bubble-fill: CHART_COLOR_1_TRANS_70; } +.default-color1.chart-bubble { -fx-bubble-fill: CHART_COLOR_2_TRANS_70; } +.default-color2.chart-bubble { -fx-bubble-fill: CHART_COLOR_3_TRANS_70; } +.default-color3.chart-bubble { -fx-bubble-fill: CHART_COLOR_4_TRANS_70; } +.default-color4.chart-bubble { -fx-bubble-fill: CHART_COLOR_5_TRANS_70; } +.default-color5.chart-bubble { -fx-bubble-fill: CHART_COLOR_6_TRANS_70; } +.default-color6.chart-bubble { -fx-bubble-fill: CHART_COLOR_7_TRANS_70; } +.default-color7.chart-bubble { -fx-bubble-fill: CHART_COLOR_8_TRANS_70; } + +/******************************************************************************* + * * + * BarChart * + * * + ******************************************************************************/ + +.chart-bar { + -fx-bar-fill: CHART_COLOR_1; + -fx-background-color: linear-gradient(to right, + derive(-fx-bar-fill, -4%), + derive(-fx-bar-fill, -1%), + derive(-fx-bar-fill, 0%), + derive(-fx-bar-fill, -1%), + derive(-fx-bar-fill, -6%) + ); + -fx-background-insets: 0; +} +.chart-bar.negative { + -fx-background-insets: 1 0 0 0; +} +.bar-chart:horizontal .chart-bar { + -fx-background-insets: 0 0 0 1; +} +.bar-chart:horizontal .chart-bar, +.stacked-bar-chart:horizontal .chart-bar { + -fx-background-color: linear-gradient(to bottom, + derive(-fx-bar-fill, -4%), + derive(-fx-bar-fill, -1%), + derive(-fx-bar-fill, 0%), + derive(-fx-bar-fill, -1%), + derive(-fx-bar-fill, -6%) + ); +} +.default-color0.chart-bar { -fx-bar-fill: CHART_COLOR_1; } +.default-color1.chart-bar { -fx-bar-fill: CHART_COLOR_2; } +.default-color2.chart-bar { -fx-bar-fill: CHART_COLOR_3; } +.default-color3.chart-bar { -fx-bar-fill: CHART_COLOR_4; } +.default-color4.chart-bar { -fx-bar-fill: CHART_COLOR_5; } +.default-color5.chart-bar { -fx-bar-fill: CHART_COLOR_6; } +.default-color6.chart-bar { -fx-bar-fill: CHART_COLOR_7; } +.default-color7.chart-bar { -fx-bar-fill: CHART_COLOR_8; } +.bar-legend-symbol { + -fx-padding: 8px; +} + +/******************************************************************************* + * * + * PieChart * + * * + ******************************************************************************/ + +.chart-pie { + -fx-pie-color: CHART_COLOR_1; + -fx-background-color: radial-gradient(radius 100%, derive(-fx-pie-color,20%), derive(-fx-pie-color,-10%)); + -fx-background-insets: 1; + -fx-border-color: -fx-background; +} +.chart-pie-label { + -fx-padding: 3px; +} +.chart-pie-label-line { + -fx-stroke: derive(-fx-background,-20%); +} +.default-color0.chart-pie { -fx-pie-color: CHART_COLOR_1; } +.default-color1.chart-pie { -fx-pie-color: CHART_COLOR_2; } +.default-color2.chart-pie { -fx-pie-color: CHART_COLOR_3; } +.default-color3.chart-pie { -fx-pie-color: CHART_COLOR_4; } +.default-color4.chart-pie { -fx-pie-color: CHART_COLOR_5; } +.default-color5.chart-pie { -fx-pie-color: CHART_COLOR_6; } +.default-color6.chart-pie { -fx-pie-color: CHART_COLOR_7; } +.default-color7.chart-pie { -fx-pie-color: CHART_COLOR_8; } +.negative.chart-pie { + -fx-pie-color: transparent; + -fx-background-color: white; +} +.pie-legend-symbol.chart-pie { + -fx-background-radius: 8px; + -fx-padding: 8px; + -fx-border-color: null; +} + +/******************************************************************************* + * * + * Combinations * + * * + * This section is for special handling of when one control is nested inside * + * another control. There are many cases where we would end up with ugly * + * double borders that are fixed here. * + * * + ******************************************************************************/ + +.tab-pane > * > .table-view, +.tab-pane > * > .tree-table-view, +.tab-pane > * > .list-view, +.tab-pane > * > .tree-view, +.tab-pane > * > .scroll-pane, +.tab-pane > * > .split-pane, +.tab-pane > * > .text-area, +.tab-pane > * > .html-editor, +.split-pane > * > .tab-pane, +.split-pane > * > .table-view, +.split-pane > * > .tree-table-view, +.split-pane > * > .list-view, +.split-pane > * > .tree-view, +.split-pane > * > .scroll-pane, +.split-pane > * > .split-pane, +.split-pane > * > .text-area, +.split-pane > * > .html-editor { + -fx-background-insets: 0, 0; + -fx-padding: 0; + } +.tab-pane.floating > * > .table-view, +.tab-pane.floating > * > .tree-table-view, +.tab-pane.floating > * > .list-view, +.tab-pane.floating > * > .tree-view, +.tab-pane.floating > * > .scroll-pane, +.tab-pane.floating > * > .split-pane, +.tab-pane.floating > * > .text-area, +.tab-pane.floating > * > .html-editor { + -fx-background-insets: 0, 0; + -fx-padding: -1; +} +.split-pane > * > .accordion > .titled-pane > *.content { + -fx-border-color: null; + -fx-border-insets: 0; +} +.split-pane > * > .accordion > .titled-pane > .title { + -fx-background-insets: 0,1 0 1 0, 2 1 2 1; +} +.split-pane > * > .accordion > .first-titled-pane > .title { + -fx-background-insets: 0,0 0 1 0, 1 1 2 1; +} +.split-pane > * > .accordion > .titled-pane:collapsed > .title { + -fx-background-insets: 0,1 0 0 0, 2 1 1 1; +} +.split-pane > * > .accordion > .first-titled-pane:collapsed > .title { + -fx-background-insets: 0,0 0 0 0, 1 1 1 1; +} +.titled-pane > * > * > .split-pane, +.titled-pane > * > * > .text-area, +.titled-pane > * > * > .html-editor, +.titled-pane > * > * > .list-view, +.titled-pane > * > * > .tree-view, +.titled-pane > * > * > .table-view, +.titled-pane > * > * > .tree-table-view, +.titled-pane > * > * > .scroll-pane { + -fx-background-color: null; + -fx-background-insets: 0, 0; + -fx-padding: 0; +} +.titled-pane > * > * > AnchorPane, +.titled-pane > * > * > BorderPane, +.titled-pane > * > * > FlowPane, +.titled-pane > * > * > GridPane, +.titled-pane > * > * > HBox, +.titled-pane > * > * > Pane, +.titled-pane > * > * > StackPane, +.titled-pane > * > * > TilePane, +.titled-pane > * > * > VBox { + -fx-padding: 0.8em; +} + +/******************************************************************************* + * * + * DatePicker * + * * + ******************************************************************************/ + +.date-picker > .arrow-button > .arrow { + -fx-shape: "M0,0v9h9V0H0z M2,8H1V7h1V8z M2,6H1V5h1V6z M2,4H1V3h1V4z M4,8H3V7h1V8z M4,6H3V5h1V6z M4,4H3V3h1V4z M6,8H5V7h1V8z M6,6H5 V5h1V6z M6,4H5V3h1V4z M8,8H7V7h1V8z M8,6H7V5h1V6z M8,4H7V3h1V4z"; + -fx-background-color: -fx-mark-highlight-color, -fx-mark-color; + -fx-background-insets: 1 0 -1 0, 0; + -fx-padding: 0.416667em 0.416667em 0.333333em 0.333333em; /* 5 5 4 4 */ + -fx-scale-shape: true; +} + +.date-picker-popup { + -fx-background-color: + linear-gradient(to bottom, + derive(-fx-color,-17%), + derive(-fx-color,-30%) + ), + -fx-control-inner-background; + -fx-background-insets: 0, 1; + -fx-background-radius: 0; + -fx-alignment: CENTER; /* VBox */ + -fx-spacing: 0; /* VBox */ + -fx-padding: 0.083333em; /* 1 1 1 1 */ + -fx-effect: dropshadow( gaussian , rgba(0,0,0,0.2) , 12, 0.0 , 0 , 8 ); +} +.date-picker-popup > .month-year-pane { + -fx-padding: 0.588883em 0.5em 0.666667em 0.5em; /* 7 6 8 6 */ + -fx-background-color: derive(-fx-box-border,30%), linear-gradient(to bottom, derive(-fx-base,-3%), derive(-fx-base,5%) 50%, derive(-fx-base,-3%)); + -fx-background-insets: 0 0 0 0, 0 0 1 0; +} +.date-picker-popup > * > .spinner { + -fx-spacing: 0.25em; /* 3 */ + -fx-alignment: CENTER; + -fx-fill-height: false; +} +.date-picker-popup > * > .spinner > .button { + -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color; + -fx-background-insets: 0, 1, 2; + -fx-color: transparent; + -fx-background-radius: 0; +} +.date-picker-popup > * > .spinner > .button:focused { + -fx-background-color: -fx-focus-color, -fx-inner-border, -fx-body-color, -fx-faint-focus-color, -fx-body-color; + -fx-color: -fx-hover-base; + -fx-background-insets: -0.2, 1, 2, -1.4, 2.6; +} +.date-picker-popup > * > .spinner > .button:hover { + -fx-color: -fx-hover-base; +} +.date-picker-popup > * > .spinner > .button:armed { + -fx-color: -fx-pressed-base; +} +.date-picker-popup > * > .spinner > .left-button { + -fx-padding: 0 0.333333em 0 0.25em; /* 0 4 0 3 */ +} +.date-picker-popup > * > .spinner > .right-button { + -fx-padding: 0 0.25em 0 0.333333em; /* 0 3 0 4 */ +} +.date-picker-popup > * > .spinner > .button > .left-arrow, +.date-picker-popup > * > .spinner > .button > .right-arrow { + -fx-background-color: -fx-mark-highlight-color, derive(-fx-base,-45%); + -fx-background-insets: 1 0 -1 0, 0; + -fx-padding: 0.333333em 0.166667em 0.333333em 0.166667em; /* 4 2 4 2 */ + -fx-effect: dropshadow(two-pass-box , -fx-shadow-highlight-color, 1, 0.0 , 0, 1.4); +} +.date-picker-popup > * > .spinner > .button:hover > .left-arrow, +.date-picker-popup > * > .spinner > .button:hover > .right-arrow { + -fx-background-color: -fx-mark-highlight-color, derive(-fx-base,-50%); +} +.date-picker-popup > * > .spinner > .button:pressed > .left-arrow, +.date-picker-popup > * > .spinner > .button:pressed > .right-arrow { + -fx-background-color: -fx-mark-highlight-color, derive(-fx-base,-55%); +} +.date-picker-popup > * > .spinner > .button > .left-arrow { + -fx-padding: 0.333333em 0.25em 0.333333em 0.166667em; /* 4 3 4 2 */ + -fx-shape: "M5.997,5.072L5.995,6.501l-2.998-4l2.998-4l0.002,1.43l-1.976,2.57L5.997,5.072z"; + -fx-scale-shape: true; +} +.date-picker-popup > * > .spinner > .button > .right-arrow { + -fx-padding: 0.333333em 0.25em 0.333333em 0.166667em; /* 4 3 4 2 */ + -fx-shape: "M2.998-0.07L3-1.499l2.998,4L3,6.501l-0.002-1.43l1.976-2.57L2.998-0.07z"; + -fx-scale-shape: true; +} +.date-picker-popup > * > .spinner > .label { + -fx-alignment: CENTER; +} +.date-picker-popup > .month-year-pane > .secondary-label { + -fx-alignment: BASELINE_CENTER; + -fx-padding: 0.5em 0 0 0; /* 6 0 0 0 */ + -fx-text-fill: #f3622d; +} + +.date-picker-popup > .calendar-grid { + -fx-background-color: derive(-fx-selection-bar-non-focused, 60%); + /*-fx-background-insets: 1 0 0 0;*/ + -fx-padding: 0; +} +.date-picker-popup > * > .date-cell { + -fx-background-color: transparent; + -fx-background-insets: 1, 2; + -fx-padding: 0; + -fx-alignment: BASELINE_CENTER; + -fx-opacity: 1.0; +} +.date-picker-popup > * > .day-name-cell, +.date-picker-popup > * > .week-number-cell { + -fx-font-size: 0.916667em; +} +.date-picker-popup > * > .week-number-cell { + -fx-padding: 0.333333em 0.583333em 0.333333em 0.583333em; /* 4 7 4 7 */ + -fx-border-color: -fx-control-inner-background; + -fx-border-width: 1px; + -fx-background: -fx-control-inner-background; + -fx-background-color: -fx-background; + -fx-text-fill: -fx-accent; +} +.date-picker-popup > * > .day-cell { + -fx-padding: 0.333333em 0.583333em 0.333333em 0.583333em; /* 4 7 4 7 */ + -fx-border-color: derive(-fx-selection-bar-non-focused, 60%); + -fx-border-width: 1px; + -fx-font-size: 1em; + -fx-background: -fx-control-inner-background; + -fx-background-color: -fx-background; + -fx-text-fill: -fx-text-background-color; +} +.date-picker-popup > * > .hijrah-day-cell { + -fx-alignment: TOP_LEFT; + -fx-padding: 0.083333em 0.333333em 0.083333em 0.333333em; /* 1 4 1 4 */ + -fx-cell-size: 2.75em; +} +.date-picker-popup > * > .day-cell > .secondary-text { + -fx-fill: #f3622d; +} +.date-picker-popup > * > .today { + -fx-background-color: -fx-control-inner-background, derive(-fx-selection-bar-non-focused, -20%), -fx-control-inner-background; + -fx-background-insets: 1, 2, 3; +} +.date-picker-popup > * > .day-cell:hover, +.date-picker-popup > * > .selected, +.date-picker-popup > * > .previous-month.selected, +.date-picker-popup > * > .next-month.selected { + -fx-background: -fx-selection-bar; +} +.date-picker-popup > * > .previous-month:hover, +.date-picker-popup > * > .next-month:hover { + -fx-background: -fx-selection-bar-non-focused; +} +.date-picker-popup > * > .today:hover, +.date-picker-popup > * > .today.selected { + -fx-background-color: -fx-selection-bar, derive(-fx-selection-bar-non-focused, -20%),-fx-selection-bar; +} +.date-picker-popup > * > .day-cell:focused, +.date-picker-popup > * > .today:focused { + -fx-background-color: -fx-control-inner-background, -fx-cell-focus-inner-border, -fx-control-inner-background; + -fx-background-insets: 1, 2, 3; +} +.date-picker-popup > * > .day-cell:focused:hover, +.date-picker-popup > * > .today:focused:hover, +.date-picker-popup > * > .selected:focused, +.date-picker-popup > * > .today.selected:focused { + -fx-background-color: -fx-selection-bar, -fx-cell-focus-inner-border, -fx-selection-bar; +} +.date-picker-popup > * > .previous-month, +.date-picker-popup > * > .next-month { + -fx-background: derive(-fx-control-inner-background, -4%); +} +.date-picker-popup > * > .day-cell:hover > .secondary-text, +.date-picker-popup > * > .previous-month > .secondary-text, +.date-picker-popup > * > .next-month > .secondary-text, +.date-picker-popup > * > .selected > .secondary-text { + -fx-fill: -fx-text-background-color; +} +.date-picker-popup > * > .previous-month.today, +.date-picker-popup > * > .next-month.today { + -fx-background-color: derive(-fx-control-inner-background, -4%), derive(-fx-selection-bar-non-focused, -20%), derive(-fx-control-inner-background, -4%); +} + +.date-picker-popup > * > .previous-month.today:hover, +.date-picker-popup > * > .next-month.today:hover { + -fx-background-color: -fx-selection-bar-non-focused, derive(-fx-selection-bar-non-focused, -20%), -fx-selection-bar-non-focused; +} diff --git a/src/main/java/io/bitsquare/msg/Message.java b/gui/src/main/java/io/bitsquare/msg/Message.java similarity index 100% rename from src/main/java/io/bitsquare/msg/Message.java rename to gui/src/main/java/io/bitsquare/msg/Message.java diff --git a/src/main/java/io/bitsquare/msg/MessageBroker.java b/gui/src/main/java/io/bitsquare/msg/MessageBroker.java similarity index 100% rename from src/main/java/io/bitsquare/msg/MessageBroker.java rename to gui/src/main/java/io/bitsquare/msg/MessageBroker.java diff --git a/src/main/java/io/bitsquare/msg/MessageModule.java b/gui/src/main/java/io/bitsquare/msg/MessageModule.java similarity index 100% rename from src/main/java/io/bitsquare/msg/MessageModule.java rename to gui/src/main/java/io/bitsquare/msg/MessageModule.java diff --git a/src/main/java/io/bitsquare/msg/MessageService.java b/gui/src/main/java/io/bitsquare/msg/MessageService.java similarity index 100% rename from src/main/java/io/bitsquare/msg/MessageService.java rename to gui/src/main/java/io/bitsquare/msg/MessageService.java diff --git a/src/main/java/io/bitsquare/msg/listeners/ArbitratorListener.java b/gui/src/main/java/io/bitsquare/msg/listeners/ArbitratorListener.java similarity index 100% rename from src/main/java/io/bitsquare/msg/listeners/ArbitratorListener.java rename to gui/src/main/java/io/bitsquare/msg/listeners/ArbitratorListener.java diff --git a/src/main/java/io/bitsquare/msg/listeners/GetPeerAddressListener.java b/gui/src/main/java/io/bitsquare/msg/listeners/GetPeerAddressListener.java similarity index 100% rename from src/main/java/io/bitsquare/msg/listeners/GetPeerAddressListener.java rename to gui/src/main/java/io/bitsquare/msg/listeners/GetPeerAddressListener.java diff --git a/src/main/java/io/bitsquare/msg/listeners/IncomingMessageListener.java b/gui/src/main/java/io/bitsquare/msg/listeners/IncomingMessageListener.java similarity index 100% rename from src/main/java/io/bitsquare/msg/listeners/IncomingMessageListener.java rename to gui/src/main/java/io/bitsquare/msg/listeners/IncomingMessageListener.java diff --git a/src/main/java/io/bitsquare/msg/listeners/OutgoingMessageListener.java b/gui/src/main/java/io/bitsquare/msg/listeners/OutgoingMessageListener.java similarity index 100% rename from src/main/java/io/bitsquare/msg/listeners/OutgoingMessageListener.java rename to gui/src/main/java/io/bitsquare/msg/listeners/OutgoingMessageListener.java diff --git a/src/main/java/io/bitsquare/msg/listeners/TakeOfferRequestListener.java b/gui/src/main/java/io/bitsquare/msg/listeners/TakeOfferRequestListener.java similarity index 100% rename from src/main/java/io/bitsquare/msg/listeners/TakeOfferRequestListener.java rename to gui/src/main/java/io/bitsquare/msg/listeners/TakeOfferRequestListener.java diff --git a/src/main/java/io/bitsquare/msg/tomp2p/BootstrappedPeerBuilder.java b/gui/src/main/java/io/bitsquare/msg/tomp2p/BootstrappedPeerBuilder.java similarity index 100% rename from src/main/java/io/bitsquare/msg/tomp2p/BootstrappedPeerBuilder.java rename to gui/src/main/java/io/bitsquare/msg/tomp2p/BootstrappedPeerBuilder.java diff --git a/src/main/java/io/bitsquare/msg/tomp2p/TomP2PMessageModule.java b/gui/src/main/java/io/bitsquare/msg/tomp2p/TomP2PMessageModule.java similarity index 100% rename from src/main/java/io/bitsquare/msg/tomp2p/TomP2PMessageModule.java rename to gui/src/main/java/io/bitsquare/msg/tomp2p/TomP2PMessageModule.java diff --git a/src/main/java/io/bitsquare/msg/tomp2p/TomP2PMessageService.java b/gui/src/main/java/io/bitsquare/msg/tomp2p/TomP2PMessageService.java similarity index 100% rename from src/main/java/io/bitsquare/msg/tomp2p/TomP2PMessageService.java rename to gui/src/main/java/io/bitsquare/msg/tomp2p/TomP2PMessageService.java diff --git a/src/main/java/io/bitsquare/msg/tomp2p/TomP2PNode.java b/gui/src/main/java/io/bitsquare/msg/tomp2p/TomP2PNode.java similarity index 100% rename from src/main/java/io/bitsquare/msg/tomp2p/TomP2PNode.java rename to gui/src/main/java/io/bitsquare/msg/tomp2p/TomP2PNode.java diff --git a/src/main/java/io/bitsquare/network/BootstrapNodes.java b/gui/src/main/java/io/bitsquare/network/BootstrapNodes.java similarity index 100% rename from src/main/java/io/bitsquare/network/BootstrapNodes.java rename to gui/src/main/java/io/bitsquare/network/BootstrapNodes.java diff --git a/src/main/java/io/bitsquare/network/BootstrapState.java b/gui/src/main/java/io/bitsquare/network/BootstrapState.java similarity index 100% rename from src/main/java/io/bitsquare/network/BootstrapState.java rename to gui/src/main/java/io/bitsquare/network/BootstrapState.java diff --git a/src/main/java/io/bitsquare/network/ClientNode.java b/gui/src/main/java/io/bitsquare/network/ClientNode.java similarity index 100% rename from src/main/java/io/bitsquare/network/ClientNode.java rename to gui/src/main/java/io/bitsquare/network/ClientNode.java diff --git a/src/main/java/io/bitsquare/network/ConnectionType.java b/gui/src/main/java/io/bitsquare/network/ConnectionType.java similarity index 100% rename from src/main/java/io/bitsquare/network/ConnectionType.java rename to gui/src/main/java/io/bitsquare/network/ConnectionType.java diff --git a/src/main/java/io/bitsquare/network/NetworkException.java b/gui/src/main/java/io/bitsquare/network/NetworkException.java similarity index 100% rename from src/main/java/io/bitsquare/network/NetworkException.java rename to gui/src/main/java/io/bitsquare/network/NetworkException.java diff --git a/src/main/java/io/bitsquare/network/Node.java b/gui/src/main/java/io/bitsquare/network/Node.java similarity index 100% rename from src/main/java/io/bitsquare/network/Node.java rename to gui/src/main/java/io/bitsquare/network/Node.java diff --git a/src/main/java/io/bitsquare/network/Peer.java b/gui/src/main/java/io/bitsquare/network/Peer.java similarity index 100% rename from src/main/java/io/bitsquare/network/Peer.java rename to gui/src/main/java/io/bitsquare/network/Peer.java diff --git a/src/main/java/io/bitsquare/network/tomp2p/TomP2PPeer.java b/gui/src/main/java/io/bitsquare/network/tomp2p/TomP2PPeer.java similarity index 100% rename from src/main/java/io/bitsquare/network/tomp2p/TomP2PPeer.java rename to gui/src/main/java/io/bitsquare/network/tomp2p/TomP2PPeer.java diff --git a/src/main/java/io/bitsquare/offer/Direction.java b/gui/src/main/java/io/bitsquare/offer/Direction.java similarity index 100% rename from src/main/java/io/bitsquare/offer/Direction.java rename to gui/src/main/java/io/bitsquare/offer/Direction.java diff --git a/src/main/java/io/bitsquare/offer/Offer.java b/gui/src/main/java/io/bitsquare/offer/Offer.java similarity index 100% rename from src/main/java/io/bitsquare/offer/Offer.java rename to gui/src/main/java/io/bitsquare/offer/Offer.java diff --git a/src/main/java/io/bitsquare/offer/OfferModule.java b/gui/src/main/java/io/bitsquare/offer/OfferModule.java similarity index 100% rename from src/main/java/io/bitsquare/offer/OfferModule.java rename to gui/src/main/java/io/bitsquare/offer/OfferModule.java diff --git a/src/main/java/io/bitsquare/offer/OfferRepository.java b/gui/src/main/java/io/bitsquare/offer/OfferRepository.java similarity index 100% rename from src/main/java/io/bitsquare/offer/OfferRepository.java rename to gui/src/main/java/io/bitsquare/offer/OfferRepository.java diff --git a/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferModule.java b/gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferModule.java similarity index 100% rename from src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferModule.java rename to gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferModule.java diff --git a/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferRepository.java b/gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferRepository.java similarity index 100% rename from src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferRepository.java rename to gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferRepository.java diff --git a/src/main/java/io/bitsquare/persistence/Persistence.java b/gui/src/main/java/io/bitsquare/persistence/Persistence.java similarity index 100% rename from src/main/java/io/bitsquare/persistence/Persistence.java rename to gui/src/main/java/io/bitsquare/persistence/Persistence.java diff --git a/src/main/java/io/bitsquare/settings/Preferences.java b/gui/src/main/java/io/bitsquare/settings/Preferences.java similarity index 100% rename from src/main/java/io/bitsquare/settings/Preferences.java rename to gui/src/main/java/io/bitsquare/settings/Preferences.java diff --git a/src/main/java/io/bitsquare/trade/Contract.java b/gui/src/main/java/io/bitsquare/trade/Contract.java similarity index 100% rename from src/main/java/io/bitsquare/trade/Contract.java rename to gui/src/main/java/io/bitsquare/trade/Contract.java diff --git a/src/main/java/io/bitsquare/trade/Trade.java b/gui/src/main/java/io/bitsquare/trade/Trade.java similarity index 100% rename from src/main/java/io/bitsquare/trade/Trade.java rename to gui/src/main/java/io/bitsquare/trade/Trade.java diff --git a/src/main/java/io/bitsquare/trade/TradeManager.java b/gui/src/main/java/io/bitsquare/trade/TradeManager.java similarity index 100% rename from src/main/java/io/bitsquare/trade/TradeManager.java rename to gui/src/main/java/io/bitsquare/trade/TradeManager.java diff --git a/src/main/java/io/bitsquare/trade/TradeModule.java b/gui/src/main/java/io/bitsquare/trade/TradeModule.java similarity index 100% rename from src/main/java/io/bitsquare/trade/TradeModule.java rename to gui/src/main/java/io/bitsquare/trade/TradeModule.java diff --git a/src/main/java/io/bitsquare/trade/handlers/TransactionResultHandler.java b/gui/src/main/java/io/bitsquare/trade/handlers/TransactionResultHandler.java similarity index 100% rename from src/main/java/io/bitsquare/trade/handlers/TransactionResultHandler.java rename to gui/src/main/java/io/bitsquare/trade/handlers/TransactionResultHandler.java diff --git a/src/main/java/io/bitsquare/trade/protocol/createoffer/CreateOfferCoordinator.java b/gui/src/main/java/io/bitsquare/trade/protocol/createoffer/CreateOfferCoordinator.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/createoffer/CreateOfferCoordinator.java rename to gui/src/main/java/io/bitsquare/trade/protocol/createoffer/CreateOfferCoordinator.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/TradeMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/TradeMessage.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/TradeMessage.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/TradeMessage.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocol.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocol.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocol.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocol.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocolListener.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocolListener.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocolListener.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocolListener.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/BankTransferInitedMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/BankTransferInitedMessage.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/BankTransferInitedMessage.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/BankTransferInitedMessage.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/DepositTxPublishedMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/DepositTxPublishedMessage.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/DepositTxPublishedMessage.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/DepositTxPublishedMessage.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RequestTakerDepositPaymentMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RequestTakerDepositPaymentMessage.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RequestTakerDepositPaymentMessage.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RequestTakerDepositPaymentMessage.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RespondToIsOfferAvailableMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RespondToIsOfferAvailableMessage.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RespondToIsOfferAvailableMessage.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RespondToIsOfferAvailableMessage.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RespondToTakeOfferRequestMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RespondToTakeOfferRequestMessage.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RespondToTakeOfferRequestMessage.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/messages/RespondToTakeOfferRequestMessage.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/CreateDepositTx.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/CreateDepositTx.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/CreateDepositTx.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/CreateDepositTx.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/HandleTakeOfferRequest.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/HandleTakeOfferRequest.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/HandleTakeOfferRequest.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/HandleTakeOfferRequest.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/RequestTakerDepositPayment.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/RequestTakerDepositPayment.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/RequestTakerDepositPayment.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/RequestTakerDepositPayment.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendDepositTxIdToTaker.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendDepositTxIdToTaker.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendDepositTxIdToTaker.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendDepositTxIdToTaker.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendSignedPayoutTx.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendSignedPayoutTx.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendSignedPayoutTx.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendSignedPayoutTx.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignAndPublishDepositTx.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignAndPublishDepositTx.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignAndPublishDepositTx.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignAndPublishDepositTx.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyAndSignContract.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyAndSignContract.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyAndSignContract.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyAndSignContract.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakeOfferFeePayment.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakeOfferFeePayment.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakeOfferFeePayment.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakeOfferFeePayment.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakerAccount.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakerAccount.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakerAccount.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakerAccount.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/shared/tasks/VerifyPeerAccount.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/shared/tasks/VerifyPeerAccount.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/shared/tasks/VerifyPeerAccount.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/shared/tasks/VerifyPeerAccount.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerTakesOfferProtocol.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerTakesOfferProtocol.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerTakesOfferProtocol.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerTakesOfferProtocol.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerTakesOfferProtocolListener.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerTakesOfferProtocolListener.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerTakesOfferProtocolListener.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerTakesOfferProtocolListener.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/PayoutTxPublishedMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/PayoutTxPublishedMessage.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/PayoutTxPublishedMessage.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/PayoutTxPublishedMessage.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestIsOfferAvailableMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestIsOfferAvailableMessage.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestIsOfferAvailableMessage.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestIsOfferAvailableMessage.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestOffererPublishDepositTxMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestOffererPublishDepositTxMessage.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestOffererPublishDepositTxMessage.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestOffererPublishDepositTxMessage.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestTakeOfferMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestTakeOfferMessage.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestTakeOfferMessage.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/RequestTakeOfferMessage.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/TakeOfferFeePayedMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/TakeOfferFeePayedMessage.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/TakeOfferFeePayedMessage.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/messages/TakeOfferFeePayedMessage.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/CreateAndSignContract.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/CreateAndSignContract.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/CreateAndSignContract.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/CreateAndSignContract.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/GetPeerAddress.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/GetPeerAddress.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/GetPeerAddress.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/GetPeerAddress.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayDeposit.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayDeposit.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayDeposit.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayDeposit.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/RequestTakeOffer.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/RequestTakeOffer.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/RequestTakeOffer.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/RequestTakeOffer.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendPayoutTxToOfferer.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendPayoutTxToOfferer.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendPayoutTxToOfferer.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendPayoutTxToOfferer.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendSignedTakerDepositTxAsHex.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendSignedTakerDepositTxAsHex.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendSignedTakerDepositTxAsHex.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendSignedTakerDepositTxAsHex.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendTakeOfferFeePayedTxId.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendTakeOfferFeePayedTxId.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendTakeOfferFeePayedTxId.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendTakeOfferFeePayedTxId.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOffererAccount.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOffererAccount.java similarity index 100% rename from src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOffererAccount.java rename to gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOffererAccount.java diff --git a/src/main/java/io/bitsquare/user/User.java b/gui/src/main/java/io/bitsquare/user/User.java similarity index 100% rename from src/main/java/io/bitsquare/user/User.java rename to gui/src/main/java/io/bitsquare/user/User.java diff --git a/src/main/java/io/bitsquare/util/DSAKeyUtil.java b/gui/src/main/java/io/bitsquare/util/DSAKeyUtil.java similarity index 100% rename from src/main/java/io/bitsquare/util/DSAKeyUtil.java rename to gui/src/main/java/io/bitsquare/util/DSAKeyUtil.java diff --git a/src/main/java/io/bitsquare/util/DesktopUtil.java b/gui/src/main/java/io/bitsquare/util/DesktopUtil.java similarity index 100% rename from src/main/java/io/bitsquare/util/DesktopUtil.java rename to gui/src/main/java/io/bitsquare/util/DesktopUtil.java diff --git a/src/main/java/io/bitsquare/util/MessageHandler.java b/gui/src/main/java/io/bitsquare/util/MessageHandler.java similarity index 100% rename from src/main/java/io/bitsquare/util/MessageHandler.java rename to gui/src/main/java/io/bitsquare/util/MessageHandler.java diff --git a/src/main/java/io/bitsquare/util/Utilities.java b/gui/src/main/java/io/bitsquare/util/Utilities.java similarity index 100% rename from src/main/java/io/bitsquare/util/Utilities.java rename to gui/src/main/java/io/bitsquare/util/Utilities.java diff --git a/src/main/java/io/bitsquare/util/Validator.java b/gui/src/main/java/io/bitsquare/util/Validator.java similarity index 100% rename from src/main/java/io/bitsquare/util/Validator.java rename to gui/src/main/java/io/bitsquare/util/Validator.java diff --git a/src/main/java/io/bitsquare/util/joptsimple/EnumValueConverter.java b/gui/src/main/java/io/bitsquare/util/joptsimple/EnumValueConverter.java similarity index 100% rename from src/main/java/io/bitsquare/util/joptsimple/EnumValueConverter.java rename to gui/src/main/java/io/bitsquare/util/joptsimple/EnumValueConverter.java diff --git a/src/main/java/io/bitsquare/util/spring/JOptCommandLinePropertySource.java b/gui/src/main/java/io/bitsquare/util/spring/JOptCommandLinePropertySource.java similarity index 100% rename from src/main/java/io/bitsquare/util/spring/JOptCommandLinePropertySource.java rename to gui/src/main/java/io/bitsquare/util/spring/JOptCommandLinePropertySource.java diff --git a/src/main/java/io/bitsquare/util/task/ErrorMessageHandler.java b/gui/src/main/java/io/bitsquare/util/task/ErrorMessageHandler.java similarity index 100% rename from src/main/java/io/bitsquare/util/task/ErrorMessageHandler.java rename to gui/src/main/java/io/bitsquare/util/task/ErrorMessageHandler.java diff --git a/src/main/java/io/bitsquare/util/task/ExceptionHandler.java b/gui/src/main/java/io/bitsquare/util/task/ExceptionHandler.java similarity index 100% rename from src/main/java/io/bitsquare/util/task/ExceptionHandler.java rename to gui/src/main/java/io/bitsquare/util/task/ExceptionHandler.java diff --git a/src/main/java/io/bitsquare/util/task/FaultHandler.java b/gui/src/main/java/io/bitsquare/util/task/FaultHandler.java similarity index 100% rename from src/main/java/io/bitsquare/util/task/FaultHandler.java rename to gui/src/main/java/io/bitsquare/util/task/FaultHandler.java diff --git a/src/main/java/io/bitsquare/util/task/ResultHandler.java b/gui/src/main/java/io/bitsquare/util/task/ResultHandler.java similarity index 100% rename from src/main/java/io/bitsquare/util/task/ResultHandler.java rename to gui/src/main/java/io/bitsquare/util/task/ResultHandler.java diff --git a/src/main/java/viewfx/ViewfxException.java b/gui/src/main/java/viewfx/ViewfxException.java similarity index 100% rename from src/main/java/viewfx/ViewfxException.java rename to gui/src/main/java/viewfx/ViewfxException.java diff --git a/src/main/java/viewfx/model/Activatable.java b/gui/src/main/java/viewfx/model/Activatable.java similarity index 100% rename from src/main/java/viewfx/model/Activatable.java rename to gui/src/main/java/viewfx/model/Activatable.java diff --git a/src/main/java/viewfx/model/DataModel.java b/gui/src/main/java/viewfx/model/DataModel.java similarity index 100% rename from src/main/java/viewfx/model/DataModel.java rename to gui/src/main/java/viewfx/model/DataModel.java diff --git a/src/main/java/viewfx/model/Model.java b/gui/src/main/java/viewfx/model/Model.java similarity index 100% rename from src/main/java/viewfx/model/Model.java rename to gui/src/main/java/viewfx/model/Model.java diff --git a/src/main/java/viewfx/model/ViewModel.java b/gui/src/main/java/viewfx/model/ViewModel.java similarity index 100% rename from src/main/java/viewfx/model/ViewModel.java rename to gui/src/main/java/viewfx/model/ViewModel.java diff --git a/src/main/java/viewfx/model/support/ActivatableWithDelegate.java b/gui/src/main/java/viewfx/model/support/ActivatableWithDelegate.java similarity index 100% rename from src/main/java/viewfx/model/support/ActivatableWithDelegate.java rename to gui/src/main/java/viewfx/model/support/ActivatableWithDelegate.java diff --git a/src/main/java/viewfx/model/support/WithDelegate.java b/gui/src/main/java/viewfx/model/support/WithDelegate.java similarity index 100% rename from src/main/java/viewfx/model/support/WithDelegate.java rename to gui/src/main/java/viewfx/model/support/WithDelegate.java diff --git a/src/main/java/viewfx/view/DefaultPathConvention.java b/gui/src/main/java/viewfx/view/DefaultPathConvention.java similarity index 100% rename from src/main/java/viewfx/view/DefaultPathConvention.java rename to gui/src/main/java/viewfx/view/DefaultPathConvention.java diff --git a/src/main/java/viewfx/view/FxmlView.java b/gui/src/main/java/viewfx/view/FxmlView.java similarity index 100% rename from src/main/java/viewfx/view/FxmlView.java rename to gui/src/main/java/viewfx/view/FxmlView.java diff --git a/src/main/java/viewfx/view/View.java b/gui/src/main/java/viewfx/view/View.java similarity index 100% rename from src/main/java/viewfx/view/View.java rename to gui/src/main/java/viewfx/view/View.java diff --git a/src/main/java/viewfx/view/ViewFactory.java b/gui/src/main/java/viewfx/view/ViewFactory.java similarity index 100% rename from src/main/java/viewfx/view/ViewFactory.java rename to gui/src/main/java/viewfx/view/ViewFactory.java diff --git a/src/main/java/viewfx/view/ViewLoader.java b/gui/src/main/java/viewfx/view/ViewLoader.java similarity index 100% rename from src/main/java/viewfx/view/ViewLoader.java rename to gui/src/main/java/viewfx/view/ViewLoader.java diff --git a/src/main/java/viewfx/view/ViewPath.java b/gui/src/main/java/viewfx/view/ViewPath.java similarity index 100% rename from src/main/java/viewfx/view/ViewPath.java rename to gui/src/main/java/viewfx/view/ViewPath.java diff --git a/src/main/java/viewfx/view/Wizard.java b/gui/src/main/java/viewfx/view/Wizard.java similarity index 100% rename from src/main/java/viewfx/view/Wizard.java rename to gui/src/main/java/viewfx/view/Wizard.java diff --git a/src/main/java/viewfx/view/support/AbstractView.java b/gui/src/main/java/viewfx/view/support/AbstractView.java similarity index 100% rename from src/main/java/viewfx/view/support/AbstractView.java rename to gui/src/main/java/viewfx/view/support/AbstractView.java diff --git a/src/main/java/viewfx/view/support/ActivatableView.java b/gui/src/main/java/viewfx/view/support/ActivatableView.java similarity index 100% rename from src/main/java/viewfx/view/support/ActivatableView.java rename to gui/src/main/java/viewfx/view/support/ActivatableView.java diff --git a/src/main/java/viewfx/view/support/ActivatableViewAndModel.java b/gui/src/main/java/viewfx/view/support/ActivatableViewAndModel.java similarity index 100% rename from src/main/java/viewfx/view/support/ActivatableViewAndModel.java rename to gui/src/main/java/viewfx/view/support/ActivatableViewAndModel.java diff --git a/src/main/java/viewfx/view/support/CachingViewLoader.java b/gui/src/main/java/viewfx/view/support/CachingViewLoader.java similarity index 100% rename from src/main/java/viewfx/view/support/CachingViewLoader.java rename to gui/src/main/java/viewfx/view/support/CachingViewLoader.java diff --git a/src/main/java/viewfx/view/support/InitializableView.java b/gui/src/main/java/viewfx/view/support/InitializableView.java similarity index 100% rename from src/main/java/viewfx/view/support/InitializableView.java rename to gui/src/main/java/viewfx/view/support/InitializableView.java diff --git a/src/main/java/viewfx/view/support/fxml/FxmlViewLoader.java b/gui/src/main/java/viewfx/view/support/fxml/FxmlViewLoader.java similarity index 100% rename from src/main/java/viewfx/view/support/fxml/FxmlViewLoader.java rename to gui/src/main/java/viewfx/view/support/fxml/FxmlViewLoader.java diff --git a/src/main/java/viewfx/view/support/guice/InjectorViewFactory.java b/gui/src/main/java/viewfx/view/support/guice/InjectorViewFactory.java similarity index 100% rename from src/main/java/viewfx/view/support/guice/InjectorViewFactory.java rename to gui/src/main/java/viewfx/view/support/guice/InjectorViewFactory.java diff --git a/src/main/resources/bitsquare.properties b/gui/src/main/resources/bitsquare.properties similarity index 100% rename from src/main/resources/bitsquare.properties rename to gui/src/main/resources/bitsquare.properties diff --git a/src/main/resources/i18n/displayStrings.properties b/gui/src/main/resources/i18n/displayStrings.properties similarity index 100% rename from src/main/resources/i18n/displayStrings.properties rename to gui/src/main/resources/i18n/displayStrings.properties diff --git a/src/main/resources/i18n/displayStrings_de.properties b/gui/src/main/resources/i18n/displayStrings_de.properties similarity index 100% rename from src/main/resources/i18n/displayStrings_de.properties rename to gui/src/main/resources/i18n/displayStrings_de.properties diff --git a/src/main/resources/i18n/displayStrings_es.properties b/gui/src/main/resources/i18n/displayStrings_es.properties similarity index 100% rename from src/main/resources/i18n/displayStrings_es.properties rename to gui/src/main/resources/i18n/displayStrings_es.properties diff --git a/src/main/resources/i18n/displayStrings_sv_SE.properties b/gui/src/main/resources/i18n/displayStrings_sv_SE.properties similarity index 100% rename from src/main/resources/i18n/displayStrings_sv_SE.properties rename to gui/src/main/resources/i18n/displayStrings_sv_SE.properties diff --git a/src/main/resources/images/alert_round.png b/gui/src/main/resources/images/alert_round.png similarity index 100% rename from src/main/resources/images/alert_round.png rename to gui/src/main/resources/images/alert_round.png diff --git a/src/main/resources/images/alert_round@2x.png b/gui/src/main/resources/images/alert_round@2x.png similarity index 100% rename from src/main/resources/images/alert_round@2x.png rename to gui/src/main/resources/images/alert_round@2x.png diff --git a/src/main/resources/images/arrow_blue.png b/gui/src/main/resources/images/arrow_blue.png similarity index 100% rename from src/main/resources/images/arrow_blue.png rename to gui/src/main/resources/images/arrow_blue.png diff --git a/src/main/resources/images/arrow_blue@2x.png b/gui/src/main/resources/images/arrow_blue@2x.png similarity index 100% rename from src/main/resources/images/arrow_blue@2x.png rename to gui/src/main/resources/images/arrow_blue@2x.png diff --git a/src/main/resources/images/arrow_grey.png b/gui/src/main/resources/images/arrow_grey.png similarity index 100% rename from src/main/resources/images/arrow_grey.png rename to gui/src/main/resources/images/arrow_grey.png diff --git a/src/main/resources/images/arrow_grey@2x.png b/gui/src/main/resources/images/arrow_grey@2x.png similarity index 100% rename from src/main/resources/images/arrow_grey@2x.png rename to gui/src/main/resources/images/arrow_grey@2x.png diff --git a/src/main/resources/images/buy.png b/gui/src/main/resources/images/buy.png similarity index 100% rename from src/main/resources/images/buy.png rename to gui/src/main/resources/images/buy.png diff --git a/src/main/resources/images/buy@2x.png b/gui/src/main/resources/images/buy@2x.png similarity index 100% rename from src/main/resources/images/buy@2x.png rename to gui/src/main/resources/images/buy@2x.png diff --git a/src/main/resources/images/buy_large.png b/gui/src/main/resources/images/buy_large.png similarity index 100% rename from src/main/resources/images/buy_large.png rename to gui/src/main/resources/images/buy_large.png diff --git a/src/main/resources/images/buy_large@2x.png b/gui/src/main/resources/images/buy_large@2x.png similarity index 100% rename from src/main/resources/images/buy_large@2x.png rename to gui/src/main/resources/images/buy_large@2x.png diff --git a/src/main/resources/images/collapse.png b/gui/src/main/resources/images/collapse.png similarity index 100% rename from src/main/resources/images/collapse.png rename to gui/src/main/resources/images/collapse.png diff --git a/src/main/resources/images/collapse@2x.png b/gui/src/main/resources/images/collapse@2x.png similarity index 100% rename from src/main/resources/images/collapse@2x.png rename to gui/src/main/resources/images/collapse@2x.png diff --git a/src/main/resources/images/connection/direct.png b/gui/src/main/resources/images/connection/direct.png similarity index 100% rename from src/main/resources/images/connection/direct.png rename to gui/src/main/resources/images/connection/direct.png diff --git a/src/main/resources/images/connection/direct@2x.png b/gui/src/main/resources/images/connection/direct@2x.png similarity index 100% rename from src/main/resources/images/connection/direct@2x.png rename to gui/src/main/resources/images/connection/direct@2x.png diff --git a/src/main/resources/images/connection/nat.png b/gui/src/main/resources/images/connection/nat.png similarity index 100% rename from src/main/resources/images/connection/nat.png rename to gui/src/main/resources/images/connection/nat.png diff --git a/src/main/resources/images/connection/nat@2x.png b/gui/src/main/resources/images/connection/nat@2x.png similarity index 100% rename from src/main/resources/images/connection/nat@2x.png rename to gui/src/main/resources/images/connection/nat@2x.png diff --git a/src/main/resources/images/connection/relay.png b/gui/src/main/resources/images/connection/relay.png similarity index 100% rename from src/main/resources/images/connection/relay.png rename to gui/src/main/resources/images/connection/relay.png diff --git a/src/main/resources/images/connection/relay@2x.png b/gui/src/main/resources/images/connection/relay@2x.png similarity index 100% rename from src/main/resources/images/connection/relay@2x.png rename to gui/src/main/resources/images/connection/relay@2x.png diff --git a/src/main/resources/images/connection/synced.png b/gui/src/main/resources/images/connection/synced.png similarity index 100% rename from src/main/resources/images/connection/synced.png rename to gui/src/main/resources/images/connection/synced.png diff --git a/src/main/resources/images/connection/synced@2x.png b/gui/src/main/resources/images/connection/synced@2x.png similarity index 100% rename from src/main/resources/images/connection/synced@2x.png rename to gui/src/main/resources/images/connection/synced@2x.png diff --git a/src/main/resources/images/countries/ad.png b/gui/src/main/resources/images/countries/ad.png similarity index 100% rename from src/main/resources/images/countries/ad.png rename to gui/src/main/resources/images/countries/ad.png diff --git a/src/main/resources/images/countries/ae.png b/gui/src/main/resources/images/countries/ae.png similarity index 100% rename from src/main/resources/images/countries/ae.png rename to gui/src/main/resources/images/countries/ae.png diff --git a/src/main/resources/images/countries/af.png b/gui/src/main/resources/images/countries/af.png similarity index 100% rename from src/main/resources/images/countries/af.png rename to gui/src/main/resources/images/countries/af.png diff --git a/src/main/resources/images/countries/ag.png b/gui/src/main/resources/images/countries/ag.png similarity index 100% rename from src/main/resources/images/countries/ag.png rename to gui/src/main/resources/images/countries/ag.png diff --git a/src/main/resources/images/countries/ai.png b/gui/src/main/resources/images/countries/ai.png similarity index 100% rename from src/main/resources/images/countries/ai.png rename to gui/src/main/resources/images/countries/ai.png diff --git a/src/main/resources/images/countries/al.png b/gui/src/main/resources/images/countries/al.png similarity index 100% rename from src/main/resources/images/countries/al.png rename to gui/src/main/resources/images/countries/al.png diff --git a/src/main/resources/images/countries/am.png b/gui/src/main/resources/images/countries/am.png similarity index 100% rename from src/main/resources/images/countries/am.png rename to gui/src/main/resources/images/countries/am.png diff --git a/src/main/resources/images/countries/an.png b/gui/src/main/resources/images/countries/an.png similarity index 100% rename from src/main/resources/images/countries/an.png rename to gui/src/main/resources/images/countries/an.png diff --git a/src/main/resources/images/countries/ao.png b/gui/src/main/resources/images/countries/ao.png similarity index 100% rename from src/main/resources/images/countries/ao.png rename to gui/src/main/resources/images/countries/ao.png diff --git a/src/main/resources/images/countries/ar.png b/gui/src/main/resources/images/countries/ar.png similarity index 100% rename from src/main/resources/images/countries/ar.png rename to gui/src/main/resources/images/countries/ar.png diff --git a/src/main/resources/images/countries/as.png b/gui/src/main/resources/images/countries/as.png similarity index 100% rename from src/main/resources/images/countries/as.png rename to gui/src/main/resources/images/countries/as.png diff --git a/src/main/resources/images/countries/at.png b/gui/src/main/resources/images/countries/at.png similarity index 100% rename from src/main/resources/images/countries/at.png rename to gui/src/main/resources/images/countries/at.png diff --git a/src/main/resources/images/countries/au.png b/gui/src/main/resources/images/countries/au.png similarity index 100% rename from src/main/resources/images/countries/au.png rename to gui/src/main/resources/images/countries/au.png diff --git a/src/main/resources/images/countries/aw.png b/gui/src/main/resources/images/countries/aw.png similarity index 100% rename from src/main/resources/images/countries/aw.png rename to gui/src/main/resources/images/countries/aw.png diff --git a/src/main/resources/images/countries/ax.png b/gui/src/main/resources/images/countries/ax.png similarity index 100% rename from src/main/resources/images/countries/ax.png rename to gui/src/main/resources/images/countries/ax.png diff --git a/src/main/resources/images/countries/az.png b/gui/src/main/resources/images/countries/az.png similarity index 100% rename from src/main/resources/images/countries/az.png rename to gui/src/main/resources/images/countries/az.png diff --git a/src/main/resources/images/countries/ba.png b/gui/src/main/resources/images/countries/ba.png similarity index 100% rename from src/main/resources/images/countries/ba.png rename to gui/src/main/resources/images/countries/ba.png diff --git a/src/main/resources/images/countries/bb.png b/gui/src/main/resources/images/countries/bb.png similarity index 100% rename from src/main/resources/images/countries/bb.png rename to gui/src/main/resources/images/countries/bb.png diff --git a/src/main/resources/images/countries/bd.png b/gui/src/main/resources/images/countries/bd.png similarity index 100% rename from src/main/resources/images/countries/bd.png rename to gui/src/main/resources/images/countries/bd.png diff --git a/src/main/resources/images/countries/be.png b/gui/src/main/resources/images/countries/be.png similarity index 100% rename from src/main/resources/images/countries/be.png rename to gui/src/main/resources/images/countries/be.png diff --git a/src/main/resources/images/countries/bf.png b/gui/src/main/resources/images/countries/bf.png similarity index 100% rename from src/main/resources/images/countries/bf.png rename to gui/src/main/resources/images/countries/bf.png diff --git a/src/main/resources/images/countries/bg.png b/gui/src/main/resources/images/countries/bg.png similarity index 100% rename from src/main/resources/images/countries/bg.png rename to gui/src/main/resources/images/countries/bg.png diff --git a/src/main/resources/images/countries/bh.png b/gui/src/main/resources/images/countries/bh.png similarity index 100% rename from src/main/resources/images/countries/bh.png rename to gui/src/main/resources/images/countries/bh.png diff --git a/src/main/resources/images/countries/bi.png b/gui/src/main/resources/images/countries/bi.png similarity index 100% rename from src/main/resources/images/countries/bi.png rename to gui/src/main/resources/images/countries/bi.png diff --git a/src/main/resources/images/countries/bj.png b/gui/src/main/resources/images/countries/bj.png similarity index 100% rename from src/main/resources/images/countries/bj.png rename to gui/src/main/resources/images/countries/bj.png diff --git a/src/main/resources/images/countries/bm.png b/gui/src/main/resources/images/countries/bm.png similarity index 100% rename from src/main/resources/images/countries/bm.png rename to gui/src/main/resources/images/countries/bm.png diff --git a/src/main/resources/images/countries/bn.png b/gui/src/main/resources/images/countries/bn.png similarity index 100% rename from src/main/resources/images/countries/bn.png rename to gui/src/main/resources/images/countries/bn.png diff --git a/src/main/resources/images/countries/bo.png b/gui/src/main/resources/images/countries/bo.png similarity index 100% rename from src/main/resources/images/countries/bo.png rename to gui/src/main/resources/images/countries/bo.png diff --git a/src/main/resources/images/countries/br.png b/gui/src/main/resources/images/countries/br.png similarity index 100% rename from src/main/resources/images/countries/br.png rename to gui/src/main/resources/images/countries/br.png diff --git a/src/main/resources/images/countries/bs.png b/gui/src/main/resources/images/countries/bs.png similarity index 100% rename from src/main/resources/images/countries/bs.png rename to gui/src/main/resources/images/countries/bs.png diff --git a/src/main/resources/images/countries/bt.png b/gui/src/main/resources/images/countries/bt.png similarity index 100% rename from src/main/resources/images/countries/bt.png rename to gui/src/main/resources/images/countries/bt.png diff --git a/src/main/resources/images/countries/bv.png b/gui/src/main/resources/images/countries/bv.png similarity index 100% rename from src/main/resources/images/countries/bv.png rename to gui/src/main/resources/images/countries/bv.png diff --git a/src/main/resources/images/countries/bw.png b/gui/src/main/resources/images/countries/bw.png similarity index 100% rename from src/main/resources/images/countries/bw.png rename to gui/src/main/resources/images/countries/bw.png diff --git a/src/main/resources/images/countries/by.png b/gui/src/main/resources/images/countries/by.png similarity index 100% rename from src/main/resources/images/countries/by.png rename to gui/src/main/resources/images/countries/by.png diff --git a/src/main/resources/images/countries/bz.png b/gui/src/main/resources/images/countries/bz.png similarity index 100% rename from src/main/resources/images/countries/bz.png rename to gui/src/main/resources/images/countries/bz.png diff --git a/src/main/resources/images/countries/ca.png b/gui/src/main/resources/images/countries/ca.png similarity index 100% rename from src/main/resources/images/countries/ca.png rename to gui/src/main/resources/images/countries/ca.png diff --git a/src/main/resources/images/countries/catalonia.png b/gui/src/main/resources/images/countries/catalonia.png similarity index 100% rename from src/main/resources/images/countries/catalonia.png rename to gui/src/main/resources/images/countries/catalonia.png diff --git a/src/main/resources/images/countries/cc.png b/gui/src/main/resources/images/countries/cc.png similarity index 100% rename from src/main/resources/images/countries/cc.png rename to gui/src/main/resources/images/countries/cc.png diff --git a/src/main/resources/images/countries/cd.png b/gui/src/main/resources/images/countries/cd.png similarity index 100% rename from src/main/resources/images/countries/cd.png rename to gui/src/main/resources/images/countries/cd.png diff --git a/src/main/resources/images/countries/cf.png b/gui/src/main/resources/images/countries/cf.png similarity index 100% rename from src/main/resources/images/countries/cf.png rename to gui/src/main/resources/images/countries/cf.png diff --git a/src/main/resources/images/countries/cg.png b/gui/src/main/resources/images/countries/cg.png similarity index 100% rename from src/main/resources/images/countries/cg.png rename to gui/src/main/resources/images/countries/cg.png diff --git a/src/main/resources/images/countries/ch.png b/gui/src/main/resources/images/countries/ch.png similarity index 100% rename from src/main/resources/images/countries/ch.png rename to gui/src/main/resources/images/countries/ch.png diff --git a/src/main/resources/images/countries/ci.png b/gui/src/main/resources/images/countries/ci.png similarity index 100% rename from src/main/resources/images/countries/ci.png rename to gui/src/main/resources/images/countries/ci.png diff --git a/src/main/resources/images/countries/ck.png b/gui/src/main/resources/images/countries/ck.png similarity index 100% rename from src/main/resources/images/countries/ck.png rename to gui/src/main/resources/images/countries/ck.png diff --git a/src/main/resources/images/countries/cl.png b/gui/src/main/resources/images/countries/cl.png similarity index 100% rename from src/main/resources/images/countries/cl.png rename to gui/src/main/resources/images/countries/cl.png diff --git a/src/main/resources/images/countries/cm.png b/gui/src/main/resources/images/countries/cm.png similarity index 100% rename from src/main/resources/images/countries/cm.png rename to gui/src/main/resources/images/countries/cm.png diff --git a/src/main/resources/images/countries/cn.png b/gui/src/main/resources/images/countries/cn.png similarity index 100% rename from src/main/resources/images/countries/cn.png rename to gui/src/main/resources/images/countries/cn.png diff --git a/src/main/resources/images/countries/co.png b/gui/src/main/resources/images/countries/co.png similarity index 100% rename from src/main/resources/images/countries/co.png rename to gui/src/main/resources/images/countries/co.png diff --git a/src/main/resources/images/countries/cr.png b/gui/src/main/resources/images/countries/cr.png similarity index 100% rename from src/main/resources/images/countries/cr.png rename to gui/src/main/resources/images/countries/cr.png diff --git a/src/main/resources/images/countries/cs.png b/gui/src/main/resources/images/countries/cs.png similarity index 100% rename from src/main/resources/images/countries/cs.png rename to gui/src/main/resources/images/countries/cs.png diff --git a/src/main/resources/images/countries/cu.png b/gui/src/main/resources/images/countries/cu.png similarity index 100% rename from src/main/resources/images/countries/cu.png rename to gui/src/main/resources/images/countries/cu.png diff --git a/src/main/resources/images/countries/cv.png b/gui/src/main/resources/images/countries/cv.png similarity index 100% rename from src/main/resources/images/countries/cv.png rename to gui/src/main/resources/images/countries/cv.png diff --git a/src/main/resources/images/countries/cx.png b/gui/src/main/resources/images/countries/cx.png similarity index 100% rename from src/main/resources/images/countries/cx.png rename to gui/src/main/resources/images/countries/cx.png diff --git a/src/main/resources/images/countries/cy.png b/gui/src/main/resources/images/countries/cy.png similarity index 100% rename from src/main/resources/images/countries/cy.png rename to gui/src/main/resources/images/countries/cy.png diff --git a/src/main/resources/images/countries/cz.png b/gui/src/main/resources/images/countries/cz.png similarity index 100% rename from src/main/resources/images/countries/cz.png rename to gui/src/main/resources/images/countries/cz.png diff --git a/src/main/resources/images/countries/de.png b/gui/src/main/resources/images/countries/de.png similarity index 100% rename from src/main/resources/images/countries/de.png rename to gui/src/main/resources/images/countries/de.png diff --git a/src/main/resources/images/countries/dj.png b/gui/src/main/resources/images/countries/dj.png similarity index 100% rename from src/main/resources/images/countries/dj.png rename to gui/src/main/resources/images/countries/dj.png diff --git a/src/main/resources/images/countries/dk.png b/gui/src/main/resources/images/countries/dk.png similarity index 100% rename from src/main/resources/images/countries/dk.png rename to gui/src/main/resources/images/countries/dk.png diff --git a/src/main/resources/images/countries/dm.png b/gui/src/main/resources/images/countries/dm.png similarity index 100% rename from src/main/resources/images/countries/dm.png rename to gui/src/main/resources/images/countries/dm.png diff --git a/src/main/resources/images/countries/do.png b/gui/src/main/resources/images/countries/do.png similarity index 100% rename from src/main/resources/images/countries/do.png rename to gui/src/main/resources/images/countries/do.png diff --git a/src/main/resources/images/countries/dz.png b/gui/src/main/resources/images/countries/dz.png similarity index 100% rename from src/main/resources/images/countries/dz.png rename to gui/src/main/resources/images/countries/dz.png diff --git a/src/main/resources/images/countries/ec.png b/gui/src/main/resources/images/countries/ec.png similarity index 100% rename from src/main/resources/images/countries/ec.png rename to gui/src/main/resources/images/countries/ec.png diff --git a/src/main/resources/images/countries/ee.png b/gui/src/main/resources/images/countries/ee.png similarity index 100% rename from src/main/resources/images/countries/ee.png rename to gui/src/main/resources/images/countries/ee.png diff --git a/src/main/resources/images/countries/eg.png b/gui/src/main/resources/images/countries/eg.png similarity index 100% rename from src/main/resources/images/countries/eg.png rename to gui/src/main/resources/images/countries/eg.png diff --git a/src/main/resources/images/countries/eh.png b/gui/src/main/resources/images/countries/eh.png similarity index 100% rename from src/main/resources/images/countries/eh.png rename to gui/src/main/resources/images/countries/eh.png diff --git a/src/main/resources/images/countries/england.png b/gui/src/main/resources/images/countries/england.png similarity index 100% rename from src/main/resources/images/countries/england.png rename to gui/src/main/resources/images/countries/england.png diff --git a/src/main/resources/images/countries/er.png b/gui/src/main/resources/images/countries/er.png similarity index 100% rename from src/main/resources/images/countries/er.png rename to gui/src/main/resources/images/countries/er.png diff --git a/src/main/resources/images/countries/es.png b/gui/src/main/resources/images/countries/es.png similarity index 100% rename from src/main/resources/images/countries/es.png rename to gui/src/main/resources/images/countries/es.png diff --git a/src/main/resources/images/countries/et.png b/gui/src/main/resources/images/countries/et.png similarity index 100% rename from src/main/resources/images/countries/et.png rename to gui/src/main/resources/images/countries/et.png diff --git a/src/main/resources/images/countries/eu.png b/gui/src/main/resources/images/countries/eu.png similarity index 100% rename from src/main/resources/images/countries/eu.png rename to gui/src/main/resources/images/countries/eu.png diff --git a/src/main/resources/images/countries/fam.png b/gui/src/main/resources/images/countries/fam.png similarity index 100% rename from src/main/resources/images/countries/fam.png rename to gui/src/main/resources/images/countries/fam.png diff --git a/src/main/resources/images/countries/fi.png b/gui/src/main/resources/images/countries/fi.png similarity index 100% rename from src/main/resources/images/countries/fi.png rename to gui/src/main/resources/images/countries/fi.png diff --git a/src/main/resources/images/countries/fj.png b/gui/src/main/resources/images/countries/fj.png similarity index 100% rename from src/main/resources/images/countries/fj.png rename to gui/src/main/resources/images/countries/fj.png diff --git a/src/main/resources/images/countries/fk.png b/gui/src/main/resources/images/countries/fk.png similarity index 100% rename from src/main/resources/images/countries/fk.png rename to gui/src/main/resources/images/countries/fk.png diff --git a/src/main/resources/images/countries/fm.png b/gui/src/main/resources/images/countries/fm.png similarity index 100% rename from src/main/resources/images/countries/fm.png rename to gui/src/main/resources/images/countries/fm.png diff --git a/src/main/resources/images/countries/fo.png b/gui/src/main/resources/images/countries/fo.png similarity index 100% rename from src/main/resources/images/countries/fo.png rename to gui/src/main/resources/images/countries/fo.png diff --git a/src/main/resources/images/countries/fr.png b/gui/src/main/resources/images/countries/fr.png similarity index 100% rename from src/main/resources/images/countries/fr.png rename to gui/src/main/resources/images/countries/fr.png diff --git a/src/main/resources/images/countries/ga.png b/gui/src/main/resources/images/countries/ga.png similarity index 100% rename from src/main/resources/images/countries/ga.png rename to gui/src/main/resources/images/countries/ga.png diff --git a/src/main/resources/images/countries/gd.png b/gui/src/main/resources/images/countries/gd.png similarity index 100% rename from src/main/resources/images/countries/gd.png rename to gui/src/main/resources/images/countries/gd.png diff --git a/src/main/resources/images/countries/ge.png b/gui/src/main/resources/images/countries/ge.png similarity index 100% rename from src/main/resources/images/countries/ge.png rename to gui/src/main/resources/images/countries/ge.png diff --git a/src/main/resources/images/countries/gf.png b/gui/src/main/resources/images/countries/gf.png similarity index 100% rename from src/main/resources/images/countries/gf.png rename to gui/src/main/resources/images/countries/gf.png diff --git a/src/main/resources/images/countries/gh.png b/gui/src/main/resources/images/countries/gh.png similarity index 100% rename from src/main/resources/images/countries/gh.png rename to gui/src/main/resources/images/countries/gh.png diff --git a/src/main/resources/images/countries/gi.png b/gui/src/main/resources/images/countries/gi.png similarity index 100% rename from src/main/resources/images/countries/gi.png rename to gui/src/main/resources/images/countries/gi.png diff --git a/src/main/resources/images/countries/gl.png b/gui/src/main/resources/images/countries/gl.png similarity index 100% rename from src/main/resources/images/countries/gl.png rename to gui/src/main/resources/images/countries/gl.png diff --git a/src/main/resources/images/countries/gm.png b/gui/src/main/resources/images/countries/gm.png similarity index 100% rename from src/main/resources/images/countries/gm.png rename to gui/src/main/resources/images/countries/gm.png diff --git a/src/main/resources/images/countries/gn.png b/gui/src/main/resources/images/countries/gn.png similarity index 100% rename from src/main/resources/images/countries/gn.png rename to gui/src/main/resources/images/countries/gn.png diff --git a/src/main/resources/images/countries/gp.png b/gui/src/main/resources/images/countries/gp.png similarity index 100% rename from src/main/resources/images/countries/gp.png rename to gui/src/main/resources/images/countries/gp.png diff --git a/src/main/resources/images/countries/gq.png b/gui/src/main/resources/images/countries/gq.png similarity index 100% rename from src/main/resources/images/countries/gq.png rename to gui/src/main/resources/images/countries/gq.png diff --git a/src/main/resources/images/countries/gr.png b/gui/src/main/resources/images/countries/gr.png similarity index 100% rename from src/main/resources/images/countries/gr.png rename to gui/src/main/resources/images/countries/gr.png diff --git a/src/main/resources/images/countries/gs.png b/gui/src/main/resources/images/countries/gs.png similarity index 100% rename from src/main/resources/images/countries/gs.png rename to gui/src/main/resources/images/countries/gs.png diff --git a/src/main/resources/images/countries/gt.png b/gui/src/main/resources/images/countries/gt.png similarity index 100% rename from src/main/resources/images/countries/gt.png rename to gui/src/main/resources/images/countries/gt.png diff --git a/src/main/resources/images/countries/gu.png b/gui/src/main/resources/images/countries/gu.png similarity index 100% rename from src/main/resources/images/countries/gu.png rename to gui/src/main/resources/images/countries/gu.png diff --git a/src/main/resources/images/countries/gw.png b/gui/src/main/resources/images/countries/gw.png similarity index 100% rename from src/main/resources/images/countries/gw.png rename to gui/src/main/resources/images/countries/gw.png diff --git a/src/main/resources/images/countries/gy.png b/gui/src/main/resources/images/countries/gy.png similarity index 100% rename from src/main/resources/images/countries/gy.png rename to gui/src/main/resources/images/countries/gy.png diff --git a/src/main/resources/images/countries/hk.png b/gui/src/main/resources/images/countries/hk.png similarity index 100% rename from src/main/resources/images/countries/hk.png rename to gui/src/main/resources/images/countries/hk.png diff --git a/src/main/resources/images/countries/hm.png b/gui/src/main/resources/images/countries/hm.png similarity index 100% rename from src/main/resources/images/countries/hm.png rename to gui/src/main/resources/images/countries/hm.png diff --git a/src/main/resources/images/countries/hn.png b/gui/src/main/resources/images/countries/hn.png similarity index 100% rename from src/main/resources/images/countries/hn.png rename to gui/src/main/resources/images/countries/hn.png diff --git a/src/main/resources/images/countries/hr.png b/gui/src/main/resources/images/countries/hr.png similarity index 100% rename from src/main/resources/images/countries/hr.png rename to gui/src/main/resources/images/countries/hr.png diff --git a/src/main/resources/images/countries/ht.png b/gui/src/main/resources/images/countries/ht.png similarity index 100% rename from src/main/resources/images/countries/ht.png rename to gui/src/main/resources/images/countries/ht.png diff --git a/src/main/resources/images/countries/hu.png b/gui/src/main/resources/images/countries/hu.png similarity index 100% rename from src/main/resources/images/countries/hu.png rename to gui/src/main/resources/images/countries/hu.png diff --git a/src/main/resources/images/countries/id.png b/gui/src/main/resources/images/countries/id.png similarity index 100% rename from src/main/resources/images/countries/id.png rename to gui/src/main/resources/images/countries/id.png diff --git a/src/main/resources/images/countries/ie.png b/gui/src/main/resources/images/countries/ie.png similarity index 100% rename from src/main/resources/images/countries/ie.png rename to gui/src/main/resources/images/countries/ie.png diff --git a/src/main/resources/images/countries/il.png b/gui/src/main/resources/images/countries/il.png similarity index 100% rename from src/main/resources/images/countries/il.png rename to gui/src/main/resources/images/countries/il.png diff --git a/src/main/resources/images/countries/in.png b/gui/src/main/resources/images/countries/in.png similarity index 100% rename from src/main/resources/images/countries/in.png rename to gui/src/main/resources/images/countries/in.png diff --git a/src/main/resources/images/countries/io.png b/gui/src/main/resources/images/countries/io.png similarity index 100% rename from src/main/resources/images/countries/io.png rename to gui/src/main/resources/images/countries/io.png diff --git a/src/main/resources/images/countries/iq.png b/gui/src/main/resources/images/countries/iq.png similarity index 100% rename from src/main/resources/images/countries/iq.png rename to gui/src/main/resources/images/countries/iq.png diff --git a/src/main/resources/images/countries/ir.png b/gui/src/main/resources/images/countries/ir.png similarity index 100% rename from src/main/resources/images/countries/ir.png rename to gui/src/main/resources/images/countries/ir.png diff --git a/src/main/resources/images/countries/is.png b/gui/src/main/resources/images/countries/is.png similarity index 100% rename from src/main/resources/images/countries/is.png rename to gui/src/main/resources/images/countries/is.png diff --git a/src/main/resources/images/countries/it.png b/gui/src/main/resources/images/countries/it.png similarity index 100% rename from src/main/resources/images/countries/it.png rename to gui/src/main/resources/images/countries/it.png diff --git a/src/main/resources/images/countries/jm.png b/gui/src/main/resources/images/countries/jm.png similarity index 100% rename from src/main/resources/images/countries/jm.png rename to gui/src/main/resources/images/countries/jm.png diff --git a/src/main/resources/images/countries/jo.png b/gui/src/main/resources/images/countries/jo.png similarity index 100% rename from src/main/resources/images/countries/jo.png rename to gui/src/main/resources/images/countries/jo.png diff --git a/src/main/resources/images/countries/jp.png b/gui/src/main/resources/images/countries/jp.png similarity index 100% rename from src/main/resources/images/countries/jp.png rename to gui/src/main/resources/images/countries/jp.png diff --git a/src/main/resources/images/countries/ke.png b/gui/src/main/resources/images/countries/ke.png similarity index 100% rename from src/main/resources/images/countries/ke.png rename to gui/src/main/resources/images/countries/ke.png diff --git a/src/main/resources/images/countries/kg.png b/gui/src/main/resources/images/countries/kg.png similarity index 100% rename from src/main/resources/images/countries/kg.png rename to gui/src/main/resources/images/countries/kg.png diff --git a/src/main/resources/images/countries/kh.png b/gui/src/main/resources/images/countries/kh.png similarity index 100% rename from src/main/resources/images/countries/kh.png rename to gui/src/main/resources/images/countries/kh.png diff --git a/src/main/resources/images/countries/ki.png b/gui/src/main/resources/images/countries/ki.png similarity index 100% rename from src/main/resources/images/countries/ki.png rename to gui/src/main/resources/images/countries/ki.png diff --git a/src/main/resources/images/countries/km.png b/gui/src/main/resources/images/countries/km.png similarity index 100% rename from src/main/resources/images/countries/km.png rename to gui/src/main/resources/images/countries/km.png diff --git a/src/main/resources/images/countries/kn.png b/gui/src/main/resources/images/countries/kn.png similarity index 100% rename from src/main/resources/images/countries/kn.png rename to gui/src/main/resources/images/countries/kn.png diff --git a/src/main/resources/images/countries/kp.png b/gui/src/main/resources/images/countries/kp.png similarity index 100% rename from src/main/resources/images/countries/kp.png rename to gui/src/main/resources/images/countries/kp.png diff --git a/src/main/resources/images/countries/kr.png b/gui/src/main/resources/images/countries/kr.png similarity index 100% rename from src/main/resources/images/countries/kr.png rename to gui/src/main/resources/images/countries/kr.png diff --git a/src/main/resources/images/countries/kw.png b/gui/src/main/resources/images/countries/kw.png similarity index 100% rename from src/main/resources/images/countries/kw.png rename to gui/src/main/resources/images/countries/kw.png diff --git a/src/main/resources/images/countries/ky.png b/gui/src/main/resources/images/countries/ky.png similarity index 100% rename from src/main/resources/images/countries/ky.png rename to gui/src/main/resources/images/countries/ky.png diff --git a/src/main/resources/images/countries/kz.png b/gui/src/main/resources/images/countries/kz.png similarity index 100% rename from src/main/resources/images/countries/kz.png rename to gui/src/main/resources/images/countries/kz.png diff --git a/src/main/resources/images/countries/la.png b/gui/src/main/resources/images/countries/la.png similarity index 100% rename from src/main/resources/images/countries/la.png rename to gui/src/main/resources/images/countries/la.png diff --git a/src/main/resources/images/countries/lb.png b/gui/src/main/resources/images/countries/lb.png similarity index 100% rename from src/main/resources/images/countries/lb.png rename to gui/src/main/resources/images/countries/lb.png diff --git a/src/main/resources/images/countries/lc.png b/gui/src/main/resources/images/countries/lc.png similarity index 100% rename from src/main/resources/images/countries/lc.png rename to gui/src/main/resources/images/countries/lc.png diff --git a/src/main/resources/images/countries/li.png b/gui/src/main/resources/images/countries/li.png similarity index 100% rename from src/main/resources/images/countries/li.png rename to gui/src/main/resources/images/countries/li.png diff --git a/src/main/resources/images/countries/lk.png b/gui/src/main/resources/images/countries/lk.png similarity index 100% rename from src/main/resources/images/countries/lk.png rename to gui/src/main/resources/images/countries/lk.png diff --git a/src/main/resources/images/countries/lr.png b/gui/src/main/resources/images/countries/lr.png similarity index 100% rename from src/main/resources/images/countries/lr.png rename to gui/src/main/resources/images/countries/lr.png diff --git a/src/main/resources/images/countries/ls.png b/gui/src/main/resources/images/countries/ls.png similarity index 100% rename from src/main/resources/images/countries/ls.png rename to gui/src/main/resources/images/countries/ls.png diff --git a/src/main/resources/images/countries/lt.png b/gui/src/main/resources/images/countries/lt.png similarity index 100% rename from src/main/resources/images/countries/lt.png rename to gui/src/main/resources/images/countries/lt.png diff --git a/src/main/resources/images/countries/lu.png b/gui/src/main/resources/images/countries/lu.png similarity index 100% rename from src/main/resources/images/countries/lu.png rename to gui/src/main/resources/images/countries/lu.png diff --git a/src/main/resources/images/countries/lv.png b/gui/src/main/resources/images/countries/lv.png similarity index 100% rename from src/main/resources/images/countries/lv.png rename to gui/src/main/resources/images/countries/lv.png diff --git a/src/main/resources/images/countries/ly.png b/gui/src/main/resources/images/countries/ly.png similarity index 100% rename from src/main/resources/images/countries/ly.png rename to gui/src/main/resources/images/countries/ly.png diff --git a/src/main/resources/images/countries/ma.png b/gui/src/main/resources/images/countries/ma.png similarity index 100% rename from src/main/resources/images/countries/ma.png rename to gui/src/main/resources/images/countries/ma.png diff --git a/src/main/resources/images/countries/mc.png b/gui/src/main/resources/images/countries/mc.png similarity index 100% rename from src/main/resources/images/countries/mc.png rename to gui/src/main/resources/images/countries/mc.png diff --git a/src/main/resources/images/countries/md.png b/gui/src/main/resources/images/countries/md.png similarity index 100% rename from src/main/resources/images/countries/md.png rename to gui/src/main/resources/images/countries/md.png diff --git a/src/main/resources/images/countries/me.png b/gui/src/main/resources/images/countries/me.png similarity index 100% rename from src/main/resources/images/countries/me.png rename to gui/src/main/resources/images/countries/me.png diff --git a/src/main/resources/images/countries/mg.png b/gui/src/main/resources/images/countries/mg.png similarity index 100% rename from src/main/resources/images/countries/mg.png rename to gui/src/main/resources/images/countries/mg.png diff --git a/src/main/resources/images/countries/mh.png b/gui/src/main/resources/images/countries/mh.png similarity index 100% rename from src/main/resources/images/countries/mh.png rename to gui/src/main/resources/images/countries/mh.png diff --git a/src/main/resources/images/countries/mk.png b/gui/src/main/resources/images/countries/mk.png similarity index 100% rename from src/main/resources/images/countries/mk.png rename to gui/src/main/resources/images/countries/mk.png diff --git a/src/main/resources/images/countries/ml.png b/gui/src/main/resources/images/countries/ml.png similarity index 100% rename from src/main/resources/images/countries/ml.png rename to gui/src/main/resources/images/countries/ml.png diff --git a/src/main/resources/images/countries/mm.png b/gui/src/main/resources/images/countries/mm.png similarity index 100% rename from src/main/resources/images/countries/mm.png rename to gui/src/main/resources/images/countries/mm.png diff --git a/src/main/resources/images/countries/mn.png b/gui/src/main/resources/images/countries/mn.png similarity index 100% rename from src/main/resources/images/countries/mn.png rename to gui/src/main/resources/images/countries/mn.png diff --git a/src/main/resources/images/countries/mo.png b/gui/src/main/resources/images/countries/mo.png similarity index 100% rename from src/main/resources/images/countries/mo.png rename to gui/src/main/resources/images/countries/mo.png diff --git a/src/main/resources/images/countries/mp.png b/gui/src/main/resources/images/countries/mp.png similarity index 100% rename from src/main/resources/images/countries/mp.png rename to gui/src/main/resources/images/countries/mp.png diff --git a/src/main/resources/images/countries/mq.png b/gui/src/main/resources/images/countries/mq.png similarity index 100% rename from src/main/resources/images/countries/mq.png rename to gui/src/main/resources/images/countries/mq.png diff --git a/src/main/resources/images/countries/mr.png b/gui/src/main/resources/images/countries/mr.png similarity index 100% rename from src/main/resources/images/countries/mr.png rename to gui/src/main/resources/images/countries/mr.png diff --git a/src/main/resources/images/countries/ms.png b/gui/src/main/resources/images/countries/ms.png similarity index 100% rename from src/main/resources/images/countries/ms.png rename to gui/src/main/resources/images/countries/ms.png diff --git a/src/main/resources/images/countries/mt.png b/gui/src/main/resources/images/countries/mt.png similarity index 100% rename from src/main/resources/images/countries/mt.png rename to gui/src/main/resources/images/countries/mt.png diff --git a/src/main/resources/images/countries/mu.png b/gui/src/main/resources/images/countries/mu.png similarity index 100% rename from src/main/resources/images/countries/mu.png rename to gui/src/main/resources/images/countries/mu.png diff --git a/src/main/resources/images/countries/mv.png b/gui/src/main/resources/images/countries/mv.png similarity index 100% rename from src/main/resources/images/countries/mv.png rename to gui/src/main/resources/images/countries/mv.png diff --git a/src/main/resources/images/countries/mw.png b/gui/src/main/resources/images/countries/mw.png similarity index 100% rename from src/main/resources/images/countries/mw.png rename to gui/src/main/resources/images/countries/mw.png diff --git a/src/main/resources/images/countries/mx.png b/gui/src/main/resources/images/countries/mx.png similarity index 100% rename from src/main/resources/images/countries/mx.png rename to gui/src/main/resources/images/countries/mx.png diff --git a/src/main/resources/images/countries/my.png b/gui/src/main/resources/images/countries/my.png similarity index 100% rename from src/main/resources/images/countries/my.png rename to gui/src/main/resources/images/countries/my.png diff --git a/src/main/resources/images/countries/mz.png b/gui/src/main/resources/images/countries/mz.png similarity index 100% rename from src/main/resources/images/countries/mz.png rename to gui/src/main/resources/images/countries/mz.png diff --git a/src/main/resources/images/countries/na.png b/gui/src/main/resources/images/countries/na.png similarity index 100% rename from src/main/resources/images/countries/na.png rename to gui/src/main/resources/images/countries/na.png diff --git a/src/main/resources/images/countries/nc.png b/gui/src/main/resources/images/countries/nc.png similarity index 100% rename from src/main/resources/images/countries/nc.png rename to gui/src/main/resources/images/countries/nc.png diff --git a/src/main/resources/images/countries/ne.png b/gui/src/main/resources/images/countries/ne.png similarity index 100% rename from src/main/resources/images/countries/ne.png rename to gui/src/main/resources/images/countries/ne.png diff --git a/src/main/resources/images/countries/nf.png b/gui/src/main/resources/images/countries/nf.png similarity index 100% rename from src/main/resources/images/countries/nf.png rename to gui/src/main/resources/images/countries/nf.png diff --git a/src/main/resources/images/countries/ng.png b/gui/src/main/resources/images/countries/ng.png similarity index 100% rename from src/main/resources/images/countries/ng.png rename to gui/src/main/resources/images/countries/ng.png diff --git a/src/main/resources/images/countries/ni.png b/gui/src/main/resources/images/countries/ni.png similarity index 100% rename from src/main/resources/images/countries/ni.png rename to gui/src/main/resources/images/countries/ni.png diff --git a/src/main/resources/images/countries/nl.png b/gui/src/main/resources/images/countries/nl.png similarity index 100% rename from src/main/resources/images/countries/nl.png rename to gui/src/main/resources/images/countries/nl.png diff --git a/src/main/resources/images/countries/no.png b/gui/src/main/resources/images/countries/no.png similarity index 100% rename from src/main/resources/images/countries/no.png rename to gui/src/main/resources/images/countries/no.png diff --git a/src/main/resources/images/countries/np.png b/gui/src/main/resources/images/countries/np.png similarity index 100% rename from src/main/resources/images/countries/np.png rename to gui/src/main/resources/images/countries/np.png diff --git a/src/main/resources/images/countries/nr.png b/gui/src/main/resources/images/countries/nr.png similarity index 100% rename from src/main/resources/images/countries/nr.png rename to gui/src/main/resources/images/countries/nr.png diff --git a/src/main/resources/images/countries/nu.png b/gui/src/main/resources/images/countries/nu.png similarity index 100% rename from src/main/resources/images/countries/nu.png rename to gui/src/main/resources/images/countries/nu.png diff --git a/src/main/resources/images/countries/nz.png b/gui/src/main/resources/images/countries/nz.png similarity index 100% rename from src/main/resources/images/countries/nz.png rename to gui/src/main/resources/images/countries/nz.png diff --git a/src/main/resources/images/countries/om.png b/gui/src/main/resources/images/countries/om.png similarity index 100% rename from src/main/resources/images/countries/om.png rename to gui/src/main/resources/images/countries/om.png diff --git a/src/main/resources/images/countries/pa.png b/gui/src/main/resources/images/countries/pa.png similarity index 100% rename from src/main/resources/images/countries/pa.png rename to gui/src/main/resources/images/countries/pa.png diff --git a/src/main/resources/images/countries/pe.png b/gui/src/main/resources/images/countries/pe.png similarity index 100% rename from src/main/resources/images/countries/pe.png rename to gui/src/main/resources/images/countries/pe.png diff --git a/src/main/resources/images/countries/pf.png b/gui/src/main/resources/images/countries/pf.png similarity index 100% rename from src/main/resources/images/countries/pf.png rename to gui/src/main/resources/images/countries/pf.png diff --git a/src/main/resources/images/countries/pg.png b/gui/src/main/resources/images/countries/pg.png similarity index 100% rename from src/main/resources/images/countries/pg.png rename to gui/src/main/resources/images/countries/pg.png diff --git a/src/main/resources/images/countries/ph.png b/gui/src/main/resources/images/countries/ph.png similarity index 100% rename from src/main/resources/images/countries/ph.png rename to gui/src/main/resources/images/countries/ph.png diff --git a/src/main/resources/images/countries/pk.png b/gui/src/main/resources/images/countries/pk.png similarity index 100% rename from src/main/resources/images/countries/pk.png rename to gui/src/main/resources/images/countries/pk.png diff --git a/src/main/resources/images/countries/pl.png b/gui/src/main/resources/images/countries/pl.png similarity index 100% rename from src/main/resources/images/countries/pl.png rename to gui/src/main/resources/images/countries/pl.png diff --git a/src/main/resources/images/countries/pm.png b/gui/src/main/resources/images/countries/pm.png similarity index 100% rename from src/main/resources/images/countries/pm.png rename to gui/src/main/resources/images/countries/pm.png diff --git a/src/main/resources/images/countries/pn.png b/gui/src/main/resources/images/countries/pn.png similarity index 100% rename from src/main/resources/images/countries/pn.png rename to gui/src/main/resources/images/countries/pn.png diff --git a/src/main/resources/images/countries/pr.png b/gui/src/main/resources/images/countries/pr.png similarity index 100% rename from src/main/resources/images/countries/pr.png rename to gui/src/main/resources/images/countries/pr.png diff --git a/src/main/resources/images/countries/ps.png b/gui/src/main/resources/images/countries/ps.png similarity index 100% rename from src/main/resources/images/countries/ps.png rename to gui/src/main/resources/images/countries/ps.png diff --git a/src/main/resources/images/countries/pt.png b/gui/src/main/resources/images/countries/pt.png similarity index 100% rename from src/main/resources/images/countries/pt.png rename to gui/src/main/resources/images/countries/pt.png diff --git a/src/main/resources/images/countries/pw.png b/gui/src/main/resources/images/countries/pw.png similarity index 100% rename from src/main/resources/images/countries/pw.png rename to gui/src/main/resources/images/countries/pw.png diff --git a/src/main/resources/images/countries/py.png b/gui/src/main/resources/images/countries/py.png similarity index 100% rename from src/main/resources/images/countries/py.png rename to gui/src/main/resources/images/countries/py.png diff --git a/src/main/resources/images/countries/qa.png b/gui/src/main/resources/images/countries/qa.png similarity index 100% rename from src/main/resources/images/countries/qa.png rename to gui/src/main/resources/images/countries/qa.png diff --git a/src/main/resources/images/countries/re.png b/gui/src/main/resources/images/countries/re.png similarity index 100% rename from src/main/resources/images/countries/re.png rename to gui/src/main/resources/images/countries/re.png diff --git a/src/main/resources/images/countries/ro.png b/gui/src/main/resources/images/countries/ro.png similarity index 100% rename from src/main/resources/images/countries/ro.png rename to gui/src/main/resources/images/countries/ro.png diff --git a/src/main/resources/images/countries/rs.png b/gui/src/main/resources/images/countries/rs.png similarity index 100% rename from src/main/resources/images/countries/rs.png rename to gui/src/main/resources/images/countries/rs.png diff --git a/src/main/resources/images/countries/ru.png b/gui/src/main/resources/images/countries/ru.png similarity index 100% rename from src/main/resources/images/countries/ru.png rename to gui/src/main/resources/images/countries/ru.png diff --git a/src/main/resources/images/countries/rw.png b/gui/src/main/resources/images/countries/rw.png similarity index 100% rename from src/main/resources/images/countries/rw.png rename to gui/src/main/resources/images/countries/rw.png diff --git a/src/main/resources/images/countries/sa.png b/gui/src/main/resources/images/countries/sa.png similarity index 100% rename from src/main/resources/images/countries/sa.png rename to gui/src/main/resources/images/countries/sa.png diff --git a/src/main/resources/images/countries/sb.png b/gui/src/main/resources/images/countries/sb.png similarity index 100% rename from src/main/resources/images/countries/sb.png rename to gui/src/main/resources/images/countries/sb.png diff --git a/src/main/resources/images/countries/sc.png b/gui/src/main/resources/images/countries/sc.png similarity index 100% rename from src/main/resources/images/countries/sc.png rename to gui/src/main/resources/images/countries/sc.png diff --git a/src/main/resources/images/countries/scotland.png b/gui/src/main/resources/images/countries/scotland.png similarity index 100% rename from src/main/resources/images/countries/scotland.png rename to gui/src/main/resources/images/countries/scotland.png diff --git a/src/main/resources/images/countries/sd.png b/gui/src/main/resources/images/countries/sd.png similarity index 100% rename from src/main/resources/images/countries/sd.png rename to gui/src/main/resources/images/countries/sd.png diff --git a/src/main/resources/images/countries/se.png b/gui/src/main/resources/images/countries/se.png similarity index 100% rename from src/main/resources/images/countries/se.png rename to gui/src/main/resources/images/countries/se.png diff --git a/src/main/resources/images/countries/sg.png b/gui/src/main/resources/images/countries/sg.png similarity index 100% rename from src/main/resources/images/countries/sg.png rename to gui/src/main/resources/images/countries/sg.png diff --git a/src/main/resources/images/countries/sh.png b/gui/src/main/resources/images/countries/sh.png similarity index 100% rename from src/main/resources/images/countries/sh.png rename to gui/src/main/resources/images/countries/sh.png diff --git a/src/main/resources/images/countries/si.png b/gui/src/main/resources/images/countries/si.png similarity index 100% rename from src/main/resources/images/countries/si.png rename to gui/src/main/resources/images/countries/si.png diff --git a/src/main/resources/images/countries/sj.png b/gui/src/main/resources/images/countries/sj.png similarity index 100% rename from src/main/resources/images/countries/sj.png rename to gui/src/main/resources/images/countries/sj.png diff --git a/src/main/resources/images/countries/sk.png b/gui/src/main/resources/images/countries/sk.png similarity index 100% rename from src/main/resources/images/countries/sk.png rename to gui/src/main/resources/images/countries/sk.png diff --git a/src/main/resources/images/countries/sl.png b/gui/src/main/resources/images/countries/sl.png similarity index 100% rename from src/main/resources/images/countries/sl.png rename to gui/src/main/resources/images/countries/sl.png diff --git a/src/main/resources/images/countries/sm.png b/gui/src/main/resources/images/countries/sm.png similarity index 100% rename from src/main/resources/images/countries/sm.png rename to gui/src/main/resources/images/countries/sm.png diff --git a/src/main/resources/images/countries/sn.png b/gui/src/main/resources/images/countries/sn.png similarity index 100% rename from src/main/resources/images/countries/sn.png rename to gui/src/main/resources/images/countries/sn.png diff --git a/src/main/resources/images/countries/so.png b/gui/src/main/resources/images/countries/so.png similarity index 100% rename from src/main/resources/images/countries/so.png rename to gui/src/main/resources/images/countries/so.png diff --git a/src/main/resources/images/countries/sr.png b/gui/src/main/resources/images/countries/sr.png similarity index 100% rename from src/main/resources/images/countries/sr.png rename to gui/src/main/resources/images/countries/sr.png diff --git a/src/main/resources/images/countries/st.png b/gui/src/main/resources/images/countries/st.png similarity index 100% rename from src/main/resources/images/countries/st.png rename to gui/src/main/resources/images/countries/st.png diff --git a/src/main/resources/images/countries/sv.png b/gui/src/main/resources/images/countries/sv.png similarity index 100% rename from src/main/resources/images/countries/sv.png rename to gui/src/main/resources/images/countries/sv.png diff --git a/src/main/resources/images/countries/sy.png b/gui/src/main/resources/images/countries/sy.png similarity index 100% rename from src/main/resources/images/countries/sy.png rename to gui/src/main/resources/images/countries/sy.png diff --git a/src/main/resources/images/countries/sz.png b/gui/src/main/resources/images/countries/sz.png similarity index 100% rename from src/main/resources/images/countries/sz.png rename to gui/src/main/resources/images/countries/sz.png diff --git a/src/main/resources/images/countries/tc.png b/gui/src/main/resources/images/countries/tc.png similarity index 100% rename from src/main/resources/images/countries/tc.png rename to gui/src/main/resources/images/countries/tc.png diff --git a/src/main/resources/images/countries/td.png b/gui/src/main/resources/images/countries/td.png similarity index 100% rename from src/main/resources/images/countries/td.png rename to gui/src/main/resources/images/countries/td.png diff --git a/src/main/resources/images/countries/tf.png b/gui/src/main/resources/images/countries/tf.png similarity index 100% rename from src/main/resources/images/countries/tf.png rename to gui/src/main/resources/images/countries/tf.png diff --git a/src/main/resources/images/countries/tg.png b/gui/src/main/resources/images/countries/tg.png similarity index 100% rename from src/main/resources/images/countries/tg.png rename to gui/src/main/resources/images/countries/tg.png diff --git a/src/main/resources/images/countries/th.png b/gui/src/main/resources/images/countries/th.png similarity index 100% rename from src/main/resources/images/countries/th.png rename to gui/src/main/resources/images/countries/th.png diff --git a/src/main/resources/images/countries/tj.png b/gui/src/main/resources/images/countries/tj.png similarity index 100% rename from src/main/resources/images/countries/tj.png rename to gui/src/main/resources/images/countries/tj.png diff --git a/src/main/resources/images/countries/tk.png b/gui/src/main/resources/images/countries/tk.png similarity index 100% rename from src/main/resources/images/countries/tk.png rename to gui/src/main/resources/images/countries/tk.png diff --git a/src/main/resources/images/countries/tl.png b/gui/src/main/resources/images/countries/tl.png similarity index 100% rename from src/main/resources/images/countries/tl.png rename to gui/src/main/resources/images/countries/tl.png diff --git a/src/main/resources/images/countries/tm.png b/gui/src/main/resources/images/countries/tm.png similarity index 100% rename from src/main/resources/images/countries/tm.png rename to gui/src/main/resources/images/countries/tm.png diff --git a/src/main/resources/images/countries/tn.png b/gui/src/main/resources/images/countries/tn.png similarity index 100% rename from src/main/resources/images/countries/tn.png rename to gui/src/main/resources/images/countries/tn.png diff --git a/src/main/resources/images/countries/to.png b/gui/src/main/resources/images/countries/to.png similarity index 100% rename from src/main/resources/images/countries/to.png rename to gui/src/main/resources/images/countries/to.png diff --git a/src/main/resources/images/countries/tr.png b/gui/src/main/resources/images/countries/tr.png similarity index 100% rename from src/main/resources/images/countries/tr.png rename to gui/src/main/resources/images/countries/tr.png diff --git a/src/main/resources/images/countries/tt.png b/gui/src/main/resources/images/countries/tt.png similarity index 100% rename from src/main/resources/images/countries/tt.png rename to gui/src/main/resources/images/countries/tt.png diff --git a/src/main/resources/images/countries/tv.png b/gui/src/main/resources/images/countries/tv.png similarity index 100% rename from src/main/resources/images/countries/tv.png rename to gui/src/main/resources/images/countries/tv.png diff --git a/src/main/resources/images/countries/tw.png b/gui/src/main/resources/images/countries/tw.png similarity index 100% rename from src/main/resources/images/countries/tw.png rename to gui/src/main/resources/images/countries/tw.png diff --git a/src/main/resources/images/countries/tz.png b/gui/src/main/resources/images/countries/tz.png similarity index 100% rename from src/main/resources/images/countries/tz.png rename to gui/src/main/resources/images/countries/tz.png diff --git a/src/main/resources/images/countries/ua.png b/gui/src/main/resources/images/countries/ua.png similarity index 100% rename from src/main/resources/images/countries/ua.png rename to gui/src/main/resources/images/countries/ua.png diff --git a/src/main/resources/images/countries/ug.png b/gui/src/main/resources/images/countries/ug.png similarity index 100% rename from src/main/resources/images/countries/ug.png rename to gui/src/main/resources/images/countries/ug.png diff --git a/src/main/resources/images/countries/uk.png b/gui/src/main/resources/images/countries/uk.png similarity index 100% rename from src/main/resources/images/countries/uk.png rename to gui/src/main/resources/images/countries/uk.png diff --git a/src/main/resources/images/countries/um.png b/gui/src/main/resources/images/countries/um.png similarity index 100% rename from src/main/resources/images/countries/um.png rename to gui/src/main/resources/images/countries/um.png diff --git a/src/main/resources/images/countries/us.png b/gui/src/main/resources/images/countries/us.png similarity index 100% rename from src/main/resources/images/countries/us.png rename to gui/src/main/resources/images/countries/us.png diff --git a/src/main/resources/images/countries/uy.png b/gui/src/main/resources/images/countries/uy.png similarity index 100% rename from src/main/resources/images/countries/uy.png rename to gui/src/main/resources/images/countries/uy.png diff --git a/src/main/resources/images/countries/uz.png b/gui/src/main/resources/images/countries/uz.png similarity index 100% rename from src/main/resources/images/countries/uz.png rename to gui/src/main/resources/images/countries/uz.png diff --git a/src/main/resources/images/countries/va.png b/gui/src/main/resources/images/countries/va.png similarity index 100% rename from src/main/resources/images/countries/va.png rename to gui/src/main/resources/images/countries/va.png diff --git a/src/main/resources/images/countries/vc.png b/gui/src/main/resources/images/countries/vc.png similarity index 100% rename from src/main/resources/images/countries/vc.png rename to gui/src/main/resources/images/countries/vc.png diff --git a/src/main/resources/images/countries/ve.png b/gui/src/main/resources/images/countries/ve.png similarity index 100% rename from src/main/resources/images/countries/ve.png rename to gui/src/main/resources/images/countries/ve.png diff --git a/src/main/resources/images/countries/vg.png b/gui/src/main/resources/images/countries/vg.png similarity index 100% rename from src/main/resources/images/countries/vg.png rename to gui/src/main/resources/images/countries/vg.png diff --git a/src/main/resources/images/countries/vi.png b/gui/src/main/resources/images/countries/vi.png similarity index 100% rename from src/main/resources/images/countries/vi.png rename to gui/src/main/resources/images/countries/vi.png diff --git a/src/main/resources/images/countries/vn.png b/gui/src/main/resources/images/countries/vn.png similarity index 100% rename from src/main/resources/images/countries/vn.png rename to gui/src/main/resources/images/countries/vn.png diff --git a/src/main/resources/images/countries/vu.png b/gui/src/main/resources/images/countries/vu.png similarity index 100% rename from src/main/resources/images/countries/vu.png rename to gui/src/main/resources/images/countries/vu.png diff --git a/src/main/resources/images/countries/wales.png b/gui/src/main/resources/images/countries/wales.png similarity index 100% rename from src/main/resources/images/countries/wales.png rename to gui/src/main/resources/images/countries/wales.png diff --git a/src/main/resources/images/countries/wf.png b/gui/src/main/resources/images/countries/wf.png similarity index 100% rename from src/main/resources/images/countries/wf.png rename to gui/src/main/resources/images/countries/wf.png diff --git a/src/main/resources/images/countries/ws.png b/gui/src/main/resources/images/countries/ws.png similarity index 100% rename from src/main/resources/images/countries/ws.png rename to gui/src/main/resources/images/countries/ws.png diff --git a/src/main/resources/images/countries/ye.png b/gui/src/main/resources/images/countries/ye.png similarity index 100% rename from src/main/resources/images/countries/ye.png rename to gui/src/main/resources/images/countries/ye.png diff --git a/src/main/resources/images/countries/yt.png b/gui/src/main/resources/images/countries/yt.png similarity index 100% rename from src/main/resources/images/countries/yt.png rename to gui/src/main/resources/images/countries/yt.png diff --git a/src/main/resources/images/countries/za.png b/gui/src/main/resources/images/countries/za.png similarity index 100% rename from src/main/resources/images/countries/za.png rename to gui/src/main/resources/images/countries/za.png diff --git a/src/main/resources/images/countries/zm.png b/gui/src/main/resources/images/countries/zm.png similarity index 100% rename from src/main/resources/images/countries/zm.png rename to gui/src/main/resources/images/countries/zm.png diff --git a/src/main/resources/images/countries/zw.png b/gui/src/main/resources/images/countries/zw.png similarity index 100% rename from src/main/resources/images/countries/zw.png rename to gui/src/main/resources/images/countries/zw.png diff --git a/src/main/resources/images/expand.png b/gui/src/main/resources/images/expand.png similarity index 100% rename from src/main/resources/images/expand.png rename to gui/src/main/resources/images/expand.png diff --git a/src/main/resources/images/expand@2x.png b/gui/src/main/resources/images/expand@2x.png similarity index 100% rename from src/main/resources/images/expand@2x.png rename to gui/src/main/resources/images/expand@2x.png diff --git a/src/main/resources/images/info.png b/gui/src/main/resources/images/info.png similarity index 100% rename from src/main/resources/images/info.png rename to gui/src/main/resources/images/info.png diff --git a/src/main/resources/images/info@2x.png b/gui/src/main/resources/images/info@2x.png similarity index 100% rename from src/main/resources/images/info@2x.png rename to gui/src/main/resources/images/info@2x.png diff --git a/src/main/resources/images/logo_splash.png b/gui/src/main/resources/images/logo_splash.png similarity index 100% rename from src/main/resources/images/logo_splash.png rename to gui/src/main/resources/images/logo_splash.png diff --git a/src/main/resources/images/logo_splash@2x.png b/gui/src/main/resources/images/logo_splash@2x.png similarity index 100% rename from src/main/resources/images/logo_splash@2x.png rename to gui/src/main/resources/images/logo_splash@2x.png diff --git a/src/main/resources/images/nav/account.png b/gui/src/main/resources/images/nav/account.png similarity index 100% rename from src/main/resources/images/nav/account.png rename to gui/src/main/resources/images/nav/account.png diff --git a/src/main/resources/images/nav/account@2x.png b/gui/src/main/resources/images/nav/account@2x.png similarity index 100% rename from src/main/resources/images/nav/account@2x.png rename to gui/src/main/resources/images/nav/account@2x.png diff --git a/src/main/resources/images/nav/account_active.png b/gui/src/main/resources/images/nav/account_active.png similarity index 100% rename from src/main/resources/images/nav/account_active.png rename to gui/src/main/resources/images/nav/account_active.png diff --git a/src/main/resources/images/nav/account_active@2x.png b/gui/src/main/resources/images/nav/account_active@2x.png similarity index 100% rename from src/main/resources/images/nav/account_active@2x.png rename to gui/src/main/resources/images/nav/account_active@2x.png diff --git a/src/main/resources/images/nav/buy.png b/gui/src/main/resources/images/nav/buy.png similarity index 100% rename from src/main/resources/images/nav/buy.png rename to gui/src/main/resources/images/nav/buy.png diff --git a/src/main/resources/images/nav/buy@2x.png b/gui/src/main/resources/images/nav/buy@2x.png similarity index 100% rename from src/main/resources/images/nav/buy@2x.png rename to gui/src/main/resources/images/nav/buy@2x.png diff --git a/src/main/resources/images/nav/buy_active.png b/gui/src/main/resources/images/nav/buy_active.png similarity index 100% rename from src/main/resources/images/nav/buy_active.png rename to gui/src/main/resources/images/nav/buy_active.png diff --git a/src/main/resources/images/nav/buy_active@2x.png b/gui/src/main/resources/images/nav/buy_active@2x.png similarity index 100% rename from src/main/resources/images/nav/buy_active@2x.png rename to gui/src/main/resources/images/nav/buy_active@2x.png diff --git a/src/main/resources/images/nav/funds.png b/gui/src/main/resources/images/nav/funds.png similarity index 100% rename from src/main/resources/images/nav/funds.png rename to gui/src/main/resources/images/nav/funds.png diff --git a/src/main/resources/images/nav/funds@2x.png b/gui/src/main/resources/images/nav/funds@2x.png similarity index 100% rename from src/main/resources/images/nav/funds@2x.png rename to gui/src/main/resources/images/nav/funds@2x.png diff --git a/src/main/resources/images/nav/funds_active.png b/gui/src/main/resources/images/nav/funds_active.png similarity index 100% rename from src/main/resources/images/nav/funds_active.png rename to gui/src/main/resources/images/nav/funds_active.png diff --git a/src/main/resources/images/nav/funds_active@2x.png b/gui/src/main/resources/images/nav/funds_active@2x.png similarity index 100% rename from src/main/resources/images/nav/funds_active@2x.png rename to gui/src/main/resources/images/nav/funds_active@2x.png diff --git a/src/main/resources/images/nav/home.png b/gui/src/main/resources/images/nav/home.png similarity index 100% rename from src/main/resources/images/nav/home.png rename to gui/src/main/resources/images/nav/home.png diff --git a/src/main/resources/images/nav/home@2x.png b/gui/src/main/resources/images/nav/home@2x.png similarity index 100% rename from src/main/resources/images/nav/home@2x.png rename to gui/src/main/resources/images/nav/home@2x.png diff --git a/src/main/resources/images/nav/home_active.png b/gui/src/main/resources/images/nav/home_active.png similarity index 100% rename from src/main/resources/images/nav/home_active.png rename to gui/src/main/resources/images/nav/home_active.png diff --git a/src/main/resources/images/nav/home_active@2x.png b/gui/src/main/resources/images/nav/home_active@2x.png similarity index 100% rename from src/main/resources/images/nav/home_active@2x.png rename to gui/src/main/resources/images/nav/home_active@2x.png diff --git a/src/main/resources/images/nav/msg.png b/gui/src/main/resources/images/nav/msg.png similarity index 100% rename from src/main/resources/images/nav/msg.png rename to gui/src/main/resources/images/nav/msg.png diff --git a/src/main/resources/images/nav/msg@2x.png b/gui/src/main/resources/images/nav/msg@2x.png similarity index 100% rename from src/main/resources/images/nav/msg@2x.png rename to gui/src/main/resources/images/nav/msg@2x.png diff --git a/src/main/resources/images/nav/msg_active.png b/gui/src/main/resources/images/nav/msg_active.png similarity index 100% rename from src/main/resources/images/nav/msg_active.png rename to gui/src/main/resources/images/nav/msg_active.png diff --git a/src/main/resources/images/nav/msg_active@2x.png b/gui/src/main/resources/images/nav/msg_active@2x.png similarity index 100% rename from src/main/resources/images/nav/msg_active@2x.png rename to gui/src/main/resources/images/nav/msg_active@2x.png diff --git a/src/main/resources/images/nav/portfolio.png b/gui/src/main/resources/images/nav/portfolio.png similarity index 100% rename from src/main/resources/images/nav/portfolio.png rename to gui/src/main/resources/images/nav/portfolio.png diff --git a/src/main/resources/images/nav/portfolio@2x.png b/gui/src/main/resources/images/nav/portfolio@2x.png similarity index 100% rename from src/main/resources/images/nav/portfolio@2x.png rename to gui/src/main/resources/images/nav/portfolio@2x.png diff --git a/src/main/resources/images/nav/portfolio_active.png b/gui/src/main/resources/images/nav/portfolio_active.png similarity index 100% rename from src/main/resources/images/nav/portfolio_active.png rename to gui/src/main/resources/images/nav/portfolio_active.png diff --git a/src/main/resources/images/nav/portfolio_active@2x.png b/gui/src/main/resources/images/nav/portfolio_active@2x.png similarity index 100% rename from src/main/resources/images/nav/portfolio_active@2x.png rename to gui/src/main/resources/images/nav/portfolio_active@2x.png diff --git a/src/main/resources/images/nav/sell.png b/gui/src/main/resources/images/nav/sell.png similarity index 100% rename from src/main/resources/images/nav/sell.png rename to gui/src/main/resources/images/nav/sell.png diff --git a/src/main/resources/images/nav/sell@2x.png b/gui/src/main/resources/images/nav/sell@2x.png similarity index 100% rename from src/main/resources/images/nav/sell@2x.png rename to gui/src/main/resources/images/nav/sell@2x.png diff --git a/src/main/resources/images/nav/sell_active.png b/gui/src/main/resources/images/nav/sell_active.png similarity index 100% rename from src/main/resources/images/nav/sell_active.png rename to gui/src/main/resources/images/nav/sell_active.png diff --git a/src/main/resources/images/nav/sell_active@2x.png b/gui/src/main/resources/images/nav/sell_active@2x.png similarity index 100% rename from src/main/resources/images/nav/sell_active@2x.png rename to gui/src/main/resources/images/nav/sell_active@2x.png diff --git a/src/main/resources/images/nav/settings.png b/gui/src/main/resources/images/nav/settings.png similarity index 100% rename from src/main/resources/images/nav/settings.png rename to gui/src/main/resources/images/nav/settings.png diff --git a/src/main/resources/images/nav/settings@2x.png b/gui/src/main/resources/images/nav/settings@2x.png similarity index 100% rename from src/main/resources/images/nav/settings@2x.png rename to gui/src/main/resources/images/nav/settings@2x.png diff --git a/src/main/resources/images/nav/settings_active.png b/gui/src/main/resources/images/nav/settings_active.png similarity index 100% rename from src/main/resources/images/nav/settings_active.png rename to gui/src/main/resources/images/nav/settings_active.png diff --git a/src/main/resources/images/nav/settings_active@2x.png b/gui/src/main/resources/images/nav/settings_active@2x.png similarity index 100% rename from src/main/resources/images/nav/settings_active@2x.png rename to gui/src/main/resources/images/nav/settings_active@2x.png diff --git a/src/main/resources/images/notification_logo.png b/gui/src/main/resources/images/notification_logo.png similarity index 100% rename from src/main/resources/images/notification_logo.png rename to gui/src/main/resources/images/notification_logo.png diff --git a/src/main/resources/images/notification_logo@2x.png b/gui/src/main/resources/images/notification_logo@2x.png similarity index 100% rename from src/main/resources/images/notification_logo@2x.png rename to gui/src/main/resources/images/notification_logo@2x.png diff --git a/src/main/resources/images/remove.png b/gui/src/main/resources/images/remove.png similarity index 100% rename from src/main/resources/images/remove.png rename to gui/src/main/resources/images/remove.png diff --git a/src/main/resources/images/remove@2x.png b/gui/src/main/resources/images/remove@2x.png similarity index 100% rename from src/main/resources/images/remove@2x.png rename to gui/src/main/resources/images/remove@2x.png diff --git a/src/main/resources/images/sell.png b/gui/src/main/resources/images/sell.png similarity index 100% rename from src/main/resources/images/sell.png rename to gui/src/main/resources/images/sell.png diff --git a/src/main/resources/images/sell@2x.png b/gui/src/main/resources/images/sell@2x.png similarity index 100% rename from src/main/resources/images/sell@2x.png rename to gui/src/main/resources/images/sell@2x.png diff --git a/src/main/resources/images/sell_large.png b/gui/src/main/resources/images/sell_large.png similarity index 100% rename from src/main/resources/images/sell_large.png rename to gui/src/main/resources/images/sell_large.png diff --git a/src/main/resources/images/sell_large@2x.png b/gui/src/main/resources/images/sell_large@2x.png similarity index 100% rename from src/main/resources/images/sell_large@2x.png rename to gui/src/main/resources/images/sell_large@2x.png diff --git a/src/main/resources/images/system_tray_icon.png b/gui/src/main/resources/images/system_tray_icon.png similarity index 100% rename from src/main/resources/images/system_tray_icon.png rename to gui/src/main/resources/images/system_tray_icon.png diff --git a/src/main/resources/images/system_tray_icon@2x.png b/gui/src/main/resources/images/system_tray_icon@2x.png similarity index 100% rename from src/main/resources/images/system_tray_icon@2x.png rename to gui/src/main/resources/images/system_tray_icon@2x.png diff --git a/src/main/resources/images/system_tray_icon_linux.png b/gui/src/main/resources/images/system_tray_icon_linux.png similarity index 100% rename from src/main/resources/images/system_tray_icon_linux.png rename to gui/src/main/resources/images/system_tray_icon_linux.png diff --git a/src/main/resources/images/system_tray_icon_windows.png b/gui/src/main/resources/images/system_tray_icon_windows.png similarity index 100% rename from src/main/resources/images/system_tray_icon_windows.png rename to gui/src/main/resources/images/system_tray_icon_windows.png diff --git a/src/main/resources/images/task_bar_icon_linux.png b/gui/src/main/resources/images/task_bar_icon_linux.png similarity index 100% rename from src/main/resources/images/task_bar_icon_linux.png rename to gui/src/main/resources/images/task_bar_icon_linux.png diff --git a/src/main/resources/images/task_bar_icon_windows.png b/gui/src/main/resources/images/task_bar_icon_windows.png similarity index 100% rename from src/main/resources/images/task_bar_icon_windows.png rename to gui/src/main/resources/images/task_bar_icon_windows.png diff --git a/src/main/resources/images/tick.png b/gui/src/main/resources/images/tick.png similarity index 100% rename from src/main/resources/images/tick.png rename to gui/src/main/resources/images/tick.png diff --git a/src/main/resources/images/tick@2x.png b/gui/src/main/resources/images/tick@2x.png similarity index 100% rename from src/main/resources/images/tick@2x.png rename to gui/src/main/resources/images/tick@2x.png diff --git a/src/main/resources/images/update/update_available.png b/gui/src/main/resources/images/update/update_available.png similarity index 100% rename from src/main/resources/images/update/update_available.png rename to gui/src/main/resources/images/update/update_available.png diff --git a/src/main/resources/images/update/update_available@2x.png b/gui/src/main/resources/images/update/update_available@2x.png similarity index 100% rename from src/main/resources/images/update/update_available@2x.png rename to gui/src/main/resources/images/update/update_available@2x.png diff --git a/src/main/resources/images/update/update_failed.png b/gui/src/main/resources/images/update/update_failed.png similarity index 100% rename from src/main/resources/images/update/update_failed.png rename to gui/src/main/resources/images/update/update_failed.png diff --git a/src/main/resources/images/update/update_failed@2x.png b/gui/src/main/resources/images/update/update_failed@2x.png similarity index 100% rename from src/main/resources/images/update/update_failed@2x.png rename to gui/src/main/resources/images/update/update_failed@2x.png diff --git a/src/main/resources/images/update/update_in_progress.png b/gui/src/main/resources/images/update/update_in_progress.png similarity index 100% rename from src/main/resources/images/update/update_in_progress.png rename to gui/src/main/resources/images/update/update_in_progress.png diff --git a/src/main/resources/images/update/update_in_progress@2x.png b/gui/src/main/resources/images/update/update_in_progress@2x.png similarity index 100% rename from src/main/resources/images/update/update_in_progress@2x.png rename to gui/src/main/resources/images/update/update_in_progress@2x.png diff --git a/src/main/resources/images/update/update_up_to_date.png b/gui/src/main/resources/images/update/update_up_to_date.png similarity index 100% rename from src/main/resources/images/update/update_up_to_date.png rename to gui/src/main/resources/images/update/update_up_to_date.png diff --git a/src/main/resources/images/update/update_up_to_date@2x.png b/gui/src/main/resources/images/update/update_up_to_date@2x.png similarity index 100% rename from src/main/resources/images/update/update_up_to_date@2x.png rename to gui/src/main/resources/images/update/update_up_to_date@2x.png diff --git a/src/main/resources/images/window_icon.png b/gui/src/main/resources/images/window_icon.png similarity index 100% rename from src/main/resources/images/window_icon.png rename to gui/src/main/resources/images/window_icon.png diff --git a/src/main/resources/images/window_icon@2x.png b/gui/src/main/resources/images/window_icon@2x.png similarity index 100% rename from src/main/resources/images/window_icon@2x.png rename to gui/src/main/resources/images/window_icon@2x.png diff --git a/src/main/resources/logback.xml b/gui/src/main/resources/logback.xml similarity index 100% rename from src/main/resources/logback.xml rename to gui/src/main/resources/logback.xml diff --git a/src/main/resources/wallet/checkpoints b/gui/src/main/resources/wallet/checkpoints similarity index 100% rename from src/main/resources/wallet/checkpoints rename to gui/src/main/resources/wallet/checkpoints diff --git a/src/main/resources/wallet/checkpoints.testnet b/gui/src/main/resources/wallet/checkpoints.testnet similarity index 100% rename from src/main/resources/wallet/checkpoints.testnet rename to gui/src/main/resources/wallet/checkpoints.testnet diff --git a/src/test/java/io/bitsquare/app/BitsquareEnvironmentTests.java b/gui/src/test/java/io/bitsquare/app/BitsquareEnvironmentTests.java similarity index 100% rename from src/test/java/io/bitsquare/app/BitsquareEnvironmentTests.java rename to gui/src/test/java/io/bitsquare/app/BitsquareEnvironmentTests.java diff --git a/src/test/java/io/bitsquare/btc/RestrictionsTest.java b/gui/src/test/java/io/bitsquare/btc/RestrictionsTest.java similarity index 100% rename from src/test/java/io/bitsquare/btc/RestrictionsTest.java rename to gui/src/test/java/io/bitsquare/btc/RestrictionsTest.java diff --git a/src/test/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModelTest.java b/gui/src/test/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModelTest.java similarity index 100% rename from src/test/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModelTest.java rename to gui/src/test/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModelTest.java diff --git a/src/test/java/io/bitsquare/gui/util/BSFormatterTest.java b/gui/src/test/java/io/bitsquare/gui/util/BSFormatterTest.java similarity index 100% rename from src/test/java/io/bitsquare/gui/util/BSFormatterTest.java rename to gui/src/test/java/io/bitsquare/gui/util/BSFormatterTest.java diff --git a/src/test/java/io/bitsquare/gui/util/validation/BtcValidatorTest.java b/gui/src/test/java/io/bitsquare/gui/util/validation/BtcValidatorTest.java similarity index 100% rename from src/test/java/io/bitsquare/gui/util/validation/BtcValidatorTest.java rename to gui/src/test/java/io/bitsquare/gui/util/validation/BtcValidatorTest.java diff --git a/src/test/java/io/bitsquare/gui/util/validation/FiatValidatorTest.java b/gui/src/test/java/io/bitsquare/gui/util/validation/FiatValidatorTest.java similarity index 100% rename from src/test/java/io/bitsquare/gui/util/validation/FiatValidatorTest.java rename to gui/src/test/java/io/bitsquare/gui/util/validation/FiatValidatorTest.java diff --git a/src/test/java/io/bitsquare/msg/TomP2PTests.java b/gui/src/test/java/io/bitsquare/msg/TomP2PTests.java similarity index 100% rename from src/test/java/io/bitsquare/msg/TomP2PTests.java rename to gui/src/test/java/io/bitsquare/msg/TomP2PTests.java diff --git a/src/test/java/io/bitsquare/msg/tomp2p/TomP2PNodeTest.java b/gui/src/test/java/io/bitsquare/msg/tomp2p/TomP2PNodeTest.java similarity index 100% rename from src/test/java/io/bitsquare/msg/tomp2p/TomP2PNodeTest.java rename to gui/src/test/java/io/bitsquare/msg/tomp2p/TomP2PNodeTest.java diff --git a/src/test/java/io/bitsquare/network/NodeTests.java b/gui/src/test/java/io/bitsquare/network/NodeTests.java similarity index 100% rename from src/test/java/io/bitsquare/network/NodeTests.java rename to gui/src/test/java/io/bitsquare/network/NodeTests.java diff --git a/src/test/java/io/bitsquare/network/tomp2p/TomP2PPeerTest.java b/gui/src/test/java/io/bitsquare/network/tomp2p/TomP2PPeerTest.java similarity index 100% rename from src/test/java/io/bitsquare/network/tomp2p/TomP2PPeerTest.java rename to gui/src/test/java/io/bitsquare/network/tomp2p/TomP2PPeerTest.java diff --git a/src/test/java/io/bitsquare/util/Repeat.java b/gui/src/test/java/io/bitsquare/util/Repeat.java similarity index 100% rename from src/test/java/io/bitsquare/util/Repeat.java rename to gui/src/test/java/io/bitsquare/util/Repeat.java diff --git a/src/test/java/io/bitsquare/util/RepeatRule.java b/gui/src/test/java/io/bitsquare/util/RepeatRule.java similarity index 100% rename from src/test/java/io/bitsquare/util/RepeatRule.java rename to gui/src/test/java/io/bitsquare/util/RepeatRule.java diff --git a/src/test/java/io/bitsquare/util/RepeatRuleTests.java b/gui/src/test/java/io/bitsquare/util/RepeatRuleTests.java similarity index 100% rename from src/test/java/io/bitsquare/util/RepeatRuleTests.java rename to gui/src/test/java/io/bitsquare/util/RepeatRuleTests.java diff --git a/src/test/java/net/tomp2p/dht/UtilsDHT2.java b/gui/src/test/java/net/tomp2p/dht/UtilsDHT2.java similarity index 100% rename from src/test/java/net/tomp2p/dht/UtilsDHT2.java rename to gui/src/test/java/net/tomp2p/dht/UtilsDHT2.java diff --git a/src/test/java/viewfx/view/support/CachingViewLoaderTests.java b/gui/src/test/java/viewfx/view/support/CachingViewLoaderTests.java similarity index 100% rename from src/test/java/viewfx/view/support/CachingViewLoaderTests.java rename to gui/src/test/java/viewfx/view/support/CachingViewLoaderTests.java diff --git a/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$Malformed.fxml b/gui/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$Malformed.fxml similarity index 100% rename from src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$Malformed.fxml rename to gui/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$Malformed.fxml diff --git a/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$MissingFxController.fxml b/gui/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$MissingFxController.fxml similarity index 100% rename from src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$MissingFxController.fxml rename to gui/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$MissingFxController.fxml diff --git a/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$MissingFxmlViewAnnotation.fxml b/gui/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$MissingFxmlViewAnnotation.fxml similarity index 100% rename from src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$MissingFxmlViewAnnotation.fxml rename to gui/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$MissingFxmlViewAnnotation.fxml diff --git a/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$WellFormed.fxml b/gui/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$WellFormed.fxml similarity index 100% rename from src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$WellFormed.fxml rename to gui/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests$WellFormed.fxml diff --git a/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests.java b/gui/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests.java similarity index 100% rename from src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests.java rename to gui/src/test/java/viewfx/view/support/fxml/FxmlViewLoaderTests.java diff --git a/package/linux.sh b/package/linux.sh deleted file mode 100755 index 5b32e45b48..0000000000 --- a/package/linux.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -set -e - -version=$1 -jar=$2 -mainClass=$3 - -javapackager -deploy \ - -BappVersion=$version \ - -Bcategory=Finance \ - -BlicenseType=GPLv3 \ - -Bemail=info@bitsquare.io \ - -native deb \ - -name Bitsquare \ - -title Bitsquare \ - -vendor Bitsquare \ - -outdir build \ - -appclass $mainClass \ - -srcfiles $jar \ - -outfile Bitsquare - -# -Bicon=client/icons/icon.png \ diff --git a/package/linux/build_create_app.sh b/package/linux/build_create_app.sh new file mode 100644 index 0000000000..062ccd985f --- /dev/null +++ b/package/linux/build_create_app.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +cd ../../ +mvn clean package -DskipTests -Dmaven.javadoc.skip=true +cp gui/target/shaded.jar gui/updatefx/builds/1.jar + +# edit url +java -jar ./updatefx/updatefx-app-1.2.jar --url=http://localhost:8000/ gui/updatefx + +# Note: fakeroot needs to be installed on linux +$JAVA_HOME/bin/javapackager \ + -deploy \ + -BappVersion=0.1.1-SNAPSHOT \ + -Bcategory=Finance \ + -Bemail=team@bitsquare.io \ + -BlicenseType=GPLv3 \ + -native deb \ + -name Bitsquare \ + -title Bitsquare \ + -vendor Bitsquare \ + -outdir gui/deploy \ + -srcfiles gui/updatefx/builds/processed/1.jar \ + -appclass io.bitsquare.app.gui.BitsquareAppMain \ + -outfile Bitsquare + +# TODO icons: -Bicon=client/icons/icon.png \ + +cd package/linux diff --git a/package/linux/build_setup.sh b/package/linux/build_setup.sh new file mode 100644 index 0000000000..a60f34d934 --- /dev/null +++ b/package/linux/build_setup.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# setup dirs +cd ../../ +mkdir gui/updatefx +mkdir gui/updatefx/builds +mkdir gui/updatefx/builds/processed +mkdir gui/updatefx/site +mkdir gui/deploy + +# create key/wallet. Copy wallet to UpdateProcess or use wallet form other OS build +java -jar ./updatefx/updatefx-app-1.2.jar --url=http://localhost:8000/ gui/updatefx + +cd package/linux + +# start webserver for update data +# cd ../../gui/updatefx/site +# python -m SimpleHTTPServer 8000 diff --git a/package/linux/build_update.sh b/package/linux/build_update.sh new file mode 100644 index 0000000000..dbc24ff812 --- /dev/null +++ b/package/linux/build_update.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +cd ../../ +mvn clean package -DskipTests -Dmaven.javadoc.skip=true + +# edit version /*.jar +cp gui/target/shaded.jar gui/updatefx/builds/2.jar + +# edit url +java -jar ./updatefx/updatefx-app-1.2.jar --url=http://localhost:8000/ gui/updatefx + +cd package/linux \ No newline at end of file diff --git a/package/mac.sh b/package/mac.sh deleted file mode 100755 index d8f0882c28..0000000000 --- a/package/mac.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -set -e - -version=$1 -jar=$2 -mainClass=$3 - -$JAVA_HOME/bin/javapackager \ - -deploy \ - -BappVersion=$version \ - -Bmac.CFBundleIdentifier=bitsquare \ - -Bmac.CFBundleName=Bitsquare \ - -Bruntime="$JAVA_HOME/../../" \ - -native dmg \ - -name Bitsquare \ - -title Bitsquare \ - -vendor Bitsquare \ - -outdir build \ - -srcfiles $jar \ - -appclass $mainClass \ - -outfile Bitsquare - -#-Bicon=client/icons/mac.icns \ diff --git a/package/mac/Bitsquare.icns b/package/mac/Bitsquare.icns new file mode 100644 index 0000000000..5464bb5b61 Binary files /dev/null and b/package/mac/Bitsquare.icns differ diff --git a/src/deploy/package/shortcut-128.png b/package/mac/Bitsquare.iconset/icon_128x128.png similarity index 100% rename from src/deploy/package/shortcut-128.png rename to package/mac/Bitsquare.iconset/icon_128x128.png diff --git a/src/deploy/package/shortcut-128@2x.png b/package/mac/Bitsquare.iconset/icon_128x128@2x.png similarity index 100% rename from src/deploy/package/shortcut-128@2x.png rename to package/mac/Bitsquare.iconset/icon_128x128@2x.png diff --git a/src/deploy/package/shortcut-16.png b/package/mac/Bitsquare.iconset/icon_16x16.png similarity index 100% rename from src/deploy/package/shortcut-16.png rename to package/mac/Bitsquare.iconset/icon_16x16.png diff --git a/src/deploy/package/shortcut-16@2x.png b/package/mac/Bitsquare.iconset/icon_16x16@2x.png similarity index 100% rename from src/deploy/package/shortcut-16@2x.png rename to package/mac/Bitsquare.iconset/icon_16x16@2x.png diff --git a/src/deploy/package/shortcut-256.png b/package/mac/Bitsquare.iconset/icon_256x256.png similarity index 100% rename from src/deploy/package/shortcut-256.png rename to package/mac/Bitsquare.iconset/icon_256x256.png diff --git a/src/deploy/package/shortcut-256@2x.png b/package/mac/Bitsquare.iconset/icon_256x256@2x.png similarity index 100% rename from src/deploy/package/shortcut-256@2x.png rename to package/mac/Bitsquare.iconset/icon_256x256@2x.png diff --git a/src/deploy/package/shortcut-32.png b/package/mac/Bitsquare.iconset/icon_32x32.png similarity index 100% rename from src/deploy/package/shortcut-32.png rename to package/mac/Bitsquare.iconset/icon_32x32.png diff --git a/src/deploy/package/shortcut-32@2x.png b/package/mac/Bitsquare.iconset/icon_32x32@2x.png similarity index 100% rename from src/deploy/package/shortcut-32@2x.png rename to package/mac/Bitsquare.iconset/icon_32x32@2x.png diff --git a/src/deploy/package/shortcut-512.png b/package/mac/Bitsquare.iconset/icon_512x512.png similarity index 100% rename from src/deploy/package/shortcut-512.png rename to package/mac/Bitsquare.iconset/icon_512x512.png diff --git a/src/deploy/package/shortcut-512@2x.png b/package/mac/Bitsquare.iconset/icon_512x512@2x.png similarity index 100% rename from src/deploy/package/shortcut-512@2x.png rename to package/mac/Bitsquare.iconset/icon_512x512@2x.png diff --git a/package/mac/build_create_app.sh b/package/mac/build_create_app.sh new file mode 100644 index 0000000000..1fb59bf829 --- /dev/null +++ b/package/mac/build_create_app.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +cd ../../ +mvn clean package -DskipTests -Dmaven.javadoc.skip=true +cp gui/target/shaded.jar gui/updatefx/builds/1.jar + +# edit url +java -jar ./updatefx/updatefx-app-1.2.jar --url=http://localhost:8000/ gui/updatefx + +$JAVA_HOME/bin/javapackager \ + -deploy \ + -BappVersion=0.1.1-SNAPSHOT \ + -Bmac.CFBundleIdentifier=bitsquare \ + -Bmac.CFBundleName=Bitsquare \ + -Bruntime="$JAVA_HOME/../../" \ + -native dmg \ + -name Bitsquare \ + -title Bitsquare \ + -vendor Bitsquare \ + -outdir gui/deploy \ + -srcfiles gui/updatefx/builds/processed/1.jar \ + -appclass io.bitsquare.app.gui.BitsquareAppMain \ + -outfile Bitsquare + +cd package/mac \ No newline at end of file diff --git a/package/mac/build_setup.sh b/package/mac/build_setup.sh new file mode 100644 index 0000000000..20ecd043cc --- /dev/null +++ b/package/mac/build_setup.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# setup dirs +cd ../../ +mkdir gui/updatefx +mkdir gui/updatefx/builds +mkdir gui/updatefx/builds/processed +mkdir gui/updatefx/site +mkdir gui/deploy + +# create key/wallet. Copy wallet to UpdateProcess or use wallet form other OS build +java -jar ./updatefx/updatefx-app-1.2.jar --url=http://localhost:8000/ gui/updatefx + +cd package/mac + +# start webserver for update data +# cd ../../gui/updatefx/site +# python -m SimpleHTTPServer 8000 + +# create icons +# iconutil -c icns package/bitsquare.iconset diff --git a/package/mac/build_update.sh b/package/mac/build_update.sh new file mode 100644 index 0000000000..a14de9941f --- /dev/null +++ b/package/mac/build_update.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +cd ../../ +mvn clean package -DskipTests -Dmaven.javadoc.skip=true + +# edit version /*.jar +cp gui/target/shaded.jar gui/updatefx/builds/2.jar + +# edit url +java -jar ./updatefx/updatefx-app-1.2.jar --url=http://localhost:8000/ gui/updatefx + +cd package/mac \ No newline at end of file diff --git a/package/windows.bat b/package/windows.bat deleted file mode 100644 index 5c99e767cd..0000000000 --- a/package/windows.bat +++ /dev/null @@ -1 +0,0 @@ -"c:\Program Files\Java\jdk1.8.0_20\bin\javapackager.exe" -deploy -BappVersion=0.1.1-SNAPSHOT -native exe -name Bitsquare -title Bitsquare -vendor Bitsquare -outdir build -appclass io.bitsquare.app.gui.BitsquareAppMain -srcfiles "build\libs\bitsquare-0.1.1-SNAPSHOT-app.jar" -outfile Bitsquare -Bruntime="c:\Program Files\Java\jdk1.8.0_20\jre" diff --git a/package/windows/Bitsquare.ico b/package/windows/Bitsquare.ico new file mode 100644 index 0000000000..d74079df05 Binary files /dev/null and b/package/windows/Bitsquare.ico differ diff --git a/package/windows/Bitsquare.iss b/package/windows/Bitsquare.iss index eacc9a7f22..bb6a5aadab 100644 --- a/package/windows/Bitsquare.iss +++ b/package/windows/Bitsquare.iss @@ -3,8 +3,8 @@ [Setup] AppId={{bitsquare}} AppName=Bitsquare -AppVersion=0.1.1 -AppVerName=Bitsquare 0.1.1 +AppVersion=0.1.1-SNAPSHOT +AppVerName=Bitsquare 0.1.1-SNAPSHOT AppPublisher=Bitsquare AppComments=Bitsquare AppCopyright=Copyright (C) 2014 @@ -23,11 +23,11 @@ DefaultGroupName=Bitsquare LicenseFile= ;WinXP or above MinVersion=0,5.1 -OutputBaseFilename=Bitsquare-0.1.1 +OutputBaseFilename=Bitsquare-0.1.1-SNAPSHOT Compression=lzma SolidCompression=yes PrivilegesRequired=lowest -SetupIconFile=Bitsquare\Bitsquare.ico +SetupIconFile=Bitsquare.ico UninstallDisplayIcon={app}\Bitsquare.ico UninstallDisplayName=Bitsquare WizardImageStretch=No diff --git a/package/windows/build_create_app.bat b/package/windows/build_create_app.bat new file mode 100644 index 0000000000..17ef44e011 --- /dev/null +++ b/package/windows/build_create_app.bat @@ -0,0 +1,13 @@ +@echo off + +cd ..\..\ +call mvn clean package -DskipTests -Dmaven.javadoc.skip=true +copy gui\target\shaded.jar gui\updatefx\builds\1.jar + +:: edit url +call java -Xmx2048m -jar ./updatefx/updatefx-app-1.2.jar --url=http://localhost:8000/ gui/updatefx + +:: Needs Inno Setup 5 or later (http://www.jrsoftware.org/isdl.php) +call "c:\Program Files\Java\jdk1.8.0_40\bin\javapackager.exe" -deploy -BappVersion=0.1 -native exe -name Bitsquare -title Bitsquare -vendor Bitsquare -outdir gui\deploy -appclass io.bitsquare.app.gui.BitsquareAppMain -srcfiles "gui\updatefx\builds\processed\1.jar" -outfile Bitsquare -Bruntime="c:\Program Files\Java\jdk1.8.0_40\jre" + +cd package\win \ No newline at end of file diff --git a/package/windows/build_setup.bat b/package/windows/build_setup.bat new file mode 100644 index 0000000000..26ca2a23c9 --- /dev/null +++ b/package/windows/build_setup.bat @@ -0,0 +1,18 @@ +@echo off + +:: setup dirs +cd ..\..\ +mkdir gui\updatefx +mkdir gui\updatefx\builds +mkdir gui\updatefx\builds\processed +mkdir gui\updatefx\site +mkdir gui\deploy + +:: create key/wallet. Copy wallet to UpdateProcess or use wallet form other OS build +call java -Xmx2048m -jar ./updatefx/updatefx-app-1.2.jar --url=http://localhost:8000/ gui/updatefx + +cd package\win + +:: start webserver for update data +:: cd ..\..\gui\updatefx\site +:: python -m SimpleHTTPServer 8000 \ No newline at end of file diff --git a/package/windows/build_update.bat b/package/windows/build_update.bat new file mode 100644 index 0000000000..d2023db5f7 --- /dev/null +++ b/package/windows/build_update.bat @@ -0,0 +1,9 @@ +@echo off + +call mvn clean package -DskipTests -Dmaven.javadoc.skip=true + +:: edit version /*.jar +cp gui\target\shaded.jar gui\updatefx\builds\2.jar + +:: edit url +call java -jar ./updatefx/updatefx-app-1.2.jar --url=http://localhost:8000/ gui/updatefx \ No newline at end of file diff --git a/package/msvcp100.dll b/package/windows/msvcp100.dll similarity index 100% rename from package/msvcp100.dll rename to package/windows/msvcp100.dll diff --git a/package/msvcr100.dll b/package/windows/msvcr100.dll similarity index 100% rename from package/msvcr100.dll rename to package/windows/msvcr100.dll diff --git a/pom.xml b/pom.xml new file mode 100755 index 0000000000..0bb602ef1b --- /dev/null +++ b/pom.xml @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>io.bitsquare</groupId> + <artifactId>parent</artifactId> + <packaging>pom</packaging> + <version>0.1.1-SNAPSHOT</version> + <description>The decentralized bitcoin exchange</description> + <url>https://bitsquare.io</url> + + <organization> + <name>bitsquare.io</name> + </organization> + + <licenses> + <license> + <name>GNU AFFERO GENERAL PUBLIC LICENSE</name> + <url>http://www.gnu.org/licenses/agpl-3.0.html</url> + <distribution>repo</distribution> + </license> + </licenses> + + <issueManagement> + <system>GitHub</system> + <url>https://github.com/bitsquare/bitsquare/issues</url> + </issueManagement> + + <scm> + <connection>scm:git:https://github.com/bitsquare/bitsquare</connection> + <developerConnection>scm:git:https://github.com/bitsquare/bitsquare</developerConnection> + <url>scm:git:https://github.com/bitsquare/bitsquare</url> + </scm> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + + <modules> + <module>gui</module> + <module>common</module> + </modules> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.1</version> + <configuration> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + + <!--<plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.2</version> + <executions> + <execution> + <id>enforce</id> + <configuration> + <rules> + <DependencyConvergence /> + </rules> + </configuration> + <goals> + <goal>enforce</goal> + </goals> + </execution> + </executions> + </plugin>--> + + </plugins> + </build> + + <repositories> + <repository> + <id>sonatype-oss-snapshot</id> + <snapshots/> + <url>https://oss.sonatype.org/content/repositories/snapshots</url> + </repository> + <repository> + <id>repository.tomp2p.net</id> + <url>http://tomp2p.net/dev/mvn</url> + </repository> + </repositories> + + <dependencies> + <dependency> + <groupId>org.bitcoinj</groupId> + <artifactId>bitcoinj-core</artifactId> + <version>0.12.2</version> + </dependency> + <!-- <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-jdk14</artifactId> + <version>1.7.7</version> + </dependency>--> + + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>16.0.1</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.11</version> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>1.10.19</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + <version>4.1.1.RELEASE</version> + </dependency> + </dependencies> + +</project> \ No newline at end of file diff --git a/src/deploy/package/shortcut-64.png b/src/deploy/package/shortcut-64.png deleted file mode 100644 index d32b9b6f77..0000000000 Binary files a/src/deploy/package/shortcut-64.png and /dev/null differ diff --git a/src/deploy/package/shortcut-64@2x.png b/src/deploy/package/shortcut-64@2x.png deleted file mode 100644 index fda27db215..0000000000 Binary files a/src/deploy/package/shortcut-64@2x.png and /dev/null differ diff --git a/src/main/java/io/bitsquare/app/gui/ExampleApp.java b/src/main/java/io/bitsquare/app/gui/ExampleApp.java deleted file mode 100644 index 5bf508d61a..0000000000 --- a/src/main/java/io/bitsquare/app/gui/ExampleApp.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see <http://www.gnu.org/licenses/>. - */ - -package io.bitsquare.app.gui; - -import org.bitcoinj.utils.BriefLogFormatter; - -import com.google.common.util.concurrent.Uninterruptibles; - -import java.io.IOException; - -import java.util.List; -import java.util.concurrent.TimeUnit; -import java.util.logging.FileHandler; - -import javafx.application.Application; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.*; -import javafx.scene.control.*; -import javafx.scene.layout.*; -import javafx.stage.Stage; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.vinumeris.updatefx.AppDirectory; -import com.vinumeris.updatefx.Crypto; -import com.vinumeris.updatefx.UpdateFX; -import com.vinumeris.updatefx.UpdateSummary; -import com.vinumeris.updatefx.Updater; -import org.bouncycastle.math.ec.ECPoint; - -// TODO remove it after we have impl. UpdateFX. -// Let it here for reference and for easier test setup for the moment. -public class ExampleApp extends Application { - private static final Logger log = LoggerFactory.getLogger(ExampleApp.class); - public static int VERSION = 3; - - public static void main(String[] args) throws IOException { - // We want to store updates in our app dir so must init that here. - AppDirectory.initAppDir("UpdateFX Example App"); - setupLogging(); - // re-enter at realMain, but possibly running a newer version of the software i.e. after this point the - // rest of this code may be ignored. - UpdateFX.bootstrap(ExampleApp.class, AppDirectory.dir(), args); - } - - public static void realMain(String[] args) { - launch(args); - } - - private static java.util.logging.Logger logger; - - private static void setupLogging() throws IOException { - logger = java.util.logging.Logger.getLogger(""); - logger.getHandlers()[0].setFormatter(new BriefLogFormatter()); - FileHandler handler = new FileHandler(AppDirectory.dir().resolve("log.txt").toString(), true); - handler.setFormatter(new BriefLogFormatter()); - logger.addHandler(handler); - } - - @Override - public void start(Stage primaryStage) throws Exception { - // For some reason the JavaFX launch process results in us losing the thread context class loader: reset it. - Thread.currentThread().setContextClassLoader(ExampleApp.class.getClassLoader()); - // Must be done twice for the times when we come here via realMain. - AppDirectory.initAppDir("UpdateFX Example App"); - - log.info("Hello World! This is version " + VERSION); - - ProgressIndicator indicator = showGiantProgressWheel(primaryStage); - - List<ECPoint> pubkeys = Crypto.decode("028B41BDDCDCAD97B6AE088FEECA16DC369353B717E13319370C729CB97D677A11", - // wallet_1 - "031E3D80F21A4D10D385A32ABEDC300DACBEDBC839FBA58376FBD5D791D806BA68"); // wallet - - Updater updater = new Updater("http://localhost:8000/", "ExampleApp/" + VERSION, VERSION, - AppDirectory.dir(), UpdateFX.findCodePath(ExampleApp.class), - pubkeys, 1) { - @Override - protected void updateProgress(long workDone, long max) { - super.updateProgress(workDone, max); - // Give UI a chance to show. - Uninterruptibles.sleepUninterruptibly(100, TimeUnit.MILLISECONDS); - } - }; - - indicator.progressProperty().bind(updater.progressProperty()); - - log.info("Checking for updates!"); - updater.setOnSucceeded(event -> { - try { - UpdateSummary summary = updater.get(); - if (summary.descriptions.size() > 0) { - log.info("One liner: {}", summary.descriptions.get(0).getOneLiner()); - log.info("{}", summary.descriptions.get(0).getDescription()); - } - if (summary.highestVersion > VERSION) { - log.info("Restarting to get version " + summary.highestVersion); - if (UpdateFX.getVersionPin(AppDirectory.dir()) == 0) - UpdateFX.restartApp(); - } - } catch (Throwable e) { - log.error("oops", e); - } - }); - updater.setOnFailed(event -> { - log.error("Update error: {}", updater.getException()); - updater.getException().printStackTrace(); - }); - - indicator.setOnMouseClicked(ev -> UpdateFX.restartApp()); - - new Thread(updater, "UpdateFX Thread").start(); - - primaryStage.show(); - } - - private ProgressIndicator showGiantProgressWheel(Stage stage) { - ProgressIndicator indicator = new ProgressIndicator(); - BorderPane borderPane = new BorderPane(indicator); - borderPane.setMinWidth(640); - borderPane.setMinHeight(480); - Button pinButton = new Button(); - pinButton.setText("Pin to version 1"); - pinButton.setOnAction(event -> { - UpdateFX.pinToVersion(AppDirectory.dir(), 1); - UpdateFX.restartApp(); - }); - HBox box = new HBox(new Label("Version " + VERSION), pinButton); - box.setSpacing(10); - box.setAlignment(Pos.CENTER_LEFT); - box.setPadding(new Insets(10)); - borderPane.setTop(box); - Scene scene = new Scene(borderPane); - stage.setScene(scene); - return indicator; - } -} diff --git a/src/main/java/io/bitsquare/app/gui/MockUpdateProcess.java b/src/main/java/io/bitsquare/app/gui/MockUpdateProcess.java deleted file mode 100644 index 8314bcb5c3..0000000000 --- a/src/main/java/io/bitsquare/app/gui/MockUpdateProcess.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see <http://www.gnu.org/licenses/>. - */ - -package io.bitsquare.app.gui; - -import com.google.inject.Inject; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.core.env.Environment; - -public class MockUpdateProcess extends UpdateProcess { - private static final Logger log = LoggerFactory.getLogger(MockUpdateProcess.class); - - @Inject - public MockUpdateProcess(Environment environment) { - super(environment); - } - - @Override - protected void init(Environment environment) { - - /* timeoutTimer.stop(); - state.set(State.UPDATE_AVAILABLE);*/ - - state.set(State.UP_TO_DATE); - timeoutTimer.stop(); - process.onCompleted(); - - /* state.set(State.FAILURE); - errorMessage = "dummy exc."; - timeoutTimer.stop(); - process.onCompleted();*/ - - } - - @Override - public void restart() { - log.debug("restart requested"); - } -} diff --git a/updatefx/updatefx-app-1.2.jar b/updatefx/updatefx-app-1.2.jar new file mode 100644 index 0000000000..7a07da2fac Binary files /dev/null and b/updatefx/updatefx-app-1.2.jar differ