wakingrufus
02/25/2019, 6:52 PMwakingrufus
02/25/2019, 6:53 PMwakingrufus
02/25/2019, 6:59 PMselectionModel.cellSelectionEnabledProperty().value = true
selectionModel.selectionMode = SelectionMode.MULTIPLE
wakingrufus
02/25/2019, 6:59 PMamanda.hinchman-dominguez
02/25/2019, 8:36 PMwakingrufus
02/26/2019, 3:19 PMfun TableView<*>.enableCsvCopy() {
val item = MenuItem("Copy")
item.action { com.grubhub.ui.copyTable(this) }
val menu = ContextMenu()
menu.items.add(item)
contextMenu = menu
val keyCodeCopy = KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_ANY)
setOnKeyPressed { event ->
if (keyCodeCopy.match(event)) {
com.grubhub.ui.copyTable(this)
}
}
}
fun copyTable(table: TableView<*>) {
val posList = table.selectionModel.selectedCells
val columns = table.columns.joinToString(",") { it.text }
val csvText = posList.fold(TableFold(-1, columns)) { lastRow, pos ->
val cell = table.columns.get(pos.column).getCellData(pos.row)
val separator = if (pos.row == lastRow.row) "," else "\n"
val cellString = if (cell.toString().contains(",")) "\"${cell ?: ""}\"" else cell
TableFold(pos.row, "${lastRow.string}$separator$cellString")
}
val content = ClipboardContent()
content.putString(csvText.string)
Clipboard.getSystemClipboard().setContent(content)
}
class TableFold(val row: Int, val string: String)
amanda.hinchman-dominguez
02/26/2019, 4:02 PMamanda.hinchman-dominguez
02/26/2019, 4:03 PMcopyTable
functionamanda.hinchman-dominguez
02/26/2019, 4:04 PM