package ru.testing.client.elements; import javafx.collections.ObservableList; import javafx.scene.control.*; import javafx.scene.input.Clipboard; import javafx.scene.input.ClipboardContent; import org.controlsfx.control.IndexedCheckModel; import ru.testing.client.common.FilesOperations; import ru.testing.client.common.objects.ReceivedMessage; import ru.testing.client.elements.tabs.WsMessageTab; /** * Class collected other menu items */ public class ContextMenuItems { /** * Menu item for clear all cell in list view * * @param list ObservableList * @return MenuItem */ public MenuItem clearListView(ObservableList list) { MenuItem deleteAll = new MenuItem("Delete all"); deleteAll.setOnAction(event -> list.clear()); return deleteAll; } /** * Menu item for clear all cell in check list view * * @param list ObservableList * @return MenuItem */ public MenuItem clearCheckListView(ObservableList list, IndexedCheckModel<String> checkModel) { MenuItem deleteAll = new MenuItem("Delete all"); deleteAll.setOnAction(event -> { checkModel.clearChecks(); list.clear(); }); return deleteAll; } /** * Menu item for delete selected item cell * * @param cell ListCell * @return MenuItem */ public MenuItem removeCell(ListCell cell) { MenuItem deleteCell = new MenuItem("Delete item"); deleteCell.setOnAction(event -> cell.getListView().getItems().remove(cell.getIndex())); return deleteCell; } /** * Menu item for deselect selected item cell * * @param list ListView<ReceivedMessage> * @return MenuItem */ public MenuItem deselectCell(ListView<ReceivedMessage> list) { MenuItem deselect = new MenuItem("Deselect item"); deselect.setOnAction(event -> list.getSelectionModel().clearSelection()); return deselect; } /** * Menu item 'copy' for copy string to clipboard * * @param item ReceivedMessage * @return MenuItem */ public MenuItem copyCellAll(ReceivedMessage item) { MenuItem copyItem = new MenuItem("Copy full message"); copyItem.setOnAction(event -> { final Clipboard clipboard = Clipboard.getSystemClipboard(); final ClipboardContent content = new ClipboardContent(); content.putString(item.toString()); clipboard.setContent(content); }); return copyItem; } /** * Menu item 'copy' for copy item message string to clipboard * * @param item ReceivedMessage * @return MenuItem */ public MenuItem copyCellMessage(ReceivedMessage item) { MenuItem copyItem = new MenuItem("Copy body message"); copyItem.setOnAction(event -> { final Clipboard clipboard = Clipboard.getSystemClipboard(); final ClipboardContent content = new ClipboardContent(); content.putString(item.getMessage()); clipboard.setContent(content); }); return copyItem; } /** * Menu item 'copy' for copy string to clipboard * * @param item ReceivedMessage * @return MenuItem */ public MenuItem copyCellTime(ReceivedMessage item) { MenuItem copyItem = new MenuItem("Copy time message"); copyItem.setOnAction(event -> { final Clipboard clipboard = Clipboard.getSystemClipboard(); final ClipboardContent content = new ClipboardContent(); content.putString(item.getFormattedTime()); clipboard.setContent(content); }); return copyItem; } /** * Save message from cell to file * * @param item ReceivedMessage * @return MenuItem */ public MenuItem saveMessageToFile(ReceivedMessage item) { MenuItem saveFileItem = new MenuItem("Save full message"); saveFileItem.setOnAction(event -> new FilesOperations().saveTextToFile(item.toString())); return saveFileItem; } /** * Save send selected messages to file * * @param item ReceivedMessage * @return MenuItem */ public MenuItem showMessage(final ReceivedMessage item) { MenuItem show = new MenuItem("Show body message"); show.setOnAction(event -> new WsMessageTab(item)); return show; } /** * Menu item 'copy' for copy cell string to clipboard * * @param cell ListCell<String> * @return MenuItem */ public MenuItem copySendMsg(ListCell<String> cell) { MenuItem copyItem = new MenuItem("Copy message"); copyItem.setOnAction(event -> { final Clipboard clipboard = Clipboard.getSystemClipboard(); final ClipboardContent content = new ClipboardContent(); content.putString(cell.getText()); clipboard.setContent(content); }); return copyItem; } }