package org.jftclient; import org.jftclient.config.dao.HostDao; import org.jftclient.config.domain.Host; import javafx.scene.control.ComboBox; import javafx.scene.control.ContextMenu; import javafx.scene.control.ListCell; import javafx.scene.control.MenuItem; /** * @author sergei.malafeev */ public class HostCell extends ListCell<String> { private ContextMenu contextMenu; private HostDao hostDao; private ComboBox<String> hostField; public HostCell(HostDao hostDao, ComboBox<String> hostField) { this.hostDao = hostDao; this.hostField = hostField; MenuItem deleteMenu = new MenuItem("Delete"); deleteMenu.setOnAction(event -> deleteItems()); contextMenu = new ContextMenu(); contextMenu.getItems().addAll(deleteMenu); } @Override public void updateItem(String item, boolean empty) { super.updateItem(item, empty); if (!empty && item != null) { setContextMenu(contextMenu); } setText(item == null ? null : item); setGraphic(null); } private void deleteItems() { for (String host : getListView().getSelectionModel().getSelectedItems()) { Host h = hostDao.getHostByName(host); hostDao.delete(h); } getListView().getItems().setAll(hostDao.getHostNames()); hostField.getItems().setAll(hostDao.getHostNames()); } }