I want to get a property from a model in my TableCell, so I can maipulate the cell depending on that property lets se the following example:
I have a model like:
public class Model {
private CustomProperty<Integer> appleCount;
private CustomProperty<Integer> peachCount;
public Model(Integer appleCount, Integer peachCount) {
this.appleCount = new CustomIntegerProperty(appleCount);
this.peachCount = new CustomIntegerProperty(peachCount);
}
public CustomProperty<Integer> appleCountProperty() {
return appleCount;
}
public CustomProperty<Integer> peachCountProperty() {
return peachCount;
}
}
This model is just a mock of that I have, and I have a few models which have two or more CustomProperty<Integer>
Then I have a few tables that has this Model or a similar class as model of the TableView. I have a custom TableCell with overriden updateItem and there I want to set the cell's text depending on the properties that CustomProperty has for example initialValue, oldValue, etc.Fo example if the initialValue is 0 then set the text empty instead of the 0 that has the cell by default. I have a partial solution for it: creating an interface HasCustomProperty then the Model would implement it, but then there are a few problems:
- I need to add two CustomProperties or a list of them to the interface
- I need to ask somehow in the cell: Are you the appleCount? or Are you the peach cell?
It is sure that in one cell there is only one property, the apple or the peach, so theoretically I should not care about in the cell if I know both of them are CustomIntegerProperties so I know they have initialValue or oldValue so I can set the cell's text depending on it.
I can only get the item, which is a type of Integer, so I don't have the properties of it or is there any way to get the property itself?
A sollution could be to override in every column's cellFactory the updateItem, and there I know for instance this is the appleColumn so get the information from the appleCountProperty, and so on, but this causes a lot of duplicate code if I have to do it in 5-6 places. So I thought I make a custom TableCell and there I manage the text, then I just set for every column that cell for cellFactory().
Do you have any Idea how can I do it simple without duplicate code?