1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| private static class MyTextFieldTableCell<S, T> extends TextFieldTableCell<S, T> {
private final Function<Integer, Boolean> testRowEditable;
public MyTextFieldTableCell(StringConverter<T> converter, final Function<Integer, Boolean> testRowEditable) {
super(converter);
Objects.requireNonNull(testRowEditable);
this.testRowEditable = testRowEditable;
}
public static <S> Callback<TableColumn<S,String>, TableCell<S,String>> forTableColumn(final Function<Integer, Boolean> testRowEditable) {
return forTableColumn(new DefaultStringConverter(), testRowEditable);
}
public static <S,T> Callback<TableColumn<S,T>, TableCell<S,T>> forTableColumn(
final StringConverter<T> converter, final Function<Integer, Boolean> testRowEditable) {
return new Callback<TableColumn<S,T>, TableCell<S,T>>() {
@Override
public TableCell<S,T> call(TableColumn<S,T> list) {
return new MyTextFieldTableCell<S,T>(converter, testRowEditable);
}
};
}
@Override
public void updateIndex(int i) {
super.updateIndex(i);
final boolean isRowEditable = testRowEditable.apply(i);
editableProperty().set(isRowEditable);
}
} |
Partager