package com.siemens.ct.osgi.vaadin.pm.treeview;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.siemens.ct.osgi.vaadin.pm.main.service.IViewContribution;
import com.siemens.ct.pm.model.IPerson;
import com.siemens.ct.pm.model.IPersonManager;
import com.vaadin.Application;
import com.vaadin.ui.Component;
import com.vaadin.ui.Tree;
import com.vaadin.ui.VerticalLayout;
public class TreeView implements IViewContribution {
protected Logger logger = LoggerFactory.getLogger(TreeView.class);
protected IPersonManager personManager;
private Component view;
private Tree tree;
@Override
public String getIcon() {
return "icons/folder.png";
}
@Override
public String getName() {
return "Tree View";
}
@Override
public Component getView(Application application) {
if (view == null) {
VerticalLayout verticalLayout = new VerticalLayout();
verticalLayout.setMargin(true);
tree = new Tree("Compamies and Employees");
verticalLayout.addComponent(tree);
synchronized (this) {
if (personManager != null) {
refreshTree();
}
}
view = verticalLayout;
}
return view;
}
public void removePersonManager(final IPersonManager personManager) {
logger.debug("removePersonManager");
if (this.personManager == personManager) {
this.personManager = null;
tree.removeAllItems();
}
}
public void setPersonManager(final IPersonManager personManager) {
logger.debug("setPersonManager");
synchronized (this) {
this.personManager = personManager;
if (tree != null) {
refreshTree();
}
}
}
void refreshTree() {
List<IPerson> persons = personManager.getPersons();
tree.removeAllItems();
for (IPerson person : persons) {
String company = person.getCompany();
String name = person.getFirstName() + " " + person.getLastName();
tree.addItem(company);
tree.addItem(name);
tree.setChildrenAllowed(name, false);
tree.setParent(name, company);
if (company.contains("Siemens")) {
tree.expandItem(company);
}
}
}
}