package ru.khasang.cachoeira.viewcontroller.contextmenus;
import javafx.scene.control.CheckMenuItem;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.TreeTableView;
import java.util.ArrayList;
/**
* Контекстное меню для выбора видимых столбцов в таблицах
*/
public class ColumnContextMenu extends ContextMenu {
public ColumnContextMenu(TreeTableView<?> treeTableView) {
updateContextMenuColumnTTV(treeTableView);
}
public void updateContextMenuColumnTTV(TreeTableView<?> treeTableView) {
super.getItems().clear();
super.getItems().addAll(getCheckMenuItems(treeTableView));
}
private ArrayList<CheckMenuItem> getCheckMenuItems(TreeTableView<?> treeTableView) {
ArrayList<CheckMenuItem> contextItems = new ArrayList<>();
for (int i = 1; i < treeTableView.getColumns().size(); i++) {
contextItems.add(new CheckMenuItem(treeTableView.getColumns().get(i).getText()));
contextItems.get(i - 1).setSelected(treeTableView.getColumns().get(i).isVisible());
int j = i;
contextItems.get(i - 1).setOnAction(event -> treeTableView.getColumns().get(j).setVisible(((CheckMenuItem) event.getSource()).isSelected()));
}
return contextItems;
}
}