diff -r c1372e71e4c8 apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/Person.java --- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/Person.java Fri Dec 06 22:02:52 2013 -0800 +++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/Person.java Sun Dec 08 23:38:19 2013 -0800 @@ -35,28 +35,19 @@ import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; public class Person { - private BooleanProperty invited; - private StringProperty firstName; - private StringProperty lastName; - private StringProperty email; + private final BooleanProperty invited; + private final StringProperty firstName; + private final StringProperty lastName; + private final StringProperty email; public Person(boolean invited, String fName, String lName, String email) { this.invited = new SimpleBooleanProperty(invited); this.firstName = new SimpleStringProperty(fName); this.lastName = new SimpleStringProperty(lName); this.email = new SimpleStringProperty(email); - this.invited = new SimpleBooleanProperty(invited); - - this.invited.addListener(new ChangeListener() { - public void changed(ObservableValue ov, Boolean t, Boolean t1) { - System.out.println(firstNameProperty().get() + " invited: " + t1); - } - }); } public BooleanProperty invitedProperty() { return invited; } diff -r c1372e71e4c8 apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/TableCellFactoryApp.java --- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/TableCellFactoryApp.java Fri Dec 06 22:02:52 2013 -0800 +++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/TableCellFactoryApp.java Sun Dec 08 23:38:19 2013 -0800 @@ -34,12 +34,9 @@ import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; -import javafx.event.EventHandler; import javafx.scene.Parent; import javafx.scene.Scene; -import javafx.scene.control.TableCell; import javafx.scene.control.TableColumn; -import javafx.scene.control.TableColumn.CellEditEvent; import javafx.scene.control.TableView; import javafx.scene.control.cell.CheckBoxTableCell; import javafx.scene.control.cell.PropertyValueFactory; @@ -48,17 +45,24 @@ import javafx.util.StringConverter; /** - * A simple table that uses cell factories to add a checkbox to a table column - * and to add textfields to table columns. The latter enables editing of first - * name, last name, and email. + * A simple table that uses cell factories to enable editing of boolean and + * String values in the table. * * @sampleName TableCellFactory * @preview preview.png * @see javafx.scene.control.TableCell * @see javafx.scene.control.TableColumn - * @see javafx.scene.control.TablePosition - * @see javafx.scene.control.TableRow * @see javafx.scene.control.TableView + * @see javafx.scene.control.cell.CheckBoxTableCell + * @see javafx.scene.control.cell.PropertyValueFactory + * @see javafx.scene.control.cell.TextFieldTableCell + * @see javafx.util.StringConverter + * @see javafx.collections.FXCollections + * @see javafx.collections.ObservableList + * @see javafx.beans.property.BooleanProperty + * @see javafx.beans.property.SimpleBooleanProperty + * @see javafx.beans.property.SimpleStringProperty + * @see javafx.beans.property.StringProperty * @embedded */ public class TableCellFactoryApp extends Application { @@ -81,34 +85,31 @@ return string; } }; - //"Invited" column + TableColumn invitedCol = new TableColumn<>(); invitedCol.setText("Invited"); invitedCol.setMinWidth(70); invitedCol.setCellValueFactory(new PropertyValueFactory("invited")); invitedCol.setCellFactory(CheckBoxTableCell.forTableColumn(invitedCol)); - //"First Name" column + TableColumn firstNameCol = new TableColumn(); firstNameCol.setText("First"); firstNameCol.setCellValueFactory(new PropertyValueFactory("firstName")); firstNameCol.setCellFactory(TextFieldTableCell.forTableColumn(sc)); - //"Last Name" column + TableColumn lastNameCol = new TableColumn(); lastNameCol.setText("Last"); lastNameCol.setCellValueFactory(new PropertyValueFactory("lastName")); lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn(sc)); - //"Email" column + TableColumn emailCol = new TableColumn(); emailCol.setText("Email"); emailCol.setMinWidth(200); emailCol.setCellValueFactory(new PropertyValueFactory("email")); emailCol.setCellFactory(TextFieldTableCell.forTableColumn(sc)); - //Set handler to update ObservableList properties. Applicable if cell is edited - updateObservableListProperties(emailCol, firstNameCol, lastNameCol); TableView tableView = new TableView(); tableView.setItems(data); - //Enabling editing tableView.setEditable(true); tableView.getColumns().addAll(invitedCol, firstNameCol, lastNameCol, emailCol); return tableView; @@ -127,32 +128,4 @@ public static void main(String[] args) { launch(args); } - - private void updateObservableListProperties(TableColumn emailCol, TableColumn firstNameCol, - TableColumn lastNameCol) { - //Modifying the email property in the ObservableList - emailCol.setOnEditCommit(new EventHandler>() { - @Override - public void handle(CellEditEvent t) { - ((Person) t.getTableView().getItems().get( - t.getTablePosition().getRow())).setEmail(t.getNewValue()); - } - }); - //Modifying the firstName property in the ObservableList - firstNameCol.setOnEditCommit(new EventHandler>() { - @Override - public void handle(CellEditEvent t) { - ((Person) t.getTableView().getItems().get( - t.getTablePosition().getRow())).setFirstName(t.getNewValue()); - } - }); - //Modifying the lastName property in the ObservableList - lastNameCol.setOnEditCommit(new EventHandler>() { - @Override - public void handle(CellEditEvent t) { - ((Person) t.getTableView().getItems().get( - t.getTablePosition().getRow())).setLastName(t.getNewValue()); - } - }); - } }