mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-24 15:10:44 +01:00
Re-style deactivate/activate offer column and add edit offer column
This commit is contained in:
parent
6e50e53e13
commit
c98b185e3d
3 changed files with 90 additions and 28 deletions
|
@ -553,6 +553,20 @@ textfield */
|
|||
-fx-text-fill: -bs-medium-grey;
|
||||
}
|
||||
|
||||
.delete-icon {
|
||||
-fx-fill: -bs-red;
|
||||
}
|
||||
|
||||
.delete {
|
||||
-fx-text-fill: -bs-error-red;
|
||||
-fx-fill: -bs-error-red;
|
||||
}
|
||||
|
||||
.delete:hover {
|
||||
-fx-text-fill: -bs-black;
|
||||
-fx-fill: -bs-black;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* *
|
||||
* Images *
|
||||
|
|
|
@ -36,8 +36,9 @@
|
|||
<TableColumn fx:id="amountColumn" minWidth="150"/>
|
||||
<TableColumn fx:id="volumeColumn" minWidth="170"/>
|
||||
<TableColumn fx:id="directionColumn" minWidth="80"/>
|
||||
<TableColumn fx:id="deactivateItemColumn" minWidth="120" maxWidth="120" sortable="false"/>
|
||||
<TableColumn fx:id="removeItemColumn" minWidth="110" maxWidth="120" sortable="false"/>
|
||||
<TableColumn fx:id="deactivateItemColumn" minWidth="100" maxWidth="100" sortable="false"/>
|
||||
<TableColumn fx:id="editItemColumn" minWidth="60" maxWidth="60" sortable="false"/>
|
||||
<TableColumn fx:id="removeItemColumn" minWidth="60" maxWidth="60" sortable="false"/>
|
||||
</columns>
|
||||
</TableView>
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ package bisq.desktop.main.portfolio.openoffer;
|
|||
import bisq.desktop.Navigation;
|
||||
import bisq.desktop.common.view.ActivatableViewAndModel;
|
||||
import bisq.desktop.common.view.FxmlView;
|
||||
import bisq.desktop.components.AutoTooltipButton;
|
||||
import bisq.desktop.components.AutoTooltipCheckBox;
|
||||
import bisq.desktop.components.AutoTooltipLabel;
|
||||
import bisq.desktop.components.HyperlinkWithIcon;
|
||||
import bisq.desktop.main.MainView;
|
||||
|
@ -28,6 +28,7 @@ import bisq.desktop.main.funds.FundsView;
|
|||
import bisq.desktop.main.funds.withdrawal.WithdrawalView;
|
||||
import bisq.desktop.main.overlays.popups.Popup;
|
||||
import bisq.desktop.main.overlays.windows.OfferDetailsWindow;
|
||||
import bisq.desktop.main.portfolio.PortfolioView;
|
||||
|
||||
import bisq.core.locale.Res;
|
||||
import bisq.core.monetary.Price;
|
||||
|
@ -40,6 +41,7 @@ import javax.inject.Inject;
|
|||
import javafx.fxml.FXML;
|
||||
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.CheckBox;
|
||||
import javafx.scene.control.TableCell;
|
||||
import javafx.scene.control.TableColumn;
|
||||
import javafx.scene.control.TableView;
|
||||
|
@ -55,6 +57,12 @@ import javafx.util.Callback;
|
|||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static bisq.desktop.util.FormBuilder.getIconButton;
|
||||
|
||||
|
||||
|
||||
import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon;
|
||||
|
||||
@FxmlView
|
||||
public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersViewModel> {
|
||||
|
||||
|
@ -62,10 +70,12 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
TableView<OpenOfferListItem> tableView;
|
||||
@FXML
|
||||
TableColumn<OpenOfferListItem, OpenOfferListItem> priceColumn, amountColumn, volumeColumn,
|
||||
marketColumn, directionColumn, dateColumn, offerIdColumn, deactivateItemColumn, removeItemColumn;
|
||||
marketColumn, directionColumn, dateColumn, offerIdColumn, deactivateItemColumn,
|
||||
removeItemColumn, editItemColumn;
|
||||
private final Navigation navigation;
|
||||
private final OfferDetailsWindow offerDetailsWindow;
|
||||
private SortedList<OpenOfferListItem> sortedList;
|
||||
private PortfolioView.OpenOfferActionHandler openOfferActionHandler;
|
||||
|
||||
@Inject
|
||||
public OpenOffersView(OpenOffersViewModel model, Navigation navigation, OfferDetailsWindow offerDetailsWindow) {
|
||||
|
@ -83,7 +93,8 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
directionColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.offerType")));
|
||||
dateColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.dateTime")));
|
||||
offerIdColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.offerId")));
|
||||
deactivateItemColumn.setGraphic(new AutoTooltipLabel(""));
|
||||
deactivateItemColumn.setGraphic(new AutoTooltipLabel("Enabled"));
|
||||
editItemColumn.setGraphic(new AutoTooltipLabel(""));
|
||||
removeItemColumn.setGraphic(new AutoTooltipLabel(""));
|
||||
|
||||
setOfferIdColumnCellFactory();
|
||||
|
@ -94,6 +105,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
setVolumeColumnCellFactory();
|
||||
setDateColumnCellFactory();
|
||||
setDeactivateColumnCellFactory();
|
||||
setEditColumnCellFactory();
|
||||
setRemoveColumnCellFactory();
|
||||
|
||||
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
|
||||
|
@ -200,6 +212,14 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
});
|
||||
}
|
||||
|
||||
private void onEditOpenOffer(OpenOffer openOffer) {
|
||||
if (model.isBootstrapped()) {
|
||||
openOfferActionHandler.onEditOpenOffer(openOffer);
|
||||
} else {
|
||||
new Popup<>().information(Res.get("popup.warning.notFullyConnected")).show();
|
||||
}
|
||||
}
|
||||
|
||||
private void setOfferIdColumnCellFactory() {
|
||||
offerIdColumn.setCellValueFactory((openOfferListItem) -> new ReadOnlyObjectWrapper<>(openOfferListItem.getValue()));
|
||||
offerIdColumn.setCellFactory(
|
||||
|
@ -270,7 +290,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
super.updateItem(item, empty);
|
||||
getStyleClass().removeAll("offer-disabled");
|
||||
|
||||
if(item != null) {
|
||||
if (item != null) {
|
||||
if (model.isDeactivated(item)) getStyleClass().add("offer-disabled");
|
||||
setGraphic(new AutoTooltipLabel(model.getAmount(item)));
|
||||
} else {
|
||||
|
@ -296,7 +316,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
super.updateItem(item, empty);
|
||||
getStyleClass().removeAll("offer-disabled");
|
||||
|
||||
if(item != null) {
|
||||
if (item != null) {
|
||||
if (model.isDeactivated(item)) getStyleClass().add("offer-disabled");
|
||||
setGraphic(new AutoTooltipLabel(model.getPrice(item)));
|
||||
} else {
|
||||
|
@ -394,17 +414,13 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
public TableCell<OpenOfferListItem, OpenOfferListItem> call(TableColumn<OpenOfferListItem, OpenOfferListItem> column) {
|
||||
return new TableCell<OpenOfferListItem, OpenOfferListItem>() {
|
||||
final ImageView iconView = new ImageView();
|
||||
Button button;
|
||||
CheckBox checkBox;
|
||||
|
||||
private void updateState(@NotNull OpenOffer openOffer) {
|
||||
if (openOffer.isDeactivated()) {
|
||||
button.setText(Res.get("shared.activate"));
|
||||
iconView.setId("image-alert-round");
|
||||
button.setGraphic(iconView);
|
||||
checkBox.setSelected(false);
|
||||
} else {
|
||||
button.setText(Res.get("shared.deactivate"));
|
||||
iconView.setId("image-green_circle");
|
||||
button.setGraphic(iconView);
|
||||
checkBox.setSelected(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -413,14 +429,13 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
super.updateItem(item, empty);
|
||||
|
||||
if (item != null && !empty) {
|
||||
if (button == null) {
|
||||
button = new AutoTooltipButton();
|
||||
button.setGraphic(iconView);
|
||||
if (checkBox == null) {
|
||||
checkBox = new AutoTooltipCheckBox();
|
||||
checkBox.setGraphic(iconView);
|
||||
updateState(item.getOpenOffer());
|
||||
button.setMinWidth(70);
|
||||
setGraphic(button);
|
||||
setGraphic(checkBox);
|
||||
}
|
||||
button.setOnAction(event -> {
|
||||
checkBox.setOnAction(event -> {
|
||||
if (item.getOpenOffer().isDeactivated()) {
|
||||
onActivateOpenOffer(item.getOpenOffer());
|
||||
} else {
|
||||
|
@ -431,9 +446,9 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
});
|
||||
} else {
|
||||
setGraphic(null);
|
||||
if (button != null) {
|
||||
button.setOnAction(null);
|
||||
button = null;
|
||||
if (checkBox != null) {
|
||||
checkBox.setOnAction(null);
|
||||
checkBox = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -449,7 +464,6 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
@Override
|
||||
public TableCell<OpenOfferListItem, OpenOfferListItem> call(TableColumn<OpenOfferListItem, OpenOfferListItem> column) {
|
||||
return new TableCell<OpenOfferListItem, OpenOfferListItem>() {
|
||||
final ImageView iconView = new ImageView();
|
||||
Button button;
|
||||
|
||||
@Override
|
||||
|
@ -458,10 +472,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
|
||||
if (item != null && !empty) {
|
||||
if (button == null) {
|
||||
button = new AutoTooltipButton(Res.get("shared.remove"));
|
||||
button.setMinWidth(70);
|
||||
iconView.setId("image-remove");
|
||||
button.setGraphic(iconView);
|
||||
button = getIconButton(MaterialDesignIcon.DELETE_FOREVER, "delete");
|
||||
setGraphic(button);
|
||||
}
|
||||
button.setOnAction(event -> onRemoveOpenOffer(item.getOpenOffer()));
|
||||
|
@ -477,5 +488,41 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setEditColumnCellFactory() {
|
||||
editItemColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper<>(offerListItem.getValue()));
|
||||
editItemColumn.setCellFactory(
|
||||
new Callback<TableColumn<OpenOfferListItem, OpenOfferListItem>, TableCell<OpenOfferListItem, OpenOfferListItem>>() {
|
||||
@Override
|
||||
public TableCell<OpenOfferListItem, OpenOfferListItem> call(TableColumn<OpenOfferListItem, OpenOfferListItem> column) {
|
||||
return new TableCell<OpenOfferListItem, OpenOfferListItem>() {
|
||||
Button button;
|
||||
|
||||
@Override
|
||||
public void updateItem(final OpenOfferListItem item, boolean empty) {
|
||||
super.updateItem(item, empty);
|
||||
|
||||
if (item != null && !empty) {
|
||||
if (button == null) {
|
||||
button = getIconButton(MaterialDesignIcon.PENCIL);
|
||||
setGraphic(button);
|
||||
}
|
||||
button.setOnAction(event -> onEditOpenOffer(item.getOpenOffer()));
|
||||
} else {
|
||||
setGraphic(null);
|
||||
if (button != null) {
|
||||
button.setOnAction(null);
|
||||
button = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void setOpenOfferActionHandler(PortfolioView.OpenOfferActionHandler openOfferActionHandler) {
|
||||
this.openOfferActionHandler = openOfferActionHandler;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue