Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ch.crisi.timetracker.table.view;
- import ch.crisi.timetracker.table.data.TaskWrapper;
- import javafx.application.Platform;
- import javafx.beans.value.ChangeListener;
- import javafx.beans.value.ObservableValue;
- import javafx.event.EventHandler;
- import javafx.scene.control.TableCell;
- import javafx.scene.control.TextField;
- import javafx.scene.input.InputMethodRequests;
- import javafx.scene.input.KeyCode;
- import javafx.scene.input.KeyEvent;
- import javafx.scene.text.TextAlignment;
- public class TaskNameTableCell extends TableCell<TaskWrapper, String> {
- public TaskNameTableCell() {
- setTextAlignment(TextAlignment.RIGHT);
- }
- private TextField textField;
- @Override
- public void startEdit() {
- if (!isEmpty()) {
- super.startEdit();
- createTextField();
- setText(null);
- setGraphic(textField);
- Platform.runLater(new Runnable() {
- @Override
- public void run() {
- textField.requestFocus();
- textField.end();
- }
- });
- }
- }
- @Override
- public void cancelEdit() {
- super.cancelEdit();
- setText((String) getItem());
- setGraphic(null);
- }
- @Override
- public void updateItem(String item, boolean empty) {
- super.updateItem(item, empty);
- if (empty) {
- setText(null);
- setGraphic(null);
- } else {
- if (isEditing()) {
- if (textField != null) {
- textField.setText(getString());
- }
- setText(null);
- setGraphic(textField);
- } else {
- setText(getString());
- setGraphic(null);
- }
- }
- }
- private void createTextField() {
- textField = new TextField(getString());
- textField.setMinWidth(this.getWidth() - this.getGraphicTextGap() * 2);
- textField.focusedProperty().addListener(new ChangeListener<Boolean>() {
- @Override
- public void changed(ObservableValue<? extends Boolean> arg0,
- Boolean arg1, Boolean arg2) {
- if (!arg2) {
- commitEdit(textField.getText());
- }
- }
- });
- textField.setOnKeyPressed(new EventHandler<KeyEvent>() {
- @Override
- public void handle(KeyEvent keyEvent) {
- if (keyEvent.getCode() == KeyCode.ENTER) {
- commitEdit(textField.getText());
- }
- }
- });
- }
- private String getString() {
- return getItem() == null ? "" : getItem().toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement