Tengo un problema con el objeto Tree y BeanItemContainer alguien sabe de esto?
Supongamos el siguiente código, mi problema es que solo se me pinta el primer nivel del arbol pero no se pintan los subniveles.
Código:
private Tree strTree;
public Component pintarArbolProcesos(){
VerticalLayout vlArbolProcesos = new VerticalLayout();
vlArbolProcesos.setSpacing(true);
strTree = new Tree();
strTree.setItemCaptionPropertyId(ProcesoData.PROP_NOMBRE_PROCESO);
List<ProcesoData> lstProcesos = new ArrayList<>();
for(int i=0; i<4; i++){
ProcesoData proceso = new ProcesoData();
proceso.setIdProceso("ID_" + i);
proceso.setNoProceso("Proceso_" + i);
proceso.setSubProcesos(addSubprocesosHC(proceso, i, 0));
lstProcesos.add(proceso);
}
// rellenarTree(lstProcesos);
// rellenarTreeObjetos(lstProcesos);
BeanItemContainer<ProcesoData> bicArbol = new BeanItemContainer<>(ProcesoData.class);
bicArbol.addAll(lstProcesos);
strTree.setContainerDataSource(bicArbol);
strTree.setImmediate(true);
strTree.setItemCaptionMode(ItemCaptionMode.PROPERTY);
strTree.setItemCaptionPropertyId(ProcesoData.PROP_NOMBRE_PROCESO);
vlArbolProcesos.addComponent(strTree);
return vlArbolProcesos;
}
public List<ProcesoData> addSubprocesosHC(ProcesoData procesoPadre, Integer nu, Integer nivel){
List<ProcesoData> lstSubProcesos = new ArrayList<>();
if((nivel + 1) != 3 && (nu == 0 || nu == 3)){
for(int i=0; i<10; i++){
ProcesoData proceso = new ProcesoData();
proceso.setIdProceso(procesoPadre.getIdProceso() + "." + i);
proceso.setNoProceso(procesoPadre.getNoProceso() + "." + i);
proceso.setSubProcesos(addSubprocesosHC(proceso, i, (nivel + 1)));
lstSubProcesos.add(proceso);
}
}
return lstSubProcesos;
}