import javafx.event.*; import javafx.scene.control.*; import javafx.scene.input.*; import static javafx.scene.input.KeyCode.*; public class SampleTextInputControlMenu extends ContextMenu { private TextInputControl textInputControl; private static final String os = System.getProperty("os.name"); public SampleTextInputControlMenu(TextInputControl textInputControl) { this.textInputControl = textInputControl; if (os.startsWith("Mac")) { getItems().add(new ContextMenuItem("Undo", Z, false, false, true)); getItems().add(new ContextMenuItem("Redo", Z, true, false, true)); getItems().add(new ContextMenuItem("Cut", X, false, false, true)); getItems().add(new ContextMenuItem("Copy", C, false, false, true)); getItems().add(new ContextMenuItem("Paste", V, false, false, true)); getItems().add(new ContextMenuItem("Delete", DELETE, false, false, false)); getItems().add(new SeparatorMenuItem()); getItems().add(new ContextMenuItem("Select All", A, false, false, true)); } else if (os.startsWith("Windows")) { getItems().add(new ContextMenuItem("Undo", Z, false, true, false)); getItems().add(new ContextMenuItem("Redo", Y, false, true, false)); getItems().add(new ContextMenuItem("Cut", X, false, true, false)); getItems().add(new ContextMenuItem("Copy", C, false, true, false)); getItems().add(new ContextMenuItem("Paste", V, false, true, false)); getItems().add(new ContextMenuItem("Delete", DELETE, false, false, false)); getItems().add(new SeparatorMenuItem()); getItems().add(new ContextMenuItem("Select All", A, false, true, false)); } else { // Assume Linux getItems().add(new ContextMenuItem("Undo", Z, false, true, false)); getItems().add(new ContextMenuItem("Redo", Z, true, true, false)); getItems().add(new ContextMenuItem("Cut", X, false, true, false)); getItems().add(new ContextMenuItem("Copy", C, false, true, false)); getItems().add(new ContextMenuItem("Paste", V, false, true, false)); getItems().add(new ContextMenuItem("Delete", DELETE, false, false, false)); getItems().add(new SeparatorMenuItem()); getItems().add(new ContextMenuItem("Select All", A, false, true, false)); } } class ContextMenuItem extends MenuItem { ContextMenuItem(final String text, KeyCode keyCode, boolean shiftDown, boolean controlDown, boolean metaDown) { super(text); setOnAction(new EventHandler() { @Override public void handle(ActionEvent e) { textInputControl.fireEvent(new KeyEvent(KeyEvent.KEY_PRESSED, "\0", "", keyCode, shiftDown, controlDown, false, metaDown)); // The following events are not used by TextInputControlBindings // in 8.0, but are included here for completeness. textInputControl.fireEvent(new KeyEvent(KeyEvent.KEY_TYPED, keyCode.impl_getChar(), "", UNDEFINED, shiftDown, controlDown, false, metaDown)); textInputControl.fireEvent(new KeyEvent(KeyEvent.KEY_RELEASED, "\0", "", UNDEFINED, shiftDown, controlDown, false, metaDown)); } }); } } }