add first and last column classes dynamically

This commit is contained in:
woodser 2025-05-09 08:16:45 -04:00
parent 6ec9d7a485
commit 34a6974c07
No known key found for this signature in database
GPG key ID: 55A10DD48ADEE5EF
18 changed files with 82 additions and 66 deletions

View file

@ -74,7 +74,7 @@ public class ManageMarketAlertsWindow extends Overlay<ManageMarketAlertsWindow>
private void addContent() {
TableView<MarketAlertFilter> tableView = new TableView<>();
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
GridPane.setRowIndex(tableView, ++rowIndex);
GridPane.setColumnSpan(tableView, 2);
GridPane.setMargin(tableView, new Insets(10, 0, 0, 0));

View file

@ -144,7 +144,7 @@ public class DepositView extends ActivatableView<VBox, Void> {
@Override
public void initialize() {
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
paymentLabelString = Res.get("funds.deposit.fundHavenoWallet");
addressColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.address")));
@ -378,7 +378,6 @@ public class DepositView extends ActivatableView<VBox, Void> {
///////////////////////////////////////////////////////////////////////////////////////////
private void setUsageColumnCellFactory() {
usageColumn.getStyleClass().add("last-column");
usageColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
usageColumn.setCellFactory(new Callback<>() {
@ -402,7 +401,6 @@ public class DepositView extends ActivatableView<VBox, Void> {
}
private void setAddressColumnCellFactory() {
addressColumn.getStyleClass().add("first-column");
addressColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
addressColumn.setCellFactory(

View file

@ -122,6 +122,7 @@ public class LockedView extends ActivatableView<VBox, Void> {
addressColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.address")));
balanceColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.balanceWithCur", Res.getBaseCurrencyCode())));
GUIUtil.applyTableStyle(tableView);
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
tableView.setPlaceholder(new AutoTooltipLabel(Res.get("funds.locked.noFunds")));
@ -250,7 +251,6 @@ public class LockedView extends ActivatableView<VBox, Void> {
///////////////////////////////////////////////////////////////////////////////////////////
private void setDateColumnCellFactory() {
dateColumn.getStyleClass().add("first-column");
dateColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
dateColumn.setCellFactory(new Callback<>() {
@ -342,7 +342,6 @@ public class LockedView extends ActivatableView<VBox, Void> {
}
private void setBalanceColumnCellFactory() {
balanceColumn.getStyleClass().add("last-column");
balanceColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
balanceColumn.setCellFactory(
new Callback<>() {

View file

@ -122,6 +122,7 @@ public class ReservedView extends ActivatableView<VBox, Void> {
addressColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.address")));
balanceColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.balanceWithCur", Res.getBaseCurrencyCode())));
GUIUtil.applyTableStyle(tableView);
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
tableView.setPlaceholder(new AutoTooltipLabel(Res.get("funds.reserved.noFunds")));
@ -249,7 +250,6 @@ public class ReservedView extends ActivatableView<VBox, Void> {
///////////////////////////////////////////////////////////////////////////////////////////
private void setDateColumnCellFactory() {
dateColumn.getStyleClass().add("first-column");
dateColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
dateColumn.setCellFactory(new Callback<>() {
@ -313,7 +313,6 @@ public class ReservedView extends ActivatableView<VBox, Void> {
}
private void setAddressColumnCellFactory() {
addressColumn.getStyleClass().add("last-column");
addressColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
addressColumn.setCellFactory(

View file

@ -127,7 +127,7 @@ public class TransactionsView extends ActivatableView<VBox, Void> {
@Override
public void initialize() {
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
dateColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.dateTime")));
detailsColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.details")));
@ -171,11 +171,6 @@ public class TransactionsView extends ActivatableView<VBox, Void> {
keyEventEventHandler = event -> {
// Not intended to be public to users as the feature is not well tested
if (Utilities.isAltOrCtrlPressed(KeyCode.R, event)) {
if (revertTxColumn.isVisible()) {
confidenceColumn.getStyleClass().remove("last-column");
} else {
confidenceColumn.getStyleClass().add("last-column");
}
revertTxColumn.setVisible(!revertTxColumn.isVisible());
}
};
@ -267,7 +262,6 @@ public class TransactionsView extends ActivatableView<VBox, Void> {
///////////////////////////////////////////////////////////////////////////////////////////
private void setDateColumnCellFactory() {
dateColumn.getStyleClass().add("first-column");
dateColumn.setCellValueFactory((addressListItem) ->
new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
dateColumn.setMaxWidth(200);
@ -479,7 +473,6 @@ public class TransactionsView extends ActivatableView<VBox, Void> {
}
private void setConfidenceColumnCellFactory() {
confidenceColumn.getStyleClass().add("last-column");
confidenceColumn.setCellValueFactory((addressListItem) ->
new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
confidenceColumn.setCellFactory(
@ -506,7 +499,6 @@ public class TransactionsView extends ActivatableView<VBox, Void> {
}
private void setRevertTxColumnCellFactory() {
revertTxColumn.getStyleClass().add("last-column");
revertTxColumn.setCellValueFactory((addressListItem) ->
new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
revertTxColumn.setCellFactory(

View file

@ -428,7 +428,7 @@ public class OfferBookChartView extends ActivatableViewAndModel<VBox, OfferBookC
private Tuple4<TableView<OfferListItem>, VBox, Button, Label> getOfferTable(OfferDirection direction) {
TableView<OfferListItem> tableView = new TableView<>();
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
tableView.setMinHeight(initialOfferTableViewHeight);
tableView.setPrefHeight(initialOfferTableViewHeight);
tableView.setMinWidth(480);
@ -492,7 +492,7 @@ public class OfferBookChartView extends ActivatableViewAndModel<VBox, OfferBookC
volumeColumn.setMinWidth(115);
volumeColumn.setSortable(false);
volumeColumn.textProperty().bind(volumeColumnLabel);
volumeColumn.getStyleClass().addAll("number-column", "first-column");
volumeColumn.getStyleClass().addAll("number-column");
volumeColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
volumeColumn.setCellFactory(
new Callback<>() {
@ -585,7 +585,7 @@ public class OfferBookChartView extends ActivatableViewAndModel<VBox, OfferBookC
}
};
avatarColumn.getStyleClass().addAll("last-column", "avatar-column");
avatarColumn.getStyleClass().addAll("avatar-column");
avatarColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
avatarColumn.setCellFactory(
new Callback<>() {

View file

@ -65,7 +65,7 @@ public class SpreadView extends ActivatableViewAndModel<GridPane, SpreadViewMode
@Override
public void initialize() {
tableView = new TableView<>();
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
int gridRow = 0;
GridPane.setRowIndex(tableView, gridRow);
@ -145,7 +145,7 @@ public class SpreadView extends ActivatableViewAndModel<GridPane, SpreadViewMode
setMinWidth(160);
}
};
column.getStyleClass().addAll("number-column", "first-column");
column.getStyleClass().addAll("number-column");
column.setCellValueFactory((item) -> new ReadOnlyObjectWrapper<>(item.getValue()));
column.setCellFactory(
new Callback<>() {
@ -290,7 +290,7 @@ public class SpreadView extends ActivatableViewAndModel<GridPane, SpreadViewMode
setMinWidth(110);
}
};
column.getStyleClass().addAll("number-column", "last-column");
column.getStyleClass().addAll("number-column");
column.setCellValueFactory((item) -> new ReadOnlyObjectWrapper<>(item.getValue()));
column.setCellFactory(
new Callback<>() {

View file

@ -731,7 +731,7 @@ public class TradesChartsView extends ActivatableViewAndModel<VBox, TradesCharts
private void createTable() {
tableView = new TableView<>();
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
VBox.setVgrow(tableView, Priority.ALWAYS);
// date
@ -741,7 +741,7 @@ public class TradesChartsView extends ActivatableViewAndModel<VBox, TradesCharts
setMaxWidth(240);
}
};
dateColumn.getStyleClass().addAll("number-column", "first-column");
dateColumn.getStyleClass().addAll("number-column");
dateColumn.setCellValueFactory((tradeStatistics) -> new ReadOnlyObjectWrapper<>(tradeStatistics.getValue()));
dateColumn.setCellFactory(
new Callback<>() {
@ -867,7 +867,7 @@ public class TradesChartsView extends ActivatableViewAndModel<VBox, TradesCharts
// paymentMethod
TableColumn<TradeStatistics3ListItem, TradeStatistics3ListItem> paymentMethodColumn = new AutoTooltipTableColumn<>(Res.get("shared.paymentMethod"));
paymentMethodColumn.getStyleClass().addAll("number-column", "last-column");
paymentMethodColumn.getStyleClass().addAll("number-column");
paymentMethodColumn.setCellValueFactory((tradeStatistics) -> new ReadOnlyObjectWrapper<>(tradeStatistics.getValue()));
paymentMethodColumn.setCellFactory(
new Callback<>() {

View file

@ -230,7 +230,7 @@ abstract public class OfferBookView<R extends GridPane, M extends OfferBookViewM
root.getChildren().add(offerToolsBox);
tableView = new TableView<>();
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
GridPane.setRowIndex(tableView, ++gridRow);
GridPane.setColumnIndex(tableView, 0);
@ -408,14 +408,12 @@ abstract public class OfferBookView<R extends GridPane, M extends OfferBookViewM
if (showAll) {
volumeColumn.setTitleWithHelpText(Res.get("shared.amountMinMax"), Res.get("shared.amountHelp"));
priceColumn.setTitle(Res.get("shared.price"));
priceColumn.getStyleClass().remove("first-column");
if (!tableView.getColumns().contains(marketColumn))
tableView.getColumns().add(0, marketColumn);
} else {
volumeColumn.setTitleWithHelpText(Res.get("offerbook.volume", code), Res.get("shared.amountHelp"));
priceColumn.setTitle(CurrencyUtil.getPriceWithCurrencyCode(code));
priceColumn.getStyleClass().add("first-column");
tableView.getColumns().remove(marketColumn);
}
@ -818,7 +816,7 @@ abstract public class OfferBookView<R extends GridPane, M extends OfferBookViewM
setMinWidth(40);
}
};
column.getStyleClass().addAll("number-column", "first-column");
column.getStyleClass().addAll("number-column");
column.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
column.setCellFactory(
new Callback<>() {
@ -1246,7 +1244,7 @@ abstract public class OfferBookView<R extends GridPane, M extends OfferBookViewM
setSortable(true);
}
};
column.getStyleClass().addAll("last-column", "avatar-column");
column.getStyleClass().addAll("avatar-column");
column.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
column.setCellFactory(
new Callback<>() {

View file

@ -156,7 +156,7 @@ public class ClosedTradesView extends ActivatableViewAndModel<VBox, ClosedTrades
@Override
public void initialize() {
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
widthListener = (observable, oldValue, newValue) -> onWidthChange((double) newValue);
tradeFeeColumn.setGraphic(new AutoTooltipLabel(ColumnNames.TRADE_FEE.toString().replace(" BTC", "")));
@ -328,7 +328,6 @@ public class ClosedTradesView extends ActivatableViewAndModel<VBox, ClosedTrades
}
private void setTradeIdColumnCellFactory() {
tradeIdColumn.getStyleClass().add("first-column");
tradeIdColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper<>(offerListItem.getValue()));
tradeIdColumn.setCellFactory(
new Callback<>() {
@ -465,7 +464,7 @@ public class ClosedTradesView extends ActivatableViewAndModel<VBox, ClosedTrades
@SuppressWarnings("UnusedReturnValue")
private TableColumn<ClosedTradesListItem, ClosedTradesListItem> setAvatarColumnCellFactory() {
avatarColumn.getStyleClass().addAll("last-column", "avatar-column");
avatarColumn.getStyleClass().add("avatar-column");
avatarColumn.setCellValueFactory((item) -> new ReadOnlyObjectWrapper<>(item.getValue()));
avatarColumn.setCellFactory(
new Callback<>() {

View file

@ -115,7 +115,7 @@ public class FailedTradesView extends ActivatableViewAndModel<VBox, FailedTrades
@Override
public void initialize() {
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
priceColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.price")));
amountColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.amountWithCur", Res.getBaseCurrencyCode())));
@ -387,7 +387,6 @@ public class FailedTradesView extends ActivatableViewAndModel<VBox, FailedTrades
}
private void setTradeIdColumnCellFactory() {
tradeIdColumn.getStyleClass().add("first-column");
tradeIdColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper<>(offerListItem.getValue()));
tradeIdColumn.setCellFactory(
new Callback<>() {
@ -457,7 +456,6 @@ public class FailedTradesView extends ActivatableViewAndModel<VBox, FailedTrades
}
private void setStateColumnCellFactory() {
stateColumn.getStyleClass().add("last-column");
stateColumn.setCellValueFactory((trade) -> new ReadOnlyObjectWrapper<>(trade.getValue()));
stateColumn.setCellFactory(
new Callback<>() {

View file

@ -156,7 +156,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
@Override
public void initialize() {
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
widthListener = (observable, oldValue, newValue) -> onWidthChange((double) newValue);
groupIdColumn.setGraphic(new AutoTooltipLabel(ColumnNames.GROUP_ID.toString()));
@ -529,7 +529,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
private void setOfferIdColumnCellFactory() {
offerIdColumn.setCellValueFactory((openOfferListItem) -> new ReadOnlyObjectWrapper<>(openOfferListItem.getValue()));
offerIdColumn.getStyleClass().addAll("number-column", "first-column");
offerIdColumn.getStyleClass().addAll("number-column");
offerIdColumn.setCellFactory(
new Callback<>() {
@ -905,7 +905,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
}
private void setRemoveColumnCellFactory() {
removeItemColumn.getStyleClass().addAll("last-column", "avatar-column");
removeItemColumn.getStyleClass().addAll("avatar-column");
removeItemColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper<>(offerListItem.getValue()));
removeItemColumn.setCellFactory(
new Callback<>() {

View file

@ -172,7 +172,7 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
@Override
public void initialize() {
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
priceColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.price")));
amountColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.amountWithCur", Res.getBaseCurrencyCode())));
@ -610,7 +610,6 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
///////////////////////////////////////////////////////////////////////////////////////////
private void setTradeIdColumnCellFactory() {
tradeIdColumn.getStyleClass().add("first-column");
tradeIdColumn.setCellValueFactory((pendingTradesListItem) -> new ReadOnlyObjectWrapper<>(pendingTradesListItem.getValue()));
tradeIdColumn.setCellFactory(
new Callback<>() {
@ -824,7 +823,7 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
@SuppressWarnings("UnusedReturnValue")
private TableColumn<PendingTradesListItem, PendingTradesListItem> setAvatarColumnCellFactory() {
avatarColumn.setCellValueFactory((trade) -> new ReadOnlyObjectWrapper<>(trade.getValue()));
avatarColumn.getStyleClass().addAll("last-column", "avatar-column");
avatarColumn.getStyleClass().add("avatar-column");
avatarColumn.setCellFactory(
new Callback<>() {
@ -863,7 +862,7 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
@SuppressWarnings("UnusedReturnValue")
private TableColumn<PendingTradesListItem, PendingTradesListItem> setChatColumnCellFactory() {
chatColumn.setCellValueFactory((trade) -> new ReadOnlyObjectWrapper<>(trade.getValue()));
chatColumn.getStyleClass().addAll("last-column", "avatar-column");
chatColumn.getStyleClass().addAll("avatar-column");
chatColumn.setSortable(false);
chatColumn.setCellFactory(
new Callback<>() {

View file

@ -149,8 +149,8 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
@Override
public void initialize() {
GUIUtil.applyRoundedArc(p2pPeersTableView);
GUIUtil.applyRoundedArc(moneroConnectionsTableView);
GUIUtil.applyTableStyle(p2pPeersTableView);
GUIUtil.applyTableStyle(moneroConnectionsTableView);
onionAddress.getStyleClass().add("label-float");
sentDataTextField.getStyleClass().add("label-float");
@ -169,7 +169,6 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
useTorForXmrOnRadio.setText(Res.get("settings.net.useTorForXmrOnRadio"));
moneroNodesLabel.setText(Res.get("settings.net.moneroNodesLabel"));
moneroConnectionAddressColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.address")));
moneroConnectionAddressColumn.getStyleClass().add("first-column");
moneroConnectionConnectedColumn.setGraphic(new AutoTooltipLabel(Res.get("settings.net.connection")));
localhostXmrNodeInfoLabel.setText(Res.get("settings.net.localhostXmrNodeInfo"));
useProvidedNodesRadio.setText(Res.get("settings.net.useProvidedNodesRadio"));
@ -179,7 +178,6 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
rescanOutputsButton.updateText(Res.get("settings.net.rescanOutputsButton"));
p2PPeersLabel.setText(Res.get("settings.net.p2PPeersLabel"));
onionAddressColumn.setGraphic(new AutoTooltipLabel(Res.get("settings.net.onionAddressColumn")));
onionAddressColumn.getStyleClass().add("first-column");
creationDateColumn.setGraphic(new AutoTooltipLabel(Res.get("settings.net.creationDateColumn")));
connectionTypeColumn.setGraphic(new AutoTooltipLabel(Res.get("settings.net.connectionTypeColumn")));
sentDataTextField.setPromptText(Res.get("settings.net.sentDataLabel"));
@ -190,7 +188,6 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
sentBytesColumn.setGraphic(new AutoTooltipLabel(Res.get("settings.net.sentBytesColumn")));
receivedBytesColumn.setGraphic(new AutoTooltipLabel(Res.get("settings.net.receivedBytesColumn")));
peerTypeColumn.setGraphic(new AutoTooltipLabel(Res.get("settings.net.peerTypeColumn")));
peerTypeColumn.getStyleClass().add("last-column");
openTorSettingsButton.updateText(Res.get("settings.net.openTorSettingsButton"));
// TODO: hiding button to rescan outputs until supported

View file

@ -311,7 +311,7 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> implements
VBox.setVgrow(filterBox, Priority.NEVER);
tableView = new TableView<>();
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
VBox.setVgrow(tableView, Priority.SOMETIMES);
tableView.setMinHeight(150);
@ -958,7 +958,7 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> implements
{
setMaxWidth(80);
setMinWidth(65);
getStyleClass().addAll("first-column", "avatar-column");
getStyleClass().addAll("avatar-column");
setSortable(false);
}
};
@ -1355,7 +1355,6 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> implements
setMinWidth(50);
}
};
column.getStyleClass().add("last-column");
column.setCellValueFactory((dispute) -> new ReadOnlyObjectWrapper<>(dispute.getValue()));
column.setCellFactory(
new Callback<>() {

View file

@ -208,7 +208,6 @@ public abstract class DisputeAgentView extends DisputeView implements MultipleHo
protected void setupTable() {
super.setupTable();
stateColumn.getStyleClass().remove("last-column");
tableView.getColumns().add(getAlertColumn());
}
@ -243,7 +242,6 @@ public abstract class DisputeAgentView extends DisputeView implements MultipleHo
setMinWidth(50);
}
};
column.getStyleClass().add("last-column");
column.setCellValueFactory((dispute) -> new ReadOnlyObjectWrapper<>(dispute.getValue()));
column.setCellFactory(
c -> new TableCell<>() {

View file

@ -2466,7 +2466,7 @@ public class FormBuilder {
if (groupStyle != null) titledGroupBg.getStyleClass().add(groupStyle);
TableView<T> tableView = new TableView<>();
GUIUtil.applyRoundedArc(tableView);
GUIUtil.applyTableStyle(tableView);
GridPane.setRowIndex(tableView, rowIndex);
GridPane.setMargin(tableView, new Insets(top + 30, -10, 5, -10));
gridPane.getChildren().add(tableView);

View file

@ -65,6 +65,7 @@ import haveno.desktop.main.account.content.traditionalaccounts.TraditionalAccoun
import haveno.desktop.main.overlays.popups.Popup;
import haveno.network.p2p.P2PService;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.geometry.HPos;
import javafx.geometry.Orientation;
import javafx.scene.Node;
@ -76,6 +77,7 @@ import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.ScrollBar;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
@ -1048,17 +1050,6 @@ public class GUIUtil {
gridPane.getColumnConstraints().addAll(columnConstraints1, columnConstraints2);
}
public static void applyRoundedArc(TableView<?> tableView) {
Rectangle clip = new Rectangle();
clip.setArcWidth(Layout.ROUNDED_ARC);
clip.setArcHeight(Layout.ROUNDED_ARC);
tableView.setClip(clip);
tableView.layoutBoundsProperty().addListener((obs, oldVal, newVal) -> {
clip.setWidth(newVal.getWidth());
clip.setHeight(newVal.getHeight());
});
}
public static void initFilledStyle(TextField textField) {
textField.textProperty().addListener((observable, oldValue, newValue) -> {
setFilledStyle(textField);
@ -1090,4 +1081,53 @@ public class GUIUtil {
comboBox.getStyleClass().remove("filled");
}
}
public static void applyTableStyle(TableView<?> tableView) {
applyRoundedArc(tableView);
applyEdgeColumnStyleClasses(tableView);
}
private static void applyRoundedArc(TableView<?> tableView) {
Rectangle clip = new Rectangle();
clip.setArcWidth(Layout.ROUNDED_ARC);
clip.setArcHeight(Layout.ROUNDED_ARC);
tableView.setClip(clip);
tableView.layoutBoundsProperty().addListener((obs, oldVal, newVal) -> {
clip.setWidth(newVal.getWidth());
clip.setHeight(newVal.getHeight());
});
}
private static <T> void applyEdgeColumnStyleClasses(TableView<T> tableView) {
ListChangeListener<TableColumn<T, ?>> listener = change -> {
while (change.next()) {
if (change.wasPermutated() || change.wasReplaced()
|| change.wasAdded() || change.wasRemoved()) {
updateEdgeColumnStyleClasses(tableView);
}
}
};
tableView.getColumns().addListener(listener);
updateEdgeColumnStyleClasses(tableView);
}
private static <T> void updateEdgeColumnStyleClasses(TableView<T> tableView) {
var columns = tableView.getColumns();
for (TableColumn<T, ?> col : columns) {
col.getStyleClass().removeAll("first-column", "last-column");
}
if (!columns.isEmpty()) {
TableColumn<T, ?> first = columns.get(0);
TableColumn<T, ?> last = columns.get(columns.size() - 1);
if (!first.getStyleClass().contains("first-column")) {
first.getStyleClass().add("first-column");
}
if (!last.getStyleClass().contains("last-column")) {
last.getStyleClass().add("last-column");
}
}
}
}