From 659d59df97be3c34491ff6108eacef5e11d62250 Mon Sep 17 00:00:00 2001 From: iMoHax Date: Sat, 8 Nov 2014 22:30:05 +0300 Subject: [PATCH] fix wrong change editing cell on lost focus --- .../view/support/cells/EditOfferCell.java | 5 ++++- .../view/support/cells/TextFieldCell.java | 18 +++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/client/src/main/java/ru/trader/view/support/cells/EditOfferCell.java b/client/src/main/java/ru/trader/view/support/cells/EditOfferCell.java index 6f9e7b8..1c50454 100644 --- a/client/src/main/java/ru/trader/view/support/cells/EditOfferCell.java +++ b/client/src/main/java/ru/trader/view/support/cells/EditOfferCell.java @@ -30,8 +30,11 @@ public class EditOfferCell extends TextFieldCell extends TableCell { public void updateItem(T item, boolean empty) { LOG.trace("Update edit"); super.updateItem(item, empty); - if (empty || getTableRow() == null) { + if (empty || item == null) { setText(null); setGraphic(null); } else { if (isEditing()) { - if (textField != null) { - textField.setText(getItemText()); - } - setText(null); - setGraphic(textField); + cancelEdit(); } else { outItem(); } @@ -77,6 +73,7 @@ public class TextFieldCell extends TableCell { @Override public void cancelEdit() { LOG.trace("Cancel edit"); + //lost focus if (!isCommit()) commit(false); if (isCommit()) { super.cancelEdit(); @@ -93,12 +90,15 @@ public class TextFieldCell extends TableCell { textField = new TextField(getItemText()); textField.prefWidthProperty().bind(getTableColumn().widthProperty()); textField.setPadding(Insets.EMPTY); + textField.setOnAction(event -> { + if (commit(true)) ViewUtils.editNext(getTableView()); + event.consume(); + }); textField.setOnKeyPressed(t -> { - if (t.getCode() == KeyCode.ENTER) { - if (commit(true)) ViewUtils.editNext(getTableView()); - } else if (t.getCode() == KeyCode.ESCAPE) { + if (t.getCode() == KeyCode.ESCAPE) { textField = null; cancelEdit(); + t.consume(); } });