allow tunnels table cells to be copied to clipboard with Ctrl/Cmd-C

pull/35/head
knaccc 4 years ago
parent 6771e68a02
commit 52fc1b14dd

@ -18,6 +18,7 @@ import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.*;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
@ -96,6 +97,9 @@ public class Controller {
@FXML private void initialize() {
// set up copy-cell-to-clipboard functionality
tunnelsTableView.setOnKeyPressed(new TableKeyEventHandler());
DirectoryChooser directoryChooser = new DirectoryChooser();
typeCol.setCellValueFactory(new PropertyValueFactory<Tunnel,String>("type"));
@ -391,5 +395,30 @@ public class Controller {
return getRouterWrapper().getTunnelControl().getEepSiteTunnel();
}
public static class TableKeyEventHandler implements EventHandler<KeyEvent> {
KeyCodeCombination ctrlC = new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_ANY);
KeyCodeCombination cmdD = new KeyCodeCombination(KeyCode.C, KeyCombination.META_ANY);
public void handle(final KeyEvent keyEvent) {
if (ctrlC.match(keyEvent) || cmdD.match(keyEvent)) {
if (keyEvent.getSource() instanceof TableView) {
copySelectionToClipboard((TableView<?>) keyEvent.getSource());
keyEvent.consume();
}
}
}
}
public static void copySelectionToClipboard(TableView<?> table) {
var cellPositions = table.getSelectionModel().getSelectedCells();
if(cellPositions.size()>0) {
var cellPosition = cellPositions.get(0);
var cell = table.getColumns().get(cellPosition.getColumn()).getCellData(cellPosition.getRow());
if(cell!=null) {
var clipboardContent = new ClipboardContent();
clipboardContent.putString(cell.toString());
Clipboard.getSystemClipboard().setContent(clipboardContent);
}
}
}
}

Loading…
Cancel
Save