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/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/build_create_app_mac.sh b/build_create_app_mac.sh new file mode 100644 index 0000000000..616d79da01 --- /dev/null +++ b/build_create_app_mac.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# edit path +cd /Users/mk/Documents/_intellij/bitsquare_UpdateFX_maven + +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 + +# edit JAVA_HOME and different OS binaries +/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/javapackager -deploy -outdir gui/deploy/ -outfile Bitsquare.dmg -name Bitsquare -native dmg -appclass io.bitsquare.app.gui.BitsquareAppMain -srcfiles gui/updatefx/builds/processed/1.jar diff --git a/build_setup.sh b/build_setup.sh new file mode 100644 index 0000000000..8d3a5c8292 --- /dev/null +++ b/build_setup.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# setup dirs +cd /Users/admin_mbp/Dropbox/Bitsquare2 +mkdir gui/updatefx +mkdir gui/updatefx/builds +mkdir gui/updatefx/builds/processed +mkdir gui/updatefx/site +mkdir gui/deploy + +# create key/wallet +java -jar ./updatefx/updatefx-app-1.2.jar --url=http://localhost:8000/ gui/updatefx + +# start webserver for update data +cd /Users/admin_mbp/Dropbox/Bitsquare2/gui/updatefx/site +# python -m SimpleHTTPServer 8000 + +# create icons +# iconutil -c icns package/bitsquare.iconset diff --git a/build_update.sh b/build_update.sh new file mode 100644 index 0000000000..f836701af8 --- /dev/null +++ b/build_update.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# edit path +cd /Users/mk/Documents/_intellij/bitsquare_UpdateFX_maven +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 \ No newline at end of file diff --git a/common/common.iml b/common/common.iml new file mode 100644 index 0000000000..919568961a --- /dev/null +++ b/common/common.iml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file 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 @@ + + + 4.0.0 + + + parent + io.bitsquare + 0.1.1-SNAPSHOT + + + common + + + + \ No newline at end of file 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/src/main/java/io/bitsquare/gui/bitsquare.css b/gui/compiled/main/java/io/bitsquare/gui/bitsquare.css similarity index 100% rename from src/main/java/io/bitsquare/gui/bitsquare.css rename to gui/compiled/main/java/io/bitsquare/gui/bitsquare.css diff --git a/gui/compiled/main/java/io/bitsquare/gui/images.css b/gui/compiled/main/java/io/bitsquare/gui/images.css new file mode 100644 index 0000000000..ff2d78763f --- /dev/null +++ b/gui/compiled/main/java/io/bitsquare/gui/images.css @@ -0,0 +1,141 @@ +/* splash screen */ +#image-splash-logo { + -fx-image: url("../../../images/logo_splash.png"); +} + +/* notification */ +#notification-logo { + -fx-image: url("../../../images/notification_logo.png"); +} + +/* shared*/ +#image-info { + -fx-image: url("../../../images/info.png"); +} + +#image-alert-round { + -fx-image: url("../../../images/alert_round.png"); +} + +#image-remove { + -fx-image: url("../../../images/remove.png"); +} + +#image-buy { + -fx-image: url("../../../images/buy.png"); +} + +#image-sell { + -fx-image: url("../../../images/sell.png"); +} + +#image-expand { + -fx-image: url("../../../images/expand.png"); +} + +#image-collapse { + -fx-image: url("../../../images/collapse.png"); +} + +#image-buy-large { + -fx-image: url("../../../images/buy_large.png"); +} + +#image-sell-large { + -fx-image: url("../../../images/sell_large.png"); +} + +/* navigation buttons */ +#image-nav-home { + -fx-image: url("../../../images/nav/home.png"); +} + +#image-nav-home-active { + -fx-image: url("../../../images/nav/home_active.png"); +} + +#image-nav-buy { + -fx-image: url("../../../images/nav/buy.png"); +} + +#image-nav-buy-active { + -fx-image: url("../../../images/nav/buy_active.png"); +} + +#image-nav-sell { + -fx-image: url("../../../images/nav/sell.png"); +} + +#image-nav-sell-active { + -fx-image: url("../../../images/nav/sell_active.png"); +} + +#image-nav-portfolio { + -fx-image: url("../../../images/nav/portfolio.png"); +} + +#image-nav-portfolio-active { + -fx-image: url("../../../images/nav/portfolio_active.png"); +} + +#image-nav-funds { + -fx-image: url("../../../images/nav/funds.png"); +} + +#image-nav-funds-active { + -fx-image: url("../../../images/nav/funds_active.png"); +} + +#image-nav-msg { + -fx-image: url("../../../images/nav/msg.png"); +} + +#image-nav-msg-active { + -fx-image: url("../../../images/nav/msg_active.png"); +} + +#image-nav-settings { + -fx-image: url("../../../images/nav/settings.png"); +} + +#image-nav-settings-active { + -fx-image: url("../../../images/nav/settings_active.png"); +} + +#image-nav-account { + -fx-image: url("../../../images/nav/account.png"); +} + +#image-nav-account-active { + -fx-image: url("../../../images/nav/account_active.png"); +} + +/* account*/ +#image-tick { + -fx-image: url("../../../images/tick.png"); +} + +#image-arrow-blue { + -fx-image: url("../../../images/arrow_blue.png"); +} + +#image-arrow-grey { + -fx-image: url("../../../images/arrow_grey.png"); +} + +/* connection state*/ +#image-connection-direct { + -fx-image: url("../../../images/connection/direct.png"); +} + +#image-connection-nat { + -fx-image: url("../../../images/connection/nat.png"); +} + +#image-connection-relay { + -fx-image: url("../../../images/connection/relay.png"); +} + +#image-connection-synced { + -fx-image: url("../../../images/connection/synced.png"); +} \ No newline at end of file diff --git a/gui/compiled/main/java/io/bitsquare/gui/main/MainView.fxml b/gui/compiled/main/java/io/bitsquare/gui/main/MainView.fxml new file mode 100644 index 0000000000..78a4a23c28 --- /dev/null +++ b/gui/compiled/main/java/io/bitsquare/gui/main/MainView.fxml @@ -0,0 +1,23 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/io/bitsquare/gui/main/account/AccountView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/AccountView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/profile/ArbitratorProfileView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/arbitrator/profile/ArbitratorProfileView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/arbitrator/registration/ArbitratorRegistrationView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/content/fiat/FiatAccountView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/content/irc/IrcAccountView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/content/password/PasswordView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.fxml diff --git a/src/main/java/io/bitsquare/gui/main/funds/FundsView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/funds/FundsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/home/HomeView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/home/HomeView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/msg/MsgView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/msg/MsgView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/portfolio/closed/ClosedTradesView.fxml diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/offer/OffersView.fxml b/gui/compiled/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/compiled/main/java/io/bitsquare/gui/main/portfolio/offer/OffersView.fxml diff --git a/gui/gui.iml b/gui/gui.iml new file mode 100644 index 0000000000..e9b3c0773d --- /dev/null +++ b/gui/gui.iml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gui/pom.xml b/gui/pom.xml new file mode 100755 index 0000000000..5386b3144a --- /dev/null +++ b/gui/pom.xml @@ -0,0 +1,210 @@ + + + 4.0.0 + + + parent + io.bitsquare + 0.1.1-SNAPSHOT + + + gui + + + + + + false + ${basedir}/src/main/java + + **/*.fxml + **/*.css + + + + false + ${basedir}/src/main/resources + + **/*.* + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 2.3 + + + false + + + io.bitsquare.app.gui.BitsquareAppMain + + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + package + + shade + + + true + bundled + shaded + + + + + + + + + + + + + sonatype-oss-snapshot + + https://oss.sonatype.org/content/repositories/snapshots + + + repository.tomp2p.net + http://tomp2p.net/dev/mvn + + + + + + io.bitsquare + common + ${parent.version} + + + ch.qos.logback + logback-core + 1.1.2 + + + ch.qos.logback + logback-classic + 1.1.2 + + + net.tomp2p + tomp2p-all + 5.0-Beta3 + + + io.reactivex + rxjava + 1.0.0 + + + org.springframework + spring-core + 4.1.1.RELEASE + + + net.sf.jopt-simple + jopt-simple + 4.8 + + + com.google.inject + guice + 3.0 + + + com.google.code.gson + gson + 2.2.4 + + + org.controlsfx + controlsfx + 8.0.6_20 + + + de.jensd + fontawesomefx + 8.0.0 + + + net.glxn + qrgen + 1.3 + + + com.google.code.findbugs + jsr305 + 2.0.1 + + + net.jcip + jcip-annotations + 1.0 + + + org.jetbrains + annotations + 13.0 + + + eu.hansolo.enzo + Enzo + 0.1.5 + + + + org.fxmisc.easybind + easybind + 1.0.2 + + + + com.vinumeris + updatefx + 1.2 + + + + + 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 85% 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..7e500921b3 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); - private static final int VERSION = 1; - private static final List UPDATE_SIGNING_KEYS = Crypto.decode( - "028B41BDDCDCAD97B6AE088FEECA16DC369353B717E13319370C729CB97D677A11", - "031E3D80F21A4D10D385A32ABEDC300DACBEDBC839FBA58376FBD5D791D806BA68" - ); - private static final int UPDATE_SIGNING_THRESHOLD = 1; + // Edit version for updateFX + private static final int VERSION = 12; + + private static final List UPDATE_SIGNING_KEYS = Crypto.decode("03C00C9B7894A072A459FFF87DBA8CFE76366D5BF4C013E41AE8D7A314625DFB30"); 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 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() { - @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() { + @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/gui/src/main/java/io/bitsquare/gui/bitsquare.css b/gui/src/main/java/io/bitsquare/gui/bitsquare.css new file mode 100644 index 0000000000..47f86337b4 --- /dev/null +++ b/gui/src/main/java/io/bitsquare/gui/bitsquare.css @@ -0,0 +1,489 @@ +/* +Theme colors: + +logo colors: + +new blue: 0f87c3 +new grey: 666666 + +00abff +orange webpage quotes : ff7f00 + + +main bg grey: dddddd +content bg grey: f4f4f4 +tab pane upper bg gradient color mid dark grey to bright grey: cfcfcf -> dddddd +upper border on tab: cfcfcf +lower border on tab: b5b5b5 +upper gradient color on tab: d3d3d3 +lower gradient color on tab: dddddd +*/ + +.root { + -bs-grey: #666666; + -bs-bg-grey: #dddddd; + -bs-error-red: #dd0000; + + -fx-accent: #0f87c3; + -fx-default-button: derive(-fx-accent, 95%); + -fx-focus-color: -fx-accent; + -fx-faint-focus-color: #0f87c322; + -fx-selection-bar: derive(-fx-accent, 50%); +} + +/* Splash */ +#splash { + -fx-background-color: #ffffff; +} + +#splash-error-state-msg { + -fx-text-fill: -bs-error-red; +} + +#splash-bitcoin-network-label { + -fx-text-fill: -fx-accent; + -fx-weight: bold; +} + +/* Main UI */ +#base-content-container { + -fx-background-color: -bs-bg-grey; +} + +#content-pane { + -fx-background-color: #f4f4f4; +} + +#headline-label { + -fx-font-weight: bold; + -fx-font-size: 18; +} + +/* Main navigation */ +#nav-button { + -fx-cursor: hand; + -fx-background-color: transparent; +} + +#nav-button .text { + -fx-font-size: 10; +} + +#nav-button:selected .text { + -fx-font-size: 11; + -fx-font-weight: bold; + -fx-fill: -fx-accent; +} + +#nav-button-label { + -fx-font-size: 10; +} + +#nav-balance-label { + -fx-font-weight: bold; + -fx-alignment: center; + -fx-background-color: #dddddd; +} + +#nav-alert-label { + -fx-font-weight: bold; + -fx-font-size: 11; + -fx-text-fill: white; +} + +.text-field:readonly { + -fx-text-fill: #000000; + -fx-background-color: #FAFAFA; +} + +#feedback-text { + -fx-font-size: 10; +} + +#label-url { + -fx-cursor: hand; + -fx-text-fill: blue; + -fx-underline: true; +} + +#icon-button { + -fx-cursor: hand; + -fx-background-color: transparent; +} + +.copy-icon { + -fx-text-fill: -fx-accent; + -fx-cursor: hand; +} + +.copy-icon:hover { + -fx-text-fill: black; +} + +/******************************************************************************* + * * + * Tooltip * + * * + ******************************************************************************/ + +.tooltip { + -fx-background: white; + -fx-text-fill: black; + -fx-background-color: white; + -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; +} + +/* Same style like non editable textfield. But textfield spans a whole column in a grid, so we use generally +textfield */ +#label-with-background { + -fx-background-color: #FAFAFA; + -fx-border-radius: 4; + -fx-padding: 4 4 4 4; +} + +#address-text-field { + -fx-cursor: hand; + -fx-text-fill: -fx-accent; +} + +#address-text-field:hover { + -fx-text-fill: black; +} + +#funds-confidence { + -fx-progress-color: dimgrey; +} + +/* .table-view */ +.table-view .table-cell { + -fx-alignment: center; +} + +.table-view .column-header .label { + -fx-alignment: center; +} + +.table-view .focus { + -fx-alignment: center; +} + +.table-view .text { + -fx-fill: black; +} + +.table-view .table-row-cell:selected .table-row-cell:row-selection .table-row-cell:cell-selection .text { + -fx-fill: white; +} + +.table-view .table-row-cell:selected .button .text { + -fx-fill: black; +} + +.table-view .table-row-cell .copy-icon .text { + -fx-fill: -fx-accent; +} + +.table-view .table-row-cell .copy-icon .text:hover { + -fx-fill: black; +} + +.table-view .table-row-cell:selected .copy-icon .text { + -fx-fill: white; +} + +.table-view .table-row-cell:selected .copy-icon .text:hover { + -fx-fill: black; +} + +.table-view .table-row-cell .hyperlink .text { + -fx-fill: -fx-accent; +} + +.table-view .table-row-cell .hyperlink .text:hover { + -fx-fill: black; +} + +.table-view .table-row-cell:selected .hyperlink .text { + -fx-fill: white; +} + +.table-view .table-row-cell:selected .hyperlink .text:hover { + -fx-fill: black; +} + +#form-header-text { + -fx-font-weight: bold; + -fx-font-size: 14; +} + +#non-clickable-icon { + -fx-text-fill: #AAAAAA; +} + +#clickable-icon { + -fx-text-fill: -fx-accent; + -fx-cursor: hand; +} + +#clickable-icon:hover { + -fx-text-fill: #666666; +} + +#form-title { + -fx-font-weight: bold; +} + +/* tab pane */ +.tab-pane .tab-label { + -fx-font-size: 15; +} + +.tab-pane:focused { + -fx-background-color: transparent; +} + +.tab-header-area:focused { + -fx-background-color: transparent; +} + +.tab:focused { + -fx-background-color: transparent; +} + +/* table-view */ +.table-view:focused { + -fx-background-color: transparent; +} + +/* scroll-pane */ + +.scroll-pane { + -fx-background-insets: 0; + -fx-padding: 0; +} + +.scroll-pane:focused { + -fx-background-insets: 0; +} + +.scroll-pane .corner { + -fx-background-insets: 0; +} + +/* validation */ +#validation-error { + -fx-text-fill: red; +} + +/* Account */ + +#content-pane-top { + -fx-background-color: #cfcfcf, + linear-gradient(#cfcfcf 0%, #b5b5b5 100%), + linear-gradient(#d3d3d3 0%, -bs-bg-grey 100%); + -fx-background-insets: 0 0 0 0, 0, 1; +} + +#info-icon-label { + -fx-font-size: 16; + -fx-text-fill: #333000; +} + +/* Create offer */ +#direction-icon-label { + -fx-font-weight: bold; + -fx-font-size: 16; + -fx-text-fill: -bs-grey; +} + +#input-description-label { + -fx-font-size: 11; + -fx-alignment: center; +} + +#create-offer-calc-label { + -fx-font-weight: bold; + -fx-font-size: 20; + -fx-padding: 15 5 0 5; +} + +#currency-info-label { + -fx-border-radius: 0 4 4 0; + -fx-padding: 4 4 4 4; + -fx-background-color: #f6f6f6; + -fx-border-color: #aaa; + -fx-border-style: solid solid solid none; + -fx-border-insets: 0 0 0 -2; +} + +#totals-separator { + -fx-background: #AAAAAA; +} + +#payment-info { + -fx-background-color: #f4f4f4; +} + +/* Account setup */ +#wizard-title-deactivated { + -fx-font-weight: bold; + -fx-font-size: 16; + -fx-text-fill: #999999; +} + +#wizard-title-active { + -fx-font-weight: bold; + -fx-font-size: 16; + -fx-text-fill: #333333; +} + +#wizard-title-completed { + -fx-font-weight: bold; + -fx-font-size: 16; + -fx-text-fill: #333333; +} + +#wizard-sub-title-deactivated { + -fx-text-fill: #999999; +} + +#wizard-sub-title-active { + -fx-text-fill: #333333; +} + +#wizard-sub-title-completed { + -fx-text-fill: #333333; +} + +#wizard-item-background-deactivated { + -fx-body-color: linear-gradient(to bottom, #f4f4f4, #F0F0F0); + -fx-outer-border: linear-gradient(to bottom, #dddddd, #ccc); + -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; +} + +#wizard-item-background-active { + -fx-body-color: linear-gradient(to bottom, #f1f6f7, #e7f5f9); + -fx-outer-border: linear-gradient(to bottom, #b5e1ef, #6aa4b6); + -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; +} + +#wizard-item-background-completed { + -fx-body-color: linear-gradient(to bottom, #f4f4f4, #F0F0F0); + -fx-outer-border: linear-gradient(to bottom, #99ba9c, #619865); + -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; +} + +/* Account settings */ +#wizard-title-disabled { + -fx-font-weight: bold; + -fx-font-size: 16; + -fx-text-fill: #999999; +} + +#wizard-title-active { + -fx-font-weight: bold; + -fx-font-size: 16; + -fx-text-fill: #333333; +} + +#wizard-title-selected { + -fx-font-weight: bold; + -fx-font-size: 16; + -fx-text-fill: -fx-accent; +} + +#account-settings-item-background-disabled { + -fx-body-color: linear-gradient(to bottom, #f4f4f4, #F0F0F0); + -fx-outer-border: linear-gradient(to bottom, #dddddd, #ccc); + -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; +} + +#account-settings-item-background-active { + -fx-body-color: linear-gradient(to bottom, #f4f4f4, #F0F0F0); + -fx-outer-border: linear-gradient(to bottom, #dddddd, #ccc); + -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; +} + +#account-settings-item-background-selected { + -fx-body-color: linear-gradient(to bottom, #f1f6f7, #e7f5f9); + -fx-outer-border: linear-gradient(to bottom, #b5e1ef, #6aa4b6); + -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; +} + +/* TitledGroupBg */ +#titled-group-bg-label { + -fx-font-weight: bold; + -fx-font-size: 14; + -fx-text-fill: -bs-grey; + -fx-background-color: #f4f4f4; +} + +#titled-group-bg-label-active { + -fx-font-weight: bold; + -fx-font-size: 14; + -fx-text-fill: -fx-accent; + -fx-background-color: #f4f4f4; +} + +#titled-group-bg { + -fx-body-color: linear-gradient(to bottom, #f4f4f4, #F0F0F0); + -fx-outer-border: linear-gradient(to bottom, #dddddd, #ccc); + -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; +} + +#titled-group-bg-active { + -fx-body-color: linear-gradient(to bottom, #f4f4f4, #F0F0F0); + -fx-outer-border: linear-gradient(to bottom, #9bbdc9, #57acc9); + -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; +} + +/* TitledSeparator */ +#titled-separator:horizontal .line { + -fx-border-color: transparent #f4f4f4 transparent #f4f4f4; + -fx-background-color: transparent; + -fx-border-width: 10px; +} 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/gui/src/main/java/io/bitsquare/gui/components/InfoDisplay2.java b/gui/src/main/java/io/bitsquare/gui/components/InfoDisplay2.java new file mode 100644 index 0000000000..47ac1424a8 --- /dev/null +++ b/gui/src/main/java/io/bitsquare/gui/components/InfoDisplay2.java @@ -0,0 +1,247 @@ +/* + * 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 . + */ + +package io.bitsquare.gui.components; + +import io.bitsquare.locale.BSResources; + +import javafx.application.Platform; +import javafx.beans.property.IntegerProperty; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.property.StringProperty; +import javafx.beans.value.ChangeListener; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.geometry.Insets; +import javafx.geometry.VPos; +import javafx.scene.*; +import javafx.scene.control.*; +import javafx.scene.layout.*; +import javafx.scene.text.*; + +import de.jensd.fx.fontawesome.AwesomeDude; +import de.jensd.fx.fontawesome.AwesomeIcon; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Convenience Component for info icon, info text and link display in a GridPane. + * Only the properties needed are supported. + * We need to extend from Parent so we can use it in FXML, but the InfoDisplay is not used as node, + * but add the children nodes to the gridPane. + */ +public class InfoDisplay2 extends Parent { + private static final Logger log = LoggerFactory.getLogger(InfoDisplay2.class); + + private final StringProperty text = new SimpleStringProperty(); + private final IntegerProperty rowIndex = new SimpleIntegerProperty(0); + private final IntegerProperty columnIndex = new SimpleIntegerProperty(0); + private final ObjectProperty> onAction = new SimpleObjectProperty<>(); + private final ObjectProperty gridPane = new SimpleObjectProperty<>(); + private final Label testLabel; + + private boolean useReadMore; + + private final Label icon = AwesomeDude.createIconLabel(AwesomeIcon.INFO_SIGN); + private final TextFlow textFlow; + private final Label label; + private final Hyperlink link; + private final ChangeListener listener; + + /////////////////////////////////////////////////////////////////////////////////////////// + // Constructor + /////////////////////////////////////////////////////////////////////////////////////////// + + public InfoDisplay2() { + icon.setId("non-clickable-icon"); + icon.visibleProperty().bind(visibleProperty()); + GridPane.setValignment(icon, VPos.TOP); + GridPane.setMargin(icon, new Insets(-2, 0, 0, 0)); + GridPane.setRowSpan(icon, 2); + + label = new Label(); + label.textProperty().bind(text); + label.setTextOverrun(OverrunStyle.WORD_ELLIPSIS); + // width is set a frame later so we hide it first + label.setVisible(false); + + link = new Hyperlink(BSResources.get("shared.readMore")); + link.setPadding(new Insets(0, 0, 0, -2)); + + // We need that to know if we have a wrapping or not. + // Did not find a way to get that from the API. + testLabel = new Label(); + testLabel.textProperty().bind(text); + + textFlow = new TextFlow(); + textFlow.visibleProperty().bind(visibleProperty()); + textFlow.getChildren().addAll(testLabel); + + // update the width when the window gets resized + listener = (ov2, oldValue2, windowWidth) -> { + if (label.prefWidthProperty().isBound()) + label.prefWidthProperty().unbind(); + label.setPrefWidth((double) windowWidth - localToScene(0, 0).getX() - 35); + }; + + + // when clicking "Read more..." we expand and change the link to the Help + link.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + if (useReadMore) { + + label.setWrapText(true); + link.setText(BSResources.get("shared.openHelp")); + getScene().getWindow().widthProperty().removeListener(listener); + if (label.prefWidthProperty().isBound()) + label.prefWidthProperty().unbind(); + label.prefWidthProperty().bind(textFlow.widthProperty()); + link.setVisited(false); + // focus border is a bit confusing here so we remove it + link.setStyle("-fx-focus-color: transparent;"); + link.setOnAction(onAction.get()); + } + else { + onAction.get().handle(actionEvent); + } + } + }); + + managedProperty().addListener((ov, oldValue, newValue) -> { + if (newValue) + layoutItems(); + }); + } + + private void layoutItems() { + testLabel.widthProperty().addListener((ov, o, n) -> { + log.debug("#### testLabel.heightProperty " + testLabel.getHeight()); + log.debug("#### testLabel.widthProperty " + testLabel.getText()); + log.debug("#### testLabel.widthProperty " + n); + log.debug("#### textFlow.getWidth() " + textFlow.getWidth()); + useReadMore = (double) n > textFlow.getWidth(); + link.setText(BSResources.get(useReadMore ? "shared.readMore" : "shared.openHelp")); + + Platform.runLater(() -> textFlow.getChildren().setAll(label, link)); + }); + + sceneProperty().addListener((ov, oldValue, newValue) -> { + if (oldValue == null && newValue != null && newValue.getWindow() != null) { + newValue.getWindow().widthProperty().addListener(listener); + // localToScene does deliver 0 instead of the correct x position when scene property gets set, + // so we delay for 1 render cycle + Platform.runLater(() -> { + log.debug("#### label.setVisible() "); + label.setVisible(true); + label.prefWidthProperty().unbind(); + label.setPrefWidth(newValue.getWindow().getWidth() - localToScene(0, 0).getX() - 35); + }); + } + }); + } + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Setters + /////////////////////////////////////////////////////////////////////////////////////////// + + public void setText(String text) { + this.text.set(text); + layout(); + } + + public void setGridPane(GridPane gridPane) { + this.gridPane.set(gridPane); + + gridPane.getChildren().addAll(icon, textFlow); + + GridPane.setColumnIndex(icon, columnIndex.get()); + GridPane.setColumnIndex(textFlow, columnIndex.get() + 1); + + GridPane.setRowIndex(icon, rowIndex.get()); + GridPane.setRowIndex(textFlow, rowIndex.get()); + } + + public void setRowIndex(int rowIndex) { + this.rowIndex.set(rowIndex); + + GridPane.setRowIndex(icon, rowIndex); + GridPane.setRowIndex(textFlow, rowIndex); + } + + public void setColumnIndex(int columnIndex) { + this.columnIndex.set(columnIndex); + + GridPane.setColumnIndex(icon, columnIndex); + GridPane.setColumnIndex(textFlow, columnIndex + 1); + } + + public final void setOnAction(EventHandler eventHandler) { + onAction.set(eventHandler); + } + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Getters + /////////////////////////////////////////////////////////////////////////////////////////// + + public String getText() { + return text.get(); + } + + public StringProperty textProperty() { + return text; + } + + public int getColumnIndex() { + return columnIndex.get(); + } + + public IntegerProperty columnIndexProperty() { + return columnIndex; + } + + public int getRowIndex() { + return rowIndex.get(); + } + + public IntegerProperty rowIndexProperty() { + return rowIndex; + } + + public EventHandler getOnAction() { + return onAction.get(); + } + + public ObjectProperty> onActionProperty() { + return onAction; + } + + public GridPane getGridPane() { + return gridPane.get(); + } + + public ObjectProperty gridPaneProperty() { + return gridPane; + } + +} 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/gui/src/main/java/io/bitsquare/gui/components/dialogs/CustomPopups.java b/gui/src/main/java/io/bitsquare/gui/components/dialogs/CustomPopups.java new file mode 100644 index 0000000000..ac77811946 --- /dev/null +++ b/gui/src/main/java/io/bitsquare/gui/components/dialogs/CustomPopups.java @@ -0,0 +1,105 @@ +/* + * 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 . + */ + +package io.bitsquare.gui.components.dialogs; + +import io.bitsquare.gui.OverlayManager; + +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.*; +import javafx.scene.control.*; +import javafx.scene.layout.*; +import javafx.stage.Modality; +import javafx.stage.Stage; +import javafx.stage.StageStyle; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CustomPopups { + private static final Logger log = LoggerFactory.getLogger(CustomPopups.class); + + private final Stage rootStage; + private final OverlayManager overlayManager; + private final Stage stage = new Stage(); + private StackPane sceneRootPane; + + public CustomPopups(Stage rootStage, OverlayManager overlayManager) { + this.rootStage = rootStage; + this.overlayManager = overlayManager; + + setupStage(); + } + + public void showInfoPopup(String title, String message) { + BorderPane borderPane = new BorderPane(); + borderPane.setMinWidth(400); + borderPane.setMinHeight(150); + borderPane.setMaxWidth(rootStage.getWidth() / 2); + borderPane.setMaxHeight(rootStage.getHeight() / 2); + borderPane.setPadding(new Insets(20, 20, 20, 20)); + borderPane.setStyle("-fx-background-color: #ffffff;"); + + Label titleLabel = new Label(title); + titleLabel.setMouseTransparent(true); + BorderPane.setAlignment(titleLabel, Pos.TOP_CENTER); + borderPane.setTop(titleLabel); + titleLabel.setStyle("-fx-font-size: 16; -fx-font-weight: bold; -fx-text-fill: #333333;"); + + Label messageLabel = new Label(message); + messageLabel.setWrapText(true); + messageLabel.setMouseTransparent(true); + borderPane.setCenter(messageLabel); + messageLabel.setStyle("-fx-font-size: 12; -fx-text-fill: #000000;"); + messageLabel.setPadding(new Insets(20, 0, 30, 0)); + + Button closeButton = getCloseButton(); + BorderPane.setAlignment(closeButton, Pos.BOTTOM_RIGHT); + borderPane.setBottom(closeButton); + + show(borderPane); + } + + private void setupStage() { + stage.initModality(Modality.WINDOW_MODAL); + stage.initStyle(StageStyle.UNDECORATED); + stage.initOwner(rootStage); + + sceneRootPane = new StackPane(); + Scene scene = new Scene(sceneRootPane); + scene.getStylesheets().setAll(getClass().getResource("/io/bitsquare/gui/bitsquare.css").toExternalForm(), + getClass().getResource("/io/bitsquare/gui/images.css").toExternalForm()); + stage.setScene(scene); + } + + private void hide() { + stage.hide(); + } + + private void show(Pane pane) { + sceneRootPane.getChildren().setAll(pane); + stage.show(); + } + + private Button getCloseButton() { + Button closeButton = new Button("Close"); + closeButton.setDefaultButton(true); + closeButton.setOnAction(e -> hide()); + return closeButton; + } +} diff --git a/gui/src/main/java/io/bitsquare/gui/components/dialogs/InfoDialog.java b/gui/src/main/java/io/bitsquare/gui/components/dialogs/InfoDialog.java new file mode 100644 index 0000000000..4f2b5947a7 --- /dev/null +++ b/gui/src/main/java/io/bitsquare/gui/components/dialogs/InfoDialog.java @@ -0,0 +1,131 @@ +/* + * 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 . + */ + +package io.bitsquare.gui.components.dialogs; + +import io.bitsquare.locale.BSResources; + +import java.util.ArrayList; +import java.util.List; + +import javax.inject.Inject; + +import javafx.application.Platform; +import javafx.event.ActionEvent; +import javafx.geometry.Insets; +import javafx.scene.control.*; +import javafx.scene.image.*; +import javafx.scene.layout.*; +import javafx.stage.Stage; + +import org.controlsfx.control.ButtonBar; +import org.controlsfx.control.action.AbstractAction; +import org.controlsfx.control.action.Action; +import org.controlsfx.dialog.Dialog; +import org.controlsfx.dialog.DialogStyle; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +// TODO under construction +public class InfoDialog { + private static final Logger log = LoggerFactory.getLogger(InfoDialog.class); + + /////////////////////////////////////////////////////////////////////////////////////////// + // Constructor + /////////////////////////////////////////////////////////////////////////////////////////// + + @Inject + public InfoDialog(Stage stage) { + + final TextField username = new TextField(); + final PasswordField password = new PasswordField(); + final Action actionLogin = new AbstractAction("Login") { + // This method is called when the login button is clicked ... + public void handle(ActionEvent ae) { + Dialog d = (Dialog) ae.getSource(); + // Do the login here. + d.hide(); + } + }; + + // Create the custom dialog. + Dialog dlg = new Dialog(stage, "Login Dialog"); + dlg.setIconifiable(false); + dlg.setClosable(false); + dlg.setResizable(false); + GridPane grid = new GridPane(); + grid.setHgap(10); + grid.setVgap(10); + grid.setPadding(new Insets(0, 10, 0, 10)); + + username.setPromptText("Username"); + password.setPromptText("Password"); + + grid.add(new Label("Username:"), 0, 0); + grid.add(username, 1, 0); + grid.add(new Label("Password:"), 0, 1); + grid.add(password, 1, 1); + + ButtonBar.setType(actionLogin, ButtonBar.ButtonType.OK_DONE); + actionLogin.disabledProperty().set(true); + + // Do some validation (using the Java 8 lambda syntax). + username.textProperty().addListener((observable, oldValue, newValue) -> actionLogin.disabledProperty().set(newValue.trim().isEmpty())); + + dlg.setMasthead("Look, a Custom Login Dialog"); + dlg.setContent(grid); + dlg.getActions().addAll(actionLogin, Dialog.Actions.CANCEL); + + // Request focus on the username field by default. + Platform.runLater(username::requestFocus); + + dlg.show(); + } + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Public methods + /////////////////////////////////////////////////////////////////////////////////////////// + + public void show(Object owner, String title, String masthead, String message) { + + Dialog dlg = new Dialog(owner, title, false, DialogStyle.CROSS_PLATFORM_DARK); + dlg.setResizable(false); + dlg.setIconifiable(false); + dlg.setClosable(false); + + Image image = new Image(InfoDialog.class.getResource + ("/impl/org/controlsfx/dialog/resources/oxygen/48/dialog-information.png").toString()); + if (image != null) { + dlg.setGraphic(new ImageView(image)); + } + dlg.setMasthead(masthead); + List actions = new ArrayList<>(); + actions.add(new AbstractAction(BSResources.get("shared.close")) { + @Override + public void handle(ActionEvent actionEvent) { + getProperties().put("type", "CLOSE"); + Dialog.Actions.CLOSE.handle(actionEvent); + // overlayManager.removeBlurContent(); + } + }); + dlg.getActions().addAll(actions); + // dlg.setBackgroundEffect(backgroundEffect); + } + +} 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/gui/src/main/java/io/bitsquare/gui/main/account/AccountView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/AccountView.fxml new file mode 100644 index 0000000000..5187d4a2c9 --- /dev/null +++ b/gui/src/main/java/io/bitsquare/gui/main/account/AccountView.fxml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file 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/gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.fxml new file mode 100644 index 0000000000..99e13f1f47 --- /dev/null +++ b/gui/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.fxml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + \ No newline at end of file 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/gui/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.fxml new file mode 100644 index 0000000000..683c04db27 --- /dev/null +++ b/gui/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsView.fxml @@ -0,0 +1,31 @@ + + + + + + + + + + + + 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/gui/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.fxml b/gui/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.fxml new file mode 100644 index 0000000000..0fd4dacacc --- /dev/null +++ b/gui/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupWizard.fxml @@ -0,0 +1,30 @@ + + + + + + + + + + + + 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/gui/src/main/java/io/bitsquare/gui/main/funds/FundsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/funds/FundsView.fxml new file mode 100644 index 0000000000..42e9c13722 --- /dev/null +++ b/gui/src/main/java/io/bitsquare/gui/main/funds/FundsView.fxml @@ -0,0 +1,29 @@ + + + + + + + + + + + \ No newline at end of file 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/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml b/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml new file mode 100644 index 0000000000..e0dc1aba6d --- /dev/null +++ b/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml b/gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml new file mode 100644 index 0000000000..ce7b6b9590 --- /dev/null +++ b/gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +