diff --git a/src/main/java/bisq/desktop/bisq.css b/src/main/java/bisq/desktop/bisq.css index d1485bf1e6..a01697a134 100644 --- a/src/main/java/bisq/desktop/bisq.css +++ b/src/main/java/bisq/desktop/bisq.css @@ -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 * diff --git a/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.fxml b/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.fxml index 2768248d8c..409286df49 100644 --- a/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.fxml +++ b/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.fxml @@ -36,8 +36,9 @@ - - + + + diff --git a/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java b/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java index eb148f186c..0630b02102 100644 --- a/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java +++ b/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java @@ -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 { @@ -62,10 +70,12 @@ public class OpenOffersView extends ActivatableViewAndModel tableView; @FXML TableColumn 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 sortedList; + private PortfolioView.OpenOfferActionHandler openOfferActionHandler; @Inject public OpenOffersView(OpenOffersViewModel model, Navigation navigation, OfferDetailsWindow offerDetailsWindow) { @@ -83,7 +93,8 @@ public class OpenOffersView extends ActivatableViewAndModel().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 call(TableColumn column) { return new TableCell() { 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 { + checkBox.setOnAction(event -> { if (item.getOpenOffer().isDeactivated()) { onActivateOpenOffer(item.getOpenOffer()); } else { @@ -431,9 +446,9 @@ public class OpenOffersView extends ActivatableViewAndModel call(TableColumn column) { return new TableCell() { - final ImageView iconView = new ImageView(); Button button; @Override @@ -458,10 +472,7 @@ public class OpenOffersView extends ActivatableViewAndModel onRemoveOpenOffer(item.getOpenOffer())); @@ -477,5 +488,41 @@ public class OpenOffersView extends ActivatableViewAndModel new ReadOnlyObjectWrapper<>(offerListItem.getValue())); + editItemColumn.setCellFactory( + new Callback, TableCell>() { + @Override + public TableCell call(TableColumn column) { + return new TableCell() { + 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; + } }