diff --git a/src/main/java/io/bitsquare/gui/bitsquare.css b/src/main/java/io/bitsquare/gui/bitsquare.css index 480f873dbc..b63c6550b9 100644 --- a/src/main/java/io/bitsquare/gui/bitsquare.css +++ b/src/main/java/io/bitsquare/gui/bitsquare.css @@ -92,6 +92,7 @@ lower gradient color on tab: dddddd #nav-balance-label { -fx-font-weight: bold; -fx-alignment: center; + -fx-background-color: #dddddd; } #nav-alert-label { -fx-font-weight: bold; @@ -172,7 +173,7 @@ textfield */ } .table-view .column-header .label { - -fx-alignment-alignment: center; + -fx-alignment: center; } .table-view .focus { diff --git a/src/main/java/io/bitsquare/gui/components/AddressTextField.java b/src/main/java/io/bitsquare/gui/components/AddressTextField.java index fea6d5ba98..ef73b7d461 100644 --- a/src/main/java/io/bitsquare/gui/components/AddressTextField.java +++ b/src/main/java/io/bitsquare/gui/components/AddressTextField.java @@ -67,11 +67,12 @@ public class AddressTextField extends AnchorPane { /////////////////////////////////////////////////////////////////////////////////////////// public AddressTextField() { - TextField addressLabel = new TextField(); - addressLabel.setId("address-text-field"); - addressLabel.setEditable(false); - addressLabel.textProperty().bind(address); - addressLabel.setOnMouseClicked(mouseEvent -> { + TextField textField = new TextField(); + textField.setId("address-text-field"); + textField.setEditable(false); + textField.textProperty().bind(address); + Tooltip.install(textField, new Tooltip("Open your default Bitcoin wallet with that address.")); + textField.setOnMouseClicked(mouseEvent -> { try { Desktop.getDesktop().browse(URI.create(getBitcoinURI())); } catch (IOException e) { @@ -80,8 +81,8 @@ public class AddressTextField extends AnchorPane { "Perhaps you don't have one installed?"); } }); - addressLabel.focusTraversableProperty().set(focusTraversableProperty().get()); - focusedProperty().addListener((ov, oldValue, newValue) -> addressLabel.requestFocus()); + textField.focusTraversableProperty().set(focusTraversableProperty().get()); + focusedProperty().addListener((ov, oldValue, newValue) -> textField.requestFocus()); Label copyIcon = new Label(); copyIcon.setLayoutY(3); @@ -136,10 +137,10 @@ public class AddressTextField extends AnchorPane { AnchorPane.setRightAnchor(qrCode, 5.0); AnchorPane.setRightAnchor(copyIcon, 30.0); - AnchorPane.setRightAnchor(addressLabel, 55.0); - AnchorPane.setLeftAnchor(addressLabel, 0.0); + AnchorPane.setRightAnchor(textField, 55.0); + AnchorPane.setLeftAnchor(textField, 0.0); - getChildren().addAll(addressLabel, copyIcon, qrCode); + getChildren().addAll(textField, copyIcon, qrCode); } diff --git a/src/main/java/io/bitsquare/gui/components/BalanceTextField.java b/src/main/java/io/bitsquare/gui/components/BalanceTextField.java index 5229ff7900..ae672e16c8 100644 --- a/src/main/java/io/bitsquare/gui/components/BalanceTextField.java +++ b/src/main/java/io/bitsquare/gui/components/BalanceTextField.java @@ -38,7 +38,7 @@ import org.slf4j.LoggerFactory; public class BalanceTextField extends AnchorPane { private static final Logger log = LoggerFactory.getLogger(BalanceTextField.class); - private final TextField balanceTextField; + private final TextField textField; private final Tooltip progressIndicatorTooltip; private final ConfidenceProgressIndicator progressIndicator; @@ -52,9 +52,9 @@ public class BalanceTextField extends AnchorPane { /////////////////////////////////////////////////////////////////////////////////////////// public BalanceTextField() { - balanceTextField = new TextField(); - balanceTextField.setFocusTraversable(false); - balanceTextField.setEditable(false); + textField = new TextField(); + textField.setFocusTraversable(false); + textField.setEditable(false); progressIndicator = new ConfidenceProgressIndicator(); progressIndicator.setFocusTraversable(false); @@ -68,10 +68,10 @@ public class BalanceTextField extends AnchorPane { Tooltip.install(progressIndicator, progressIndicatorTooltip); AnchorPane.setRightAnchor(progressIndicator, 0.0); - AnchorPane.setRightAnchor(balanceTextField, 55.0); - AnchorPane.setLeftAnchor(balanceTextField, 0.0); + AnchorPane.setRightAnchor(textField, 55.0); + AnchorPane.setLeftAnchor(textField, 0.0); - getChildren().addAll(balanceTextField, progressIndicator); + getChildren().addAll(textField, progressIndicator); } public void setup(WalletFacade walletFacade, Address address, BSFormatter formatter) { @@ -123,17 +123,17 @@ public class BalanceTextField extends AnchorPane { if (progressIndicator.getProgress() != 0) { progressIndicator.setVisible(true); AnchorPane.setRightAnchor(progressIndicator, 0.0); - AnchorPane.setRightAnchor(balanceTextField, 35.0); + AnchorPane.setRightAnchor(textField, 35.0); } } } private void updateBalance(Coin balance) { - balanceTextField.setText(formatter.formatCoinWithCode(balance)); + textField.setText(formatter.formatCoinWithCode(balance)); if (balance.isPositive()) - balanceTextField.setEffect(fundedEffect); + textField.setEffect(fundedEffect); else - balanceTextField.setEffect(notFundedEffect); + textField.setEffect(notFundedEffect); } } diff --git a/src/main/java/io/bitsquare/gui/components/TxIdTextField.java b/src/main/java/io/bitsquare/gui/components/TxIdTextField.java index d2c43bc92c..6e8e9b0e31 100644 --- a/src/main/java/io/bitsquare/gui/components/TxIdTextField.java +++ b/src/main/java/io/bitsquare/gui/components/TxIdTextField.java @@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory; public class TxIdTextField extends AnchorPane { private static final Logger log = LoggerFactory.getLogger(TxIdTextField.class); - private final TextField txIdLabel; + private final TextField textField; private final Tooltip progressIndicatorTooltip; private final ConfidenceProgressIndicator progressIndicator; private final Label copyIcon; @@ -73,20 +73,21 @@ public class TxIdTextField extends AnchorPane { AwesomeDude.setIcon(copyIcon, AwesomeIcon.COPY); AnchorPane.setRightAnchor(copyIcon, 30.0); - txIdLabel = new TextField(); - txIdLabel.setId("address-text-field"); - txIdLabel.setEditable(false); - AnchorPane.setRightAnchor(txIdLabel, 55.0); - AnchorPane.setLeftAnchor(txIdLabel, 0.0); - txIdLabel.focusTraversableProperty().set(focusTraversableProperty().get()); - focusedProperty().addListener((ov, oldValue, newValue) -> txIdLabel.requestFocus()); + textField = new TextField(); + textField.setId("address-text-field"); + textField.setEditable(false); + Tooltip.install(textField, new Tooltip("Open a blockchain explorer with that transactions ID")); + AnchorPane.setRightAnchor(textField, 55.0); + AnchorPane.setLeftAnchor(textField, 0.0); + textField.focusTraversableProperty().set(focusTraversableProperty().get()); + focusedProperty().addListener((ov, oldValue, newValue) -> textField.requestFocus()); - getChildren().addAll(txIdLabel, copyIcon, progressIndicator); + getChildren().addAll(textField, copyIcon, progressIndicator); } public void setup(WalletFacade walletFacade, String txID) { - txIdLabel.setText(txID); - txIdLabel.setOnMouseClicked(mouseEvent -> { + textField.setText(txID); + textField.setOnMouseClicked(mouseEvent -> { try { Desktop.getDesktop().browse(URI.create("https://blockchain.info/address/" + txID)); } catch (IOException e) { diff --git a/src/main/java/io/bitsquare/gui/main/MainViewCB.java b/src/main/java/io/bitsquare/gui/main/MainViewCB.java index e28b35e8b0..6c794aee8d 100644 --- a/src/main/java/io/bitsquare/gui/main/MainViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/MainViewCB.java @@ -214,6 +214,7 @@ public class MainViewCB extends ViewCB { numPendingTradesLabel.setText(String.valueOf(numPendingTrades)); } + log.trace("openInfoNotification " + BitSquare.getAppName()); SystemNotification.openInfoNotification(BitSquare.getAppName(), "You got a new trade message."); } else { @@ -225,8 +226,11 @@ public class MainViewCB extends ViewCB { private void onMainNavigationAdded() { Profiler.printMsgWithTime("MainController.ondMainNavigationAdded"); - presentationModel.numPendingTrades.addListener((ov, olaValue, newValue) -> applyPendingTradesInfoIcon((int) - newValue)); + presentationModel.numPendingTrades.addListener((ov, oldValue, newValue) -> + { + if ((int) newValue > (int) oldValue) + applyPendingTradesInfoIcon((int) newValue); + }); applyPendingTradesInfoIcon(presentationModel.numPendingTrades.get()); navigation.navigateToLastStoredItem(); onContentAdded(); diff --git a/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml b/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml index 406bf6ca5f..e2f915467b 100644 --- a/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml +++ b/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.fxml @@ -26,7 +26,7 @@ - + diff --git a/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsViewCB.java b/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsViewCB.java index 245caefcba..54271b7e8d 100644 --- a/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsViewCB.java @@ -48,7 +48,7 @@ public class TransactionsViewCB extends CachedViewCB { private BSFormatter formatter; private ObservableList transactionsListItems; - @FXML TableView tableView; + @FXML TableView table; @FXML TableColumn dateColumn, addressColumn, amountColumn, typeColumn, confidenceColumn; @@ -72,7 +72,8 @@ public class TransactionsViewCB extends CachedViewCB { public void initialize(URL url, ResourceBundle rb) { super.initialize(url, rb); - tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); + table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); + table.setPlaceholder(new Label("No transactions available")); setAddressColumnCellFactory(); setConfidenceColumnCellFactory(); @@ -95,7 +96,7 @@ public class TransactionsViewCB extends CachedViewCB { transactionsListItems.addAll(transactions.stream().map(transaction -> new TransactionsListItem(transaction, walletFacade, formatter)).collect(Collectors.toList())); - tableView.setItems(transactionsListItems); + table.setItems(transactionsListItems); } @SuppressWarnings("EmptyMethod") @@ -129,7 +130,7 @@ public class TransactionsViewCB extends CachedViewCB { public TableCell call(TableColumn column) { return new TableCell() { - Hyperlink hyperlink; + private Hyperlink hyperlink; @Override public void updateItem(final TransactionsListItem item, boolean empty) { diff --git a/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml b/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml index 4c4138585c..d9a39ccd7d 100644 --- a/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml +++ b/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.fxml @@ -27,7 +27,7 @@ - + diff --git a/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalViewCB.java b/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalViewCB.java index 7148672f75..d3dc3953a2 100644 --- a/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalViewCB.java @@ -67,7 +67,7 @@ public class WithdrawalViewCB extends CachedViewCB { private BSFormatter formatter; private ObservableList addressList; - @FXML TableView tableView; + @FXML TableView table; @FXML TableColumn labelColumn, addressColumn, balanceColumn, copyColumn, confidenceColumn; @FXML Button addNewAddressButton; @@ -90,7 +90,8 @@ public class WithdrawalViewCB extends CachedViewCB { @Override public void initialize(URL url, ResourceBundle rb) { - tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); + table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); + table.setPlaceholder(new Label("No funded wallets for withdrawal available")); setLabelColumnCellFactory(); setBalanceColumnCellFactory(); @@ -112,7 +113,7 @@ public class WithdrawalViewCB extends CachedViewCB { public void activate() { super.activate(); - tableView.getSelectionModel().selectedItemProperty().addListener((observableValue, oldValue, newValue) -> { + table.getSelectionModel().selectedItemProperty().addListener((observableValue, oldValue, newValue) -> { if (newValue != null) { if (Coin.ZERO.compareTo(newValue.getBalance()) <= 0) { @@ -134,7 +135,7 @@ public class WithdrawalViewCB extends CachedViewCB { addressList.addAll(addressEntryList.stream().map(anAddressEntryList -> new WithdrawalListItem(anAddressEntryList, walletFacade, formatter)).collect(Collectors.toList())); - tableView.setItems(addressList); + table.setItems(addressList); } @SuppressWarnings("EmptyMethod") @@ -220,7 +221,7 @@ public class WithdrawalViewCB extends CachedViewCB { WithdrawalListItem> column) { return new TableCell() { - Hyperlink hyperlink; + private Hyperlink hyperlink; @Override public void updateItem(final WithdrawalListItem item, boolean empty) { diff --git a/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesViewCB.java b/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesViewCB.java index 33fafed35d..7d279003b2 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesViewCB.java @@ -65,6 +65,7 @@ public class ClosedTradesViewCB extends CachedViewCB { setDateColumnCellFactory(); table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); + table.setPlaceholder(new Label("No closed trades available")); super.initialize(url, rb); } @@ -113,7 +114,7 @@ public class ClosedTradesViewCB extends CachedViewCB { public TableCell call(TableColumn column) { return new TableCell() { - Hyperlink hyperlink; + private Hyperlink hyperlink; @Override public void updateItem(final ClosedTradesListItem item, boolean empty) { @@ -121,6 +122,7 @@ public class ClosedTradesViewCB extends CachedViewCB { if (item != null && !empty) { hyperlink = new Hyperlink(presentationModel.getTradeId(item)); + hyperlink.setId("id-link"); Tooltip.install(hyperlink, new Tooltip(presentationModel.getTradeId(item))); hyperlink.setOnAction(event -> openOfferDetails(item)); setGraphic(hyperlink); diff --git a/src/main/java/io/bitsquare/gui/main/orders/offer/OffersViewCB.java b/src/main/java/io/bitsquare/gui/main/orders/offer/OffersViewCB.java index 9e67f33bd6..631f7a57a5 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/offer/OffersViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/orders/offer/OffersViewCB.java @@ -67,6 +67,7 @@ public class OffersViewCB extends CachedViewCB { setRemoveColumnCellFactory(); table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); + table.setPlaceholder(new Label("No open offers available")); super.initialize(url, rb); } @@ -118,7 +119,7 @@ public class OffersViewCB extends CachedViewCB { public TableCell call(TableColumn column) { return new TableCell() { - Hyperlink hyperlink; + private Hyperlink hyperlink; @Override public void updateItem(final OfferListItem item, boolean empty) { @@ -126,6 +127,7 @@ public class OffersViewCB extends CachedViewCB { if (item != null && !empty) { hyperlink = new Hyperlink(presentationModel.getTradeId(item)); + hyperlink.setId("id-link"); Tooltip.install(hyperlink, new Tooltip(presentationModel.getTradeId(item))); hyperlink.setOnAction(event -> openOfferDetails(item)); setGraphic(hyperlink); diff --git a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesModel.java b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesModel.java index 933f8656de..fbeb62b069 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesModel.java +++ b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesModel.java @@ -181,7 +181,6 @@ class PendingTradesModel extends UIModel { if (closedTrade != null) { list.removeIf(e -> e.getTrade().getId().equals(closedTrade.getId())); - closedTrade = null; } } else { @@ -201,7 +200,6 @@ class PendingTradesModel extends UIModel { void closeSummary() { if (closedTrade != null) { list.removeIf(e -> e.getTrade().getId().equals(closedTrade.getId())); - closedTrade = null; } } @@ -234,6 +232,9 @@ class PendingTradesModel extends UIModel { return selectedItem; } + String getCurrencyCode() { + return selectedItem.getTrade().getOffer().getCurrency().getCurrencyCode(); + } /////////////////////////////////////////////////////////////////////////////////////////// // Private diff --git a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesPM.java b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesPM.java index 517e7e5b4c..644df47733 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesPM.java +++ b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesPM.java @@ -151,6 +151,10 @@ public class PendingTradesPM extends PresentationModel { return model.getSelectedItem(); } + String getCurrencyCode() { + return model.getCurrencyCode(); + } + // columns String getTradeId(PendingTradesListItem item) { return item.getTrade().getId(); @@ -169,7 +173,15 @@ public class PendingTradesPM extends PresentationModel { } String getDirectionLabel(PendingTradesListItem item) { - return (item != null) ? formatter.formatDirection(item.getTrade().getOffer().getMirroredDirection()) : ""; + if (item != null) { + if (model.isOfferer()) + return formatter.formatDirection(item.getTrade().getOffer().getDirection()) + " Bitcoin"; + else + return formatter.formatDirection(item.getTrade().getOffer().getMirroredDirection()) + " Bitcoin"; + } + else { + return ""; + } } String getDate(PendingTradesListItem item) { diff --git a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesView.fxml b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesView.fxml index f19a2e7334..6a818c304c 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesView.fxml +++ b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesView.fxml @@ -164,7 +164,8 @@ -