From 8ae0dd8b41fa9caea8eebf3171d0e2456f51d509 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 25 Sep 2014 19:39:48 +0200 Subject: [PATCH] Use CopyOnWriteArrayList for listeners --- src/main/java/io/bitsquare/btc/WalletFacade.java | 9 +++++---- .../gui/main/orders/pending/PendingTradesViewCB.java | 4 +++- src/main/java/io/bitsquare/trade/TradeManager.java | 8 +++++--- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/bitsquare/btc/WalletFacade.java b/src/main/java/io/bitsquare/btc/WalletFacade.java index 93b0b7594f..181a93cf26 100644 --- a/src/main/java/io/bitsquare/btc/WalletFacade.java +++ b/src/main/java/io/bitsquare/btc/WalletFacade.java @@ -65,6 +65,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Optional; import java.util.Set; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.locks.ReentrantLock; import java.util.stream.Collectors; @@ -104,10 +105,10 @@ public class WalletFacade { private final FeePolicy feePolicy; private final CryptoFacade cryptoFacade; private final Persistence persistence; - private final List downloadListeners = new ArrayList<>(); - private final List addressConfidenceListeners = new ArrayList<>(); - private final List txConfidenceListeners = new ArrayList<>(); - private final List balanceListeners = new ArrayList<>(); + private final List downloadListeners = new CopyOnWriteArrayList<>(); + private final List addressConfidenceListeners = new CopyOnWriteArrayList<>(); + private final List txConfidenceListeners = new CopyOnWriteArrayList<>(); + private final List balanceListeners = new CopyOnWriteArrayList<>(); private Wallet wallet; private WalletEventListener walletEventListener; private AddressEntry registrationAddressEntry; diff --git a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesViewCB.java b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesViewCB.java index 5b4d06ee6b..ad4b14d161 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesViewCB.java @@ -67,6 +67,7 @@ public class PendingTradesViewCB extends CachedViewCB { private ChangeListener offererStateChangeListener; private ChangeListener takerStateChangeListener; private ChangeListener faultChangeListener; + private ChangeListener listItemChangeListener; /////////////////////////////////////////////////////////////////////////////////////////// @@ -136,6 +137,7 @@ public class PendingTradesViewCB extends CachedViewCB { txIdTextField.setup(presentationModel.getWalletFacade(), presentationModel.txId.get()); table.getSelectionModel().select(presentationModel.getSelectedItem()); + table.getSelectionModel().selectedItemProperty().addListener(selectedItemChangeListener); // TODO Set focus does not work yet... /* table.requestFocus(); @@ -553,7 +555,7 @@ public class PendingTradesViewCB extends CachedViewCB { } private void showTradeDetails(PendingTradesListItem item) { - presentationModel.selectPendingTrade(item); + table.getSelectionModel().select(item); } }); } diff --git a/src/main/java/io/bitsquare/trade/TradeManager.java b/src/main/java/io/bitsquare/trade/TradeManager.java index f7238f25a1..fb09b707b6 100644 --- a/src/main/java/io/bitsquare/trade/TradeManager.java +++ b/src/main/java/io/bitsquare/trade/TradeManager.java @@ -20,7 +20,6 @@ package io.bitsquare.trade; import io.bitsquare.btc.BlockChainFacade; import io.bitsquare.btc.WalletFacade; import io.bitsquare.crypto.CryptoFacade; -import io.bitsquare.gui.components.Popups; import io.bitsquare.msg.MessageFacade; import io.bitsquare.persistence.Persistence; import io.bitsquare.settings.Settings; @@ -393,8 +392,11 @@ public class TradeManager { } else { // For usability tests we don't want to crash - Popups.openWarningPopup("Sorry, you cannot continue. You have restarted the application in the meantime. " + - "Interruption of the trade process is not supported yet. Will need more time to be implemented."); + //TODO move to gui package + /* Popups.openWarningPopup("Sorry, you cannot continue. You have restarted the application in the meantime + . " + + + "Interruption of the trade process is not supported yet. Will need more time to be implemented.");*/ } }