| Free tutorials for Java, Eclipse and Web programming |
Create a new RCP Project "de.vogella.jface.tableviewer" using the "RCP application with a view" as a template. Create a package "de.vogella.jface.tableviewer.model" and the following class "Person".
package de.vogella.jface.tableviewer.model;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class Person {
private String firstName;
private String lastName;
private boolean married;
private String gender;
private Integer age;
private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(
this);
public Person() {
}
public Person(String firstName, String lastName, String gender,
boolean married) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.gender = gender;
this.married = married;
}
public void addPropertyChangeListener(String propertyName,
PropertyChangeListener listener) {
propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.removePropertyChangeListener(listener);
}
public String getFirstName() {
return firstName;
}
public String getGender() {
return gender;
}
public String getLastName() {
return lastName;
}
public boolean isMarried() {
return married;
}
public void setFirstName(String firstName) {
propertyChangeSupport.firePropertyChange("firstName", this.firstName,
this.firstName = firstName);
}
public void setGender(String gender) {
propertyChangeSupport.firePropertyChange("gender", this.gender,
this.gender = gender);
}
public void setLastName(String lastName) {
propertyChangeSupport.firePropertyChange("lastName", this.lastName,
this.lastName = lastName);
}
public void setMarried(boolean isMarried) {
propertyChangeSupport.firePropertyChange("married", this.married,
this.married = isMarried);
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
propertyChangeSupport.firePropertyChange("age", this.age,
this.age = age);
}
@Override
public String toString() {
return firstName + " " + lastName;
}
}
The class "Person" represents the data model for this example. It has also propertyChange support, which is not necessary for this example but is nice if you also use JFace Data Binding .
Create the class "ModelProvider" which is a in-memory representation of your data. This class is defined as a Singleton . Please see the link for an explanation why a enum is used to model the Singleton.
package de.vogella.jface.tableviewer.model;
import java.util.ArrayList;
import java.util.List;
public enum ModelProvider {
INSTANCE;
private List<Person> persons;
private ModelProvider() {
persons = new ArrayList<Person>();
// Image here some fancy database access to read the persons and to
// put them into the model
persons.add(new Person("Rainer", "Zufall", "male", true));
persons.add(new Person("Reiner", "Babbel", "male", true));
persons.add(new Person("Marie", "Dortmund", "female", false));
persons.add(new Person("Holger", "Adams", "male", true));
persons.add(new Person("Juliane", "Adams", "female", true));
}
public List<Person> getPersons() {
return persons;
}
}