From a03c24d664c262b05346215a16f3ba97e1eb0ee8 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Wed, 18 Jun 2014 21:48:40 +0200 Subject: [PATCH] add settings, arbitration selection, arb. registration, change setup, change funding, manage keys in wallet --- design/navIcons.psd | Bin 49828 -> 61950 bytes src/main/java/io/bitsquare/BitSquare.java | 91 +- .../java/io/bitsquare/bank/BankAccount.java | 46 +- .../io/bitsquare/bank/BankAccountType.java | 48 - .../bitsquare/bank/BankAccountTypeInfo.java | 71 ++ .../io/bitsquare/btc/BalanceListener.java | 27 + .../java/io/bitsquare/btc/BtcFormatter.java | 10 +- .../io/bitsquare/btc/ConfidenceListener.java | 28 + .../java/io/bitsquare/btc/WalletFacade.java | 288 +++++- .../java/io/bitsquare/gui/MainController.java | 70 +- .../bitsquare/gui/NavigationController.java | 7 + .../ArbitratorOverviewController.java | 235 +++++ .../overview/ArbitratorOverviewView.fxml | 14 + .../profile/ArbitratorProfileController.java | 130 +++ .../profile/ArbitratorProfileView.fxml | 64 ++ .../ArbitratorRegistrationController.java | 526 ++++++++++ .../ArbitratorRegistrationView.fxml | 161 +++ .../ConfidenceProgressIndicator.java | 272 +++++ .../ConfidenceProgressIndicatorBehavior.java | 47 + .../skin/ConfidenceProgressIndicatorSkin.java | 947 ++++++++++++++++++ .../processbar/ProcessStepsBuilder.java | 4 +- .../bitsquare/gui/funds/AddressListItem.java | 47 + .../bitsquare/gui/funds/FundsController.java | 267 ++++- .../io/bitsquare/gui/funds/FundsView.fxml | 123 ++- src/main/java/io/bitsquare/gui/global.css | 11 +- .../io/bitsquare/gui/home/HomeController.java | 77 +- .../java/io/bitsquare/gui/home/HomeView.fxml | 5 + .../gui/market/MarketController.java | 11 +- .../createOffer/CreateOfferController.java | 61 +- .../market/createOffer/CreateOfferView.fxml | 7 +- .../market/orderbook/OrderBookController.java | 101 +- .../market/orderbook/OrderBookListItem.java | 8 +- .../market/trade/TakerTradeController.java | 41 +- .../gui/orders/OrdersController.java | 30 +- .../io/bitsquare/gui/orders/OrdersView.fxml | 7 +- .../gui/settings/SettingsController.java | 763 +++++++++++++- .../bitsquare/gui/settings/SettingsView.fxml | 126 ++- .../bitsquare/gui/setup/SetupController.java | 50 +- .../io/bitsquare/gui/setup/SetupView.fxml | 7 +- .../gui/util/BitSquareConverter.java | 37 + ...Formatter.java => BitSquareFormatter.java} | 40 +- .../gui/util/BitSquareValidator.java | 130 +++ .../bitsquare/gui/util/ConfidenceDisplay.java | 8 +- .../java/io/bitsquare/gui/util/Converter.java | 30 - .../io/bitsquare/gui/util/FormBuilder.java | 6 +- .../java/io/bitsquare/gui/util/Icons.java | 6 + .../java/io/bitsquare/gui/util/Popups.java | 16 + .../io/bitsquare/gui/util/Verification.java | 22 - .../java/io/bitsquare/locale/Country.java | 63 ++ .../java/io/bitsquare/locale/CountryUtil.java | 359 +++++++ .../io/bitsquare/locale/CurrencyUtil.java | 50 + .../io/bitsquare/locale/LanguageUtil.java | 54 + .../{gui/util => locale}/Localisation.java | 18 +- src/main/java/io/bitsquare/locale/Region.java | 51 + .../java/io/bitsquare/msg/MessageFacade.java | 70 +- .../msg/listeners/ArbitratorListener.java | 15 + .../java/io/bitsquare/settings/Settings.java | 25 +- src/main/java/io/bitsquare/trade/Offer.java | 41 +- src/main/java/io/bitsquare/trade/Trade.java | 2 +- src/main/java/io/bitsquare/trade/Trading.java | 22 +- .../bitsquare/trade/orderbook/OrderBook.java | 21 +- .../offerer/OffererPaymentProtocol.java | 4 +- .../OffererPaymentProtocolListener.java | 2 +- .../taker/TakerPaymentProtocol.java | 8 +- .../taker/TakerPaymentProtocolListener.java | 2 +- .../java/io/bitsquare/user/Arbitrator.java | 223 ++++- .../java/io/bitsquare/user/Reputation.java | 26 + src/main/java/io/bitsquare/user/User.java | 22 +- src/main/java/io/bitsquare/util/MockData.java | 122 --- .../java/io/bitsquare/util/Utilities.java | 106 +- .../i18n/displayStrings_de_DE.properties | 31 +- .../i18n/displayStrings_en_US.properties | 31 +- .../resources/images/nav/funds_active.png | Bin 0 -> 498 bytes .../resources/images/nav/history_active.png | Bin 0 -> 436 bytes src/main/resources/images/nav/home_active.png | Bin 0 -> 611 bytes src/main/resources/images/nav/msg_active.png | Bin 0 -> 488 bytes .../resources/images/nav/orders_active.png | Bin 0 -> 450 bytes .../resources/images/nav/settings_active.png | Bin 0 -> 809 bytes .../gui/util/BitSquareConverterTest.java | 29 + .../gui/util/BitSquareValidatorTest.java | 36 + .../bitsquare/gui/util/VerificationTest.java | 16 - .../io/bitsquare/util/LocationUtilsTest.java | 19 + 82 files changed, 5847 insertions(+), 744 deletions(-) delete mode 100644 src/main/java/io/bitsquare/bank/BankAccountType.java create mode 100644 src/main/java/io/bitsquare/bank/BankAccountTypeInfo.java create mode 100644 src/main/java/io/bitsquare/btc/BalanceListener.java create mode 100644 src/main/java/io/bitsquare/btc/ConfidenceListener.java create mode 100644 src/main/java/io/bitsquare/gui/arbitrators/overview/ArbitratorOverviewController.java create mode 100644 src/main/java/io/bitsquare/gui/arbitrators/overview/ArbitratorOverviewView.fxml create mode 100644 src/main/java/io/bitsquare/gui/arbitrators/profile/ArbitratorProfileController.java create mode 100644 src/main/java/io/bitsquare/gui/arbitrators/profile/ArbitratorProfileView.fxml create mode 100644 src/main/java/io/bitsquare/gui/arbitrators/registration/ArbitratorRegistrationController.java create mode 100644 src/main/java/io/bitsquare/gui/arbitrators/registration/ArbitratorRegistrationView.fxml create mode 100644 src/main/java/io/bitsquare/gui/components/confidence/ConfidenceProgressIndicator.java create mode 100644 src/main/java/io/bitsquare/gui/components/confidence/behavior/ConfidenceProgressIndicatorBehavior.java create mode 100644 src/main/java/io/bitsquare/gui/components/confidence/skin/ConfidenceProgressIndicatorSkin.java create mode 100644 src/main/java/io/bitsquare/gui/funds/AddressListItem.java create mode 100644 src/main/java/io/bitsquare/gui/util/BitSquareConverter.java rename src/main/java/io/bitsquare/gui/util/{Formatter.java => BitSquareFormatter.java} (78%) create mode 100644 src/main/java/io/bitsquare/gui/util/BitSquareValidator.java delete mode 100644 src/main/java/io/bitsquare/gui/util/Converter.java delete mode 100644 src/main/java/io/bitsquare/gui/util/Verification.java create mode 100644 src/main/java/io/bitsquare/locale/Country.java create mode 100644 src/main/java/io/bitsquare/locale/CountryUtil.java create mode 100644 src/main/java/io/bitsquare/locale/CurrencyUtil.java create mode 100644 src/main/java/io/bitsquare/locale/LanguageUtil.java rename src/main/java/io/bitsquare/{gui/util => locale}/Localisation.java (79%) create mode 100644 src/main/java/io/bitsquare/locale/Region.java create mode 100644 src/main/java/io/bitsquare/msg/listeners/ArbitratorListener.java rename src/main/java/io/bitsquare/trade/{ => payment}/offerer/OffererPaymentProtocol.java (99%) rename src/main/java/io/bitsquare/trade/{ => payment}/offerer/OffererPaymentProtocolListener.java (90%) rename src/main/java/io/bitsquare/trade/{ => payment}/taker/TakerPaymentProtocol.java (99%) rename src/main/java/io/bitsquare/trade/{ => payment}/taker/TakerPaymentProtocolListener.java (88%) create mode 100644 src/main/java/io/bitsquare/user/Reputation.java delete mode 100644 src/main/java/io/bitsquare/util/MockData.java create mode 100644 src/main/resources/images/nav/funds_active.png create mode 100644 src/main/resources/images/nav/history_active.png create mode 100644 src/main/resources/images/nav/home_active.png create mode 100644 src/main/resources/images/nav/msg_active.png create mode 100644 src/main/resources/images/nav/orders_active.png create mode 100644 src/main/resources/images/nav/settings_active.png create mode 100644 src/test/java/io/bitsquare/gui/util/BitSquareConverterTest.java create mode 100644 src/test/java/io/bitsquare/gui/util/BitSquareValidatorTest.java delete mode 100644 src/test/java/io/bitsquare/gui/util/VerificationTest.java create mode 100644 src/test/java/io/bitsquare/util/LocationUtilsTest.java diff --git a/design/navIcons.psd b/design/navIcons.psd index 5448deedf518b8c87db398058e3d96f32d021163..f656b9e88878986cb5663b9f4dcc55eea9452aff 100644 GIT binary patch delta 977 zcma*jZ%7ki90%|{w@uWV&TS4-lqDM|RNHg6?QSEn%`LjJ5Rs55=~YnMbUM-6ixAn+ zL{RthMK6?)lHL@QPZ}n*wKo+MR8SE`8Bs|X(Ld--+4FA?KNE41C^HYV`2|PtYA;cL%-h zu)w-Vul`^WR2T*~{0cdPp#Bp~7vCZGOMW5;?+Q0^u3#v{;{eZlFy~_%eQpo-1q4p; zdGStX&+%jMz`PAcwH(<~_KY)Vg`l`!$7t48E#RhF3oTrH$@k<{ z&l3dClO}1qlB`2kSV~P7EISj{5BH!fWg`o*UIYs;3h8Rgy@sxY6{ga~WF{`LnYheYHDf6=DlEPz9+H@iRCY_GvRfu@HE~l?woYoA zW=U7#ixED?>dCoOAp)F|omcI=)L9hQVamN&yCIoM_anHNmI<#WJS8TDL??EPP+}fD zjo@-$3DgZb=)?sz6DTt)EHe3$lg3v~#)l9?VCaC3WQId}@@9lBAWuiP>WLXH)sT0y zCOx@5C+f(z>y-=`Zm@9c%oaF0XaBF{7E7QaYX@7l`k#s4EQL?GA{fqBz*ye$S9E^> D9(Ztm delta 2795 zcmeHHX;4#F6h7|-WeEYRBAem@sjV%t1Po9y4T>xdN{7v&fZ76L5Em3|6<(KdTD17{8FZseBu~!J0LgUBexLo428T2QaG=>rXK=;8T<3awnGTQb()sC-1dEMHy~)JP*mt{-a~Lzj-aEUZm>sNieOtNg1#DRxOm$v zTg7Hkyl3W;%Fd%>lb@bWPD;K>-HWl#6>HG3FYNn zwkhO}8M~>JN$p7so^M(-TKv=IN429d<#B=wJ7+$tRdH%^T;FVXwqQ%-4atYH`g;+V z{BxU`tVgq7RzIR1uA`J8<_LCAjrv{GT{|8tr?eYxA?QBc_}Km!bs%L?UYXzO+-hOM zf&0p21gX`>s>-Rz+@%stRp;jSbnldEJrXbEAI?t-b1Onkn&`V5x4LhgR3J8w6tBz= z-=6naRMHUDR5>33Hwr<)L+XyGr0!+J=LjmV;N|o!%MVXmr%pWhuxzJH#BsK1I9Q%D z{jzk%-M;dj5nHMg!rTrQZUbIb4Aj8>iK`{Q=Sp?I*CyStmzx1LvWd}0-Utl%= z>!vA$1#O$Nm=PSuIPDCk@d|bjOhqw4G8LCrkxay84ao?v1#*}p*URQH&d>cwW}jjj zNncU=3a!8btbhko@XrGq+}q>!1~|cV+*=!dqumO)m}3cC+N;9-f9Km&GLOy}u%c85 zg8Bi129XN&0Hmq$*axJ-8q{bA5x+(c0Euid&>*uQ%1#2IUP#R7B~?JPOo2=t3+m|F>)P=iPY!<7Lx6hO)r+Pr_@0SuvkrR8*qQUCG2tgm%VzuC5BV<`j!m1(I*EjDHVXMAAxKTRM3Oq zs2Y!bh_q87H4FjaT#D}+3}B!EGZ{iM7ZWT+Na|+9m@K$%1S%NAF38}DV~pwkjt6w? zlhvj5K<4-+W0?(sd00Q;Hv}BJ3&=#F0ot=`2E`^bnGNn@YQ$`pDpLhJopK_D|CDhB zb{CBmyrSH>*dD4+mSq languages = new ArrayList<>(); + languages.add(LanguageUtil.getDefaultLanguageLocale()); + List arbitrationMethods = new ArrayList<>(); + arbitrationMethods.add(Arbitrator.METHODS.TLS_NOTARY); + List idVerifications = new ArrayList<>(); + idVerifications.add(Arbitrator.ID_VERIFICATIONS.PASSPORT); + idVerifications.add(Arbitrator.ID_VERIFICATIONS.GOV_ID); + + Arbitrator arbitrator = new Arbitrator(pubKeyAsHex, + messagePubKeyAsHex, + "Manfred Karrer", + Arbitrator.ID_TYPE.REAL_LIFE_ID, + languages, + new Reputation(), + 1, + 0.01, + 0.001, + 10, + 0.1, + arbitrationMethods, + idVerifications, + "http://bitsquare.io/", + "Bla bla..." + ); + + try + { + messageFacade.addArbitrator(arbitrator); + } catch (IOException e) + { + e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. + } } @Override @@ -100,24 +140,29 @@ public class BitSquare extends Application super.stop(); } - private void initSettings(Settings settings, Storage storage, User user) + public static Stage getStage() + { + return stage; + } + + /* private void initSettings(Settings settings, Storage storage, User user) { Settings savedSettings = (Settings) storage.read(settings.getClass().getName()); if (savedSettings == null) { // write default settings - settings.getAcceptedCountryLocales().clear(); + settings.getAcceptedCountries().clear(); // settings.addAcceptedLanguageLocale(Locale.getDefault()); settings.addAcceptedLanguageLocale(MockData.getLocales().get(0)); settings.addAcceptedLanguageLocale(new Locale("en", "US")); settings.addAcceptedLanguageLocale(new Locale("es", "ES")); - settings.getAcceptedCountryLocales().clear(); - //settings.addAcceptedCountryLocale(Locale.getDefault()); - settings.addAcceptedCountryLocale(MockData.getLocales().get(0)); - settings.addAcceptedCountryLocale(new Locale("en", "US")); - settings.addAcceptedCountryLocale(new Locale("de", "DE")); - settings.addAcceptedCountryLocale(new Locale("es", "ES")); + settings.getAcceptedCountries().clear(); + //settings.addAcceptedCountry(Locale.getDefault()); + settings.addAcceptedCountry(MockData.getLocales().get(0)); + settings.addAcceptedCountry(new Locale("en", "US")); + settings.addAcceptedCountry(new Locale("de", "DE")); + settings.addAcceptedCountry(new Locale("es", "ES")); settings.getAcceptedArbitrators().clear(); @@ -137,9 +182,9 @@ public class BitSquare extends Application //initMockUser(storage, user); } - } + } */ - private String getMessagePubKey() + /* private String getMessagePubKey() { try { @@ -152,10 +197,10 @@ public class BitSquare extends Application { return null; } - } + } */ - private void initMockUser(Storage storage, User user) + /* private void initMockUser(Storage storage, User user) { user.getBankAccounts().clear(); @@ -182,5 +227,5 @@ public class BitSquare extends Application user.setAccountID(Utils.bytesToHexString(new ECKey().getPubKey())); storage.write(user.getClass().getName(), user); - } + } */ } diff --git a/src/main/java/io/bitsquare/bank/BankAccount.java b/src/main/java/io/bitsquare/bank/BankAccount.java index bf31ac626b..e6d2dc6e42 100644 --- a/src/main/java/io/bitsquare/bank/BankAccount.java +++ b/src/main/java/io/bitsquare/bank/BankAccount.java @@ -1,42 +1,60 @@ package io.bitsquare.bank; +import io.bitsquare.locale.Country; + import java.io.Serializable; import java.util.Currency; -import java.util.Locale; +import java.util.Objects; public class BankAccount implements Serializable { private static final long serialVersionUID = 1792577576443221268L; - private BankAccountType bankAccountType; + private BankAccountTypeInfo bankAccountTypeInfo; private String accountPrimaryID; private String accountSecondaryID; private String accountHolderName; - private Locale countryLocale; + private Country country; private Currency currency; private String uid; private String accountTitle; - public BankAccount(BankAccountType bankAccountType, + public BankAccount(BankAccountTypeInfo bankAccountTypeInfo, Currency currency, - Locale countryLocale, + Country country, String accountTitle, String accountHolderName, String accountPrimaryID, String accountSecondaryID) { - this.bankAccountType = bankAccountType; + this.bankAccountTypeInfo = bankAccountTypeInfo; this.currency = currency; - this.countryLocale = countryLocale; + this.country = country; this.accountTitle = accountTitle; this.accountHolderName = accountHolderName; this.accountPrimaryID = accountPrimaryID; this.accountSecondaryID = accountSecondaryID; - uid = bankAccountType + "_" + accountPrimaryID + "_" + accountSecondaryID + "_" + accountHolderName + "_" + countryLocale.getCountry(); + uid = accountTitle; + } + + public int hashCode() + { + return Objects.hashCode(uid); + } + + public boolean equals(Object obj) + { + if (!(obj instanceof BankAccount)) + return false; + if (obj == this) + return true; + + BankAccount other = (BankAccount) obj; + return other.getUid().equals(uid); } public String getAccountPrimaryID() @@ -54,9 +72,9 @@ public class BankAccount implements Serializable return accountHolderName; } - public BankAccountType getBankAccountType() + public BankAccountTypeInfo getBankAccountTypeInfo() { - return bankAccountType; + return bankAccountTypeInfo; } public Currency getCurrency() @@ -64,9 +82,9 @@ public class BankAccount implements Serializable return currency; } - public Locale getCountryLocale() + public Country getCountry() { - return countryLocale; + return country; } public String getUid() @@ -83,11 +101,11 @@ public class BankAccount implements Serializable public String toString() { return "BankAccount{" + - "bankAccountType=" + bankAccountType + + "bankAccountType=" + bankAccountTypeInfo.getType() + ", accountPrimaryID='" + accountPrimaryID + '\'' + ", accountSecondaryID='" + accountSecondaryID + '\'' + ", accountHolderName='" + accountHolderName + '\'' + - ", countryLocale=" + countryLocale + + ", countryLocale=" + country + ", currency=" + currency + ", uid='" + uid + '\'' + ", accountTitle='" + accountTitle + '\'' + diff --git a/src/main/java/io/bitsquare/bank/BankAccountType.java b/src/main/java/io/bitsquare/bank/BankAccountType.java deleted file mode 100644 index 0f9c57d926..0000000000 --- a/src/main/java/io/bitsquare/bank/BankAccountType.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.bitsquare.bank; - -import java.io.Serializable; - -public class BankAccountType implements Serializable -{ - - private static final long serialVersionUID = -8772708150197835288L; - - public static enum BankAccountTypeEnum - { - SEPA, WIRE, INTERNATIONAL, OK_PAY, NET_TELLER, PERFECT_MONEY, OTHER - } - - private BankAccountTypeEnum type; - private String primaryIDName; - private String secondaryIDName; - - public BankAccountType(BankAccountTypeEnum type, String primaryIDName, String secondaryIDName) - { - this.type = type; - this.primaryIDName = primaryIDName; - this.secondaryIDName = secondaryIDName; - } - - public BankAccountTypeEnum getType() - { - return type; - } - - public String getPrimaryIDName() - { - return primaryIDName; - } - - public String getSecondaryIDName() - { - return secondaryIDName; - } - - @Override - public String toString() - { - //TODO localisation - return type.toString(); - } - -} diff --git a/src/main/java/io/bitsquare/bank/BankAccountTypeInfo.java b/src/main/java/io/bitsquare/bank/BankAccountTypeInfo.java new file mode 100644 index 0000000000..0e6ca836b2 --- /dev/null +++ b/src/main/java/io/bitsquare/bank/BankAccountTypeInfo.java @@ -0,0 +1,71 @@ +package io.bitsquare.bank; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Objects; + +public class BankAccountTypeInfo implements Serializable +{ + + private static final long serialVersionUID = -8772708150197835288L; + + public static enum BankAccountType + { + SEPA, WIRE, INTERNATIONAL, OK_PAY, NET_TELLER, PERFECT_MONEY, OTHER + } + + public static ArrayList getAllBankAccountTypeInfoObjects() + { + ArrayList bankTransferTypes = new ArrayList<>(); + bankTransferTypes.add(new BankAccountTypeInfo(BankAccountType.SEPA, "IBAN", "BIC")); + bankTransferTypes.add(new BankAccountTypeInfo(BankAccountType.WIRE, "Prim_todo", "Sec_todo")); + bankTransferTypes.add(new BankAccountTypeInfo(BankAccountType.INTERNATIONAL, "Prim_todo", "Sec_todo")); + bankTransferTypes.add(new BankAccountTypeInfo(BankAccountType.OK_PAY, "Prim_todo", "Sec_todo")); + bankTransferTypes.add(new BankAccountTypeInfo(BankAccountType.NET_TELLER, "Prim_todo", "Sec_todo")); + bankTransferTypes.add(new BankAccountTypeInfo(BankAccountType.PERFECT_MONEY, "Prim_todo", "Sec_todo")); + bankTransferTypes.add(new BankAccountTypeInfo(BankAccountType.OTHER, "Prim_todo", "Sec_todo")); + return bankTransferTypes; + } + + private BankAccountType type; + private String primaryIDName; + private String secondaryIDName; + + public BankAccountTypeInfo(BankAccountType type, String primaryIDName, String secondaryIDName) + { + this.type = type; + this.primaryIDName = primaryIDName; + this.secondaryIDName = secondaryIDName; + } + + public int hashCode() + { + return Objects.hashCode(type); + } + + public boolean equals(Object obj) + { + if (!(obj instanceof BankAccountTypeInfo)) + return false; + if (obj == this) + return true; + + BankAccountTypeInfo other = (BankAccountTypeInfo) obj; + return other.getType().equals(type); + } + + public BankAccountType getType() + { + return type; + } + + public String getPrimaryIDName() + { + return primaryIDName; + } + + public String getSecondaryIDName() + { + return secondaryIDName; + } +} diff --git a/src/main/java/io/bitsquare/btc/BalanceListener.java b/src/main/java/io/bitsquare/btc/BalanceListener.java new file mode 100644 index 0000000000..12986a21c3 --- /dev/null +++ b/src/main/java/io/bitsquare/btc/BalanceListener.java @@ -0,0 +1,27 @@ +package io.bitsquare.btc; + +import com.google.bitcoin.core.Address; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.math.BigInteger; + +public class BalanceListener +{ + private static final Logger log = LoggerFactory.getLogger(BalanceListener.class); + private Address address; + + public BalanceListener(Address address) + { + this.address = address; + } + + public Address getAddress() + { + return address; + } + + public void onBalanceChanged(BigInteger balance) + { + } +} \ No newline at end of file diff --git a/src/main/java/io/bitsquare/btc/BtcFormatter.java b/src/main/java/io/bitsquare/btc/BtcFormatter.java index d395eb62e2..2d4c80a09c 100644 --- a/src/main/java/io/bitsquare/btc/BtcFormatter.java +++ b/src/main/java/io/bitsquare/btc/BtcFormatter.java @@ -1,8 +1,8 @@ package io.bitsquare.btc; import com.google.bitcoin.core.Utils; -import io.bitsquare.gui.util.Converter; -import io.bitsquare.gui.util.Formatter; +import io.bitsquare.gui.util.BitSquareConverter; +import io.bitsquare.gui.util.BitSquareFormatter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,7 +25,7 @@ public class BtcFormatter public static BigInteger stringValueToSatoshis(String value) { - return Utils.toNanoCoins(String.valueOf(Converter.stringToDouble(value))); + return Utils.toNanoCoins(String.valueOf(BitSquareConverter.stringToDouble2(value))); } public static BigInteger doubleValueToSatoshis(double value) @@ -48,8 +48,8 @@ public class BtcFormatter public static String formatSatoshis(BigInteger satoshis, boolean useBTC) { if (useBTC) - return Formatter.formatDouble(satoshiToBTC(satoshis), 8) + " BTC"; + return BitSquareFormatter.formatDouble(satoshiToBTC(satoshis), 8) + " BTC"; else - return Formatter.formatDouble(satoshiToBTC(satoshis), 8); + return BitSquareFormatter.formatDouble(satoshiToBTC(satoshis), 8); } } diff --git a/src/main/java/io/bitsquare/btc/ConfidenceListener.java b/src/main/java/io/bitsquare/btc/ConfidenceListener.java new file mode 100644 index 0000000000..10b67da046 --- /dev/null +++ b/src/main/java/io/bitsquare/btc/ConfidenceListener.java @@ -0,0 +1,28 @@ +package io.bitsquare.btc; + +import com.google.bitcoin.core.Address; +import com.google.bitcoin.core.TransactionConfidence; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ConfidenceListener +{ + private static final Logger log = LoggerFactory.getLogger(ConfidenceListener.class); + private Address address; + + public ConfidenceListener(Address address) + { + + this.address = address; + } + + public Address getAddress() + { + return address; + } + + public void onTransactionConfidenceChanged(TransactionConfidence confidence) + { + + } +} \ No newline at end of file diff --git a/src/main/java/io/bitsquare/btc/WalletFacade.java b/src/main/java/io/bitsquare/btc/WalletFacade.java index 273f1dbcef..1d57dfe193 100644 --- a/src/main/java/io/bitsquare/btc/WalletFacade.java +++ b/src/main/java/io/bitsquare/btc/WalletFacade.java @@ -7,6 +7,7 @@ import com.google.bitcoin.params.MainNetParams; import com.google.bitcoin.params.RegTestParams; import com.google.bitcoin.script.Script; import com.google.bitcoin.script.ScriptBuilder; +import com.google.bitcoin.script.ScriptOpCodes; import com.google.bitcoin.utils.Threading; import com.google.common.collect.ImmutableList; import com.google.common.util.concurrent.FutureCallback; @@ -21,9 +22,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.math.BigInteger; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.concurrent.ExecutionException; import static com.google.bitcoin.script.ScriptOpCodes.OP_RETURN; @@ -45,8 +44,10 @@ public class WalletFacade private List downloadListeners = new ArrayList<>(); private Wallet wallet; - private ECKey registrationKey; - private ECKey tradingKey; + private ECKey arbitratorKey; + private WalletEventListener walletEventListener; + private List confidenceListeners = new ArrayList<>(); + private List balanceListeners = new ArrayList<>(); /////////////////////////////////////////////////////////////////////////////////////////// @@ -100,9 +101,6 @@ public class WalletFacade wallet = walletAppKit.wallet(); - registrationKey = wallet.getKeys().get(0); - tradingKey = new ECKey(); - wallet.addKey(tradingKey); wallet.allowSpendingUnconfirmedTransactions(); //walletAppKit.peerGroup().setMaxConnections(11); @@ -111,6 +109,49 @@ public class WalletFacade walletAppKit.peerGroup().setMinBroadcastConnections(1); /* else walletAppKit.peerGroup().setMinBroadcastConnections(2); */ + + + walletEventListener = new WalletEventListener() + { + @Override + public void onCoinsReceived(Wallet wallet, Transaction tx, BigInteger prevBalance, BigInteger newBalance) + { + notifyBalanceListeners(tx); + } + + @Override + public void onTransactionConfidenceChanged(Wallet wallet, Transaction tx) + { + notifyConfidenceListeners(tx); + } + + @Override + public void onCoinsSent(Wallet wallet, Transaction tx, BigInteger prevBalance, BigInteger newBalance) + { + notifyBalanceListeners(tx); + } + + @Override + public void onReorganize(Wallet wallet) + { + } + + @Override + public void onWalletChanged(Wallet wallet) + { + } + + @Override + public void onKeysAdded(Wallet wallet, List keys) + { + } + + @Override + public void onScriptsAdded(Wallet wallet, List