У меня есть небольшое задание и классы домена JobManager:Обновления таблица JFace когда модель вложенное поле изменилось
public class Job extends ModelObject {
private String name;
private String state;
public State getState() {return state;}
public void setState(final State state) {this.state = state;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
}
public class JobManager extends ModelObject {
private List<Job> jobs = new ArrayList<Job>();
public List<Job> getJobs() {
return jobs;
}
public void addJob(Job job) {
jobs.add(job);
firePropertyChange("jobs", null, null);
}
public void removeJob(Job job) {
jobs.remove(job);
firePropertyChange("jobs", null, null);
}
}
Затем я использую JFace привязку данных для обновления TableViewer.
... // TableViewer tableViewer;
... // JobManager jobManager;
IObservableList jobs = BeanProperties.list(JobManager.class, "jobs").observe(jobManager);
tableViewer.setContentProvider(new ObservableListContentProvider());
... // set label provider etc
tableViewer.setInput(jobs);
Это прекрасно работает. Когда я добавляю задание в диспетчер заданий - jobManager.add (job), новая строка появляется в виде таблицы. Когда я удаляю задание из менеджера заданий - jobManager.remove (job), соответствующая строка удаляется из представления таблицы.
Но также я хочу, чтобы вид таблицы обновления, когда состояние задания изменилось, например, с «state1» на «state2» - job.setState («state2»); Как я могу это сделать?