package ru.testing.client.elements.filter; import javafx.collections.ObservableList; import javafx.scene.control.ContextMenu; import javafx.scene.control.ListCell; import ru.testing.client.elements.ContextMenuItems; /** * Filters cell factory */ class FilterCellFactory extends ListCell<String> { private ObservableList<String> list; FilterCellFactory(ObservableList<String> list) { this.list = list; } @Override protected void updateItem(String message, boolean empty) { super.updateItem(message, empty); if (message != null) { setText(message); setContextMenu(getFilterContextMenu(this)); } else { setText(null); setGraphic(null); } } /** * Context menu for filter pop over * * @param cell ListCell string * @return ContextMenu */ private ContextMenu getFilterContextMenu(ListCell<String> cell) { ContextMenu contextMenu = new ContextMenu(); ContextMenuItems m = new ContextMenuItems(); contextMenu.getItems().addAll( m.removeCell(cell), m.clearListView(list) ); return contextMenu; } }