Reputation: 4209
I have a table with the context menu enabled allowing users to hide/show columns. I would like to show a label which indicates which columns are missing. I would like to accomplish this with a StringBinding. I am wondering if there is an easier way to listen for changes that adding each columns visible property as a dependency?
StringBinding hiddenColumnBinding = Bindings.createStringBinding(() -> {
String text = "";
Optional<String> columns = transactionTableView.getColumns()
.stream()
.filter(column -> !column.isVisible())
.map(column -> column.getText())
.reduce((first, second) -> first + ", " + second);
if(columns.isPresent()){
text = "Hidden Columns: " + columns.get();
}
return text;
}, WHAT GOES HERE?);
hiddenColumns.textProperty().bind(hiddenColumnBinding);
Thanks
Upvotes: 0
Views: 714
Reputation: 4209
I found what I can use -transactionTableView.getVisibleLeafColumns()
StringBinding hiddenColumnBinding = Bindings.createStringBinding(() -> {
String text = "";
Optional<String> columns = transactionTableView.getColumns()
.stream()
.filter(column -> !column.isVisible())
.map(column -> column.getText())
.reduce((first, second) -> first + ", " + second);
if(columns.isPresent()){
text = "Hidden Columns: " + columns.get();
}
return text;
}, transactionTableView.getVisibleLeafColumns());
hiddenColumns.textProperty().bind(hiddenColumnBinding);
Upvotes: 1