0

I Have this Model :
1) Team :

public class Team {

private String nom ;
private Employee leader ;
private List<Employee> members = new ArrayList<Employee>();

private List<Person> persons = new ArrayList<Person>();
    public Team() {
}

public Team(String nom, Employee leader, List<Employee> members, List<Person> persons) {
    this.nom = nom;
    this.leader = leader;
    this.members = members;
    this.persons = persons;
}

public Team(String nom) {
    this.nom = nom;
}

public Employee addEmployee (Employee employee) {
    members.add(employee);
    return employee;
}

public Person addPerson (Person person) {
    persons.add(person);
    return person;
}
public List<Person> getPersons() {
    return persons;
}

public void setPersons(List<Person> persons) {
    this.persons = persons;
}

public String getNom() {
    return nom;
}

public void setNom(String nom) {
    this.nom = nom;
}

public Employee getLeader() {
    return leader;
}

public void setLeader(Employee leader) {
    this.leader = leader;
}

public List<Employee> getMembers() {
    return members;
}

public void setMembers(List<Employee> members) {
    this.members = members;
}

@Override
public String toString() {
    return "Team{" +
            "nom='" + nom + '\'' +
            ", leader=" + leader +
            ", members=" + members +
            '}';
}

public Team(int i){
    this.setNom("team"+i);
    this.setLeader(new Employee("MoMo" + i, "dd" + i));
    this.addEmployee(new Employee("mehdi" + i, "dd" + i));
    this.addEmployee(new Employee("albert" + i+1,"dd"+ i));
    this.addEmployee(new Employee("lolo" + i+2,"dd"+ i));

    this.addPerson(new Person("Person" + i));
    this.addPerson(new Person("Person" + i+1 ));
    this.addPerson(new Person("Person" + i+2 ));
}

2)

public class Employee {
    private String cin;
    private String nom;
    private String prenom;

3)

public class Person {

    private String address;
    private String name;

    public Person(){
    }

    public Person(String name) {
        this.name = name;
    }

    public Person(String name, String address) {
        this.name = name;
        this.address = address;
    }

    public String getAddress() {
        return address;
    }

    public String getName() {
        return name;
    }
}

I want to build a GWT TreeViewModel like the following :

Team => (i want to have my list of persons and my list of employees mixed)

Here is my TreeViewModel

public class EmployeeTreeModel implements TreeViewModel {

    private final List<Team> teamList;

    private final SingleSelectionModel<Employee> selectionModel
        = new SingleSelectionModel<Employee>();

    public EmployeeTreeModel() {
        teamList =  new ArrayList<Team>();
        {
            for (int i = 0; i < 5 ; i++) {
                teamList.add(new Team(i) );
            }
        }
    }

    @Override
    public <T> NodeInfo<?> getNodeInfo(T value) {
        if (value == null) {
            ListDataProvider<Team> dataProvider
                = new ListDataProvider<Team>(teamList);

            Cell<Team> cell = new AbstractCell<Team>() {
                @Override
                public void render(Context context, Team value, SafeHtmlBuilder sb) {
                    if (value != null) {
                        sb.appendHtmlConstant("    ");
                        sb.appendEscaped(value.getNom());
                    }
                }
            };
            return new DefaultNodeInfo<Team>(dataProvider, cell);
        }
        else if (value instanceof Team) {
            ListDataProvider<Employee> dataProvider
                    = new ListDataProvider<Employee>(
                    ((Team) value).getMembers());

            Cell<Employee> cell =
                    new AbstractCell<Employee>() {
                        @Override
                        public void render(Context context, Employee employee, SafeHtmlBuilder sb) {
                            if (employee != null) {
                                sb.appendHtmlConstant("    ");
                                sb.appendEscaped(employee.getNom());
                            }
                        }
                    };
            return new DefaultNodeInfo<Employee>(dataProvider, cell,selectionModel, null);
        }
        return null;
    }

    @Override
    public boolean isLeaf(Object o) {
        if (o instanceof Employee) {
            return true;
        }else if(o instanceof Person){
            return true;
        }
        else return false;
    }

}

in my actual code I can't mix Employees data and Person's Data because two different objects

Any way to do that ? A listDataProvider who brings two Objects maybe ?

Jose Ricardo Bustos M.
  • 8,016
  • 6
  • 40
  • 62
Ghaffe
  • 13
  • 2
  • In the GWT showcase http://samples.gwtproject.org/samples/Showcase/Showcase.html#!CwCellTree you have an example and the source code of a TreeViewModel with 3 different kinds of objects (Category, LetterCount, Contact) – Philippe Gonday Sep 16 '15 at 15:33
  • @philfr49 it doesn't respond to my question – Ghaffe Sep 17 '15 at 13:33

0 Answers0