mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-06-25 15:20:40 -04:00
Improve display for role (buyer/seller/offerer/taker)
This commit is contained in:
parent
d31a4c2947
commit
ba4a228fed
6 changed files with 70 additions and 18 deletions
|
@ -98,6 +98,10 @@ public class Contract implements Serializable {
|
||||||
this.takerBtcPubKey = takerBtcPubKey;
|
this.takerBtcPubKey = takerBtcPubKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isBuyerOffererAndSellerTaker() {
|
||||||
|
return isBuyerOffererAndSellerTaker;
|
||||||
|
}
|
||||||
|
|
||||||
public String getBuyerAccountId() {
|
public String getBuyerAccountId() {
|
||||||
return isBuyerOffererAndSellerTaker ? offererAccountId : takerAccountId;
|
return isBuyerOffererAndSellerTaker ? offererAccountId : takerAccountId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
|
||||||
public class PendingTradesDataModel extends ActivatableDataModel {
|
public class PendingTradesDataModel extends ActivatableDataModel {
|
||||||
private final TradeManager tradeManager;
|
private final TradeManager tradeManager;
|
||||||
|
|
||||||
private final WalletService walletService;
|
private final WalletService walletService;
|
||||||
private final TradeWalletService tradeWalletService;
|
private final TradeWalletService tradeWalletService;
|
||||||
private final User user;
|
private final User user;
|
||||||
|
@ -295,6 +294,10 @@ public class PendingTradesDataModel extends ActivatableDataModel {
|
||||||
return trade.getOffer().getDirection() == Offer.Direction.BUY;
|
return trade.getOffer().getDirection() == Offer.Direction.BUY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean isOfferer(Offer offer) {
|
||||||
|
return tradeManager.isMyOffer(offer);
|
||||||
|
}
|
||||||
|
|
||||||
boolean isOfferer() {
|
boolean isOfferer() {
|
||||||
return isOfferer;
|
return isOfferer;
|
||||||
}
|
}
|
||||||
|
@ -380,11 +383,5 @@ public class PendingTradesDataModel extends ActivatableDataModel {
|
||||||
public Preferences getPreferences() {
|
public Preferences getPreferences() {
|
||||||
return preferences;
|
return preferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Utils
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,8 @@
|
||||||
<PropertyValueFactory property="tradeVolume"/>
|
<PropertyValueFactory property="tradeVolume"/>
|
||||||
</cellValueFactory>
|
</cellValueFactory>
|
||||||
</TableColumn>
|
</TableColumn>
|
||||||
<TableColumn text="Trade type" fx:id="directionColumn" minWidth="80"/>
|
<TableColumn text="Payment method" fx:id="paymentMethodColumn" minWidth="120"/>
|
||||||
|
<TableColumn text="My role" fx:id="roleColumn" minWidth="120" maxWidth="120"/>
|
||||||
</columns>
|
</columns>
|
||||||
</TableView>
|
</TableView>
|
||||||
</VBox>
|
</VBox>
|
||||||
|
|
|
@ -58,9 +58,7 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
|
||||||
@FXML
|
@FXML
|
||||||
TableColumn<PendingTradesListItem, Fiat> tradeVolumeColumn;
|
TableColumn<PendingTradesListItem, Fiat> tradeVolumeColumn;
|
||||||
@FXML
|
@FXML
|
||||||
TableColumn<PendingTradesListItem, PendingTradesListItem> directionColumn;
|
TableColumn<PendingTradesListItem, PendingTradesListItem> roleColumn, paymentMethodColumn, idColumn;
|
||||||
@FXML
|
|
||||||
TableColumn<PendingTradesListItem, PendingTradesListItem> idColumn;
|
|
||||||
@FXML
|
@FXML
|
||||||
TableColumn<PendingTradesListItem, Date> dateColumn;
|
TableColumn<PendingTradesListItem, Date> dateColumn;
|
||||||
@FXML
|
@FXML
|
||||||
|
@ -93,7 +91,8 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
|
||||||
setAmountColumnCellFactory();
|
setAmountColumnCellFactory();
|
||||||
setPriceColumnCellFactory();
|
setPriceColumnCellFactory();
|
||||||
setVolumeColumnCellFactory();
|
setVolumeColumnCellFactory();
|
||||||
setDirectionColumnCellFactory();
|
setPaymentMethodColumnCellFactory();
|
||||||
|
setRoleColumnCellFactory();
|
||||||
|
|
||||||
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
|
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
|
||||||
table.setPlaceholder(new Label("No pending trades available"));
|
table.setPlaceholder(new Label("No pending trades available"));
|
||||||
|
@ -308,9 +307,9 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDirectionColumnCellFactory() {
|
private void setPaymentMethodColumnCellFactory() {
|
||||||
directionColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
|
paymentMethodColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
|
||||||
directionColumn.setCellFactory(
|
paymentMethodColumn.setCellFactory(
|
||||||
new Callback<TableColumn<PendingTradesListItem, PendingTradesListItem>, TableCell<PendingTradesListItem,
|
new Callback<TableColumn<PendingTradesListItem, PendingTradesListItem>, TableCell<PendingTradesListItem,
|
||||||
PendingTradesListItem>>() {
|
PendingTradesListItem>>() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -321,7 +320,29 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
|
||||||
public void updateItem(final PendingTradesListItem item, boolean empty) {
|
public void updateItem(final PendingTradesListItem item, boolean empty) {
|
||||||
super.updateItem(item, empty);
|
super.updateItem(item, empty);
|
||||||
if (item != null && !empty)
|
if (item != null && !empty)
|
||||||
setText(model.evaluateDirection(item));
|
setText(model.getPaymentMethod(item));
|
||||||
|
else
|
||||||
|
setText(null);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setRoleColumnCellFactory() {
|
||||||
|
roleColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
|
||||||
|
roleColumn.setCellFactory(
|
||||||
|
new Callback<TableColumn<PendingTradesListItem, PendingTradesListItem>, TableCell<PendingTradesListItem,
|
||||||
|
PendingTradesListItem>>() {
|
||||||
|
@Override
|
||||||
|
public TableCell<PendingTradesListItem, PendingTradesListItem> call(
|
||||||
|
TableColumn<PendingTradesListItem, PendingTradesListItem> column) {
|
||||||
|
return new TableCell<PendingTradesListItem, PendingTradesListItem>() {
|
||||||
|
@Override
|
||||||
|
public void updateItem(final PendingTradesListItem item, boolean empty) {
|
||||||
|
super.updateItem(item, empty);
|
||||||
|
if (item != null && !empty)
|
||||||
|
setText(model.getMyRole(item));
|
||||||
else
|
else
|
||||||
setText(null);
|
setText(null);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,9 @@ import io.bitsquare.gui.util.validation.*;
|
||||||
import io.bitsquare.locale.BSResources;
|
import io.bitsquare.locale.BSResources;
|
||||||
import io.bitsquare.p2p.P2PService;
|
import io.bitsquare.p2p.P2PService;
|
||||||
import io.bitsquare.payment.PaymentMethod;
|
import io.bitsquare.payment.PaymentMethod;
|
||||||
|
import io.bitsquare.trade.Contract;
|
||||||
import io.bitsquare.trade.Trade;
|
import io.bitsquare.trade.Trade;
|
||||||
|
import io.bitsquare.trade.offer.Offer;
|
||||||
import javafx.beans.property.*;
|
import javafx.beans.property.*;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import org.bitcoinj.core.BlockChainListener;
|
import org.bitcoinj.core.BlockChainListener;
|
||||||
|
@ -242,8 +244,28 @@ public class PendingTradesViewModel extends ActivatableWithDataModel<PendingTrad
|
||||||
return formatter.formatFiatWithCode(value);
|
return formatter.formatFiatWithCode(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
String evaluateDirection(PendingTradesListItem item) {
|
String getMyRole(PendingTradesListItem item) {
|
||||||
return (item != null) ? formatter.getDirection(dataModel.getDirection(item.getTrade().getOffer())) : "";
|
Trade trade = item.getTrade();
|
||||||
|
Contract contract = trade.getContract();
|
||||||
|
if (contract != null)
|
||||||
|
return formatter.getRole(contract.isBuyerOffererAndSellerTaker(), dataModel.isOfferer(trade.getOffer()));
|
||||||
|
else
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
String getPaymentMethod(PendingTradesListItem item) {
|
||||||
|
String result = "";
|
||||||
|
if (item != null) {
|
||||||
|
Offer offer = item.getTrade().getOffer();
|
||||||
|
String method = BSResources.get(offer.getPaymentMethod().getId());
|
||||||
|
String methodCountryCode = offer.getPaymentMethodCountryCode();
|
||||||
|
|
||||||
|
if (methodCountryCode != null)
|
||||||
|
result = method + " (" + methodCountryCode + ")";
|
||||||
|
else
|
||||||
|
result = method;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
String formatDate(Date value) {
|
String formatDate(Date value) {
|
||||||
|
|
|
@ -365,4 +365,11 @@ public class BSFormatter {
|
||||||
public String getDirectionDescription(Offer.Direction direction) {
|
public String getDirectionDescription(Offer.Direction direction) {
|
||||||
return direction == Offer.Direction.BUY ? "Offerer as bitcoin buyer / Taker as bitcoin seller" : "Offerer as bitcoin seller / Taker as bitcoin buyer";
|
return direction == Offer.Direction.BUY ? "Offerer as bitcoin buyer / Taker as bitcoin seller" : "Offerer as bitcoin seller / Taker as bitcoin buyer";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRole(boolean isBuyerOffererAndSellerTaker, boolean isOfferer) {
|
||||||
|
if (isBuyerOffererAndSellerTaker)
|
||||||
|
return isOfferer ? "Buyer (offerer)" : "Seller (taker)";
|
||||||
|
else
|
||||||
|
return isOfferer ? "Seller (offerer)" : "Buyer (taker)";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue