1. Error MultichronicTree::CollapseSimulation(int pId, SimulationMarker* pSimulationMarker)
  2. {
  3. Error lError;
  4. //Get the Simulation and it's childrens then collapse
  5. for(int i = 0 ; i < mEnfants.GetCount() ; i++)
  6. {
  7. if(mEnfants[i]->LireNom() == "Simulation")
  8. {
  9. Simulation* lSimulation = dynamic_cast<Simulation*>(mEnfants[i]);
  10. if (lSimulation->GetId() == pId)
  11. {
  12. if(mEnfants[i]->LireNombreEnfants() != 0)
  13. {
  14. list<int> lSimulationIdList = lSimulation->GetChildSimulationIdList();
  15. if(lSimulationIdList.size() > 0)
  16. {
  17. list<int>::iterator lSimIter;
  18. for(lSimIter = lSimulationIdList.begin(); lSimIter != lSimulationIdList.end(); lSimIter++)
  19. {
  20. CollapseSimulation(*lSimIter, pSimulationMarker);
  21. Simulation* lTempSim = SearchSimulation(*lSimIter);
  22. lTempSim->ModifyMask(0);
  23. }
  24. }
  25. }
  26. lSimulation->Collapse();
  27. pSimulationMarker->mSimulationList.push_back(lSimulation->GetId());
  28. }
  29. }
  30. else if(mEnfants[i]->LireNom() == "SimulationMarker")
  31. {
  32. Simulation* lSimulation = SearchSimulation(pId);
  33. SimulationMarker* lSimulationMarker = dynamic_cast<SimulationMarker*>(mEnfants[i]);
  34. if(lSimulationMarker->GetId() != pSimulationMarker->GetId())
  35. {
  36. //EO: TEST
  37. if(lSimulationMarker->GetId() == lSimulation->GetId())
  38. {
  39. pSimulationMarker->mSimMarkerList.push_back(lSimulationMarker->GetId());
  40. list<int> lSimList = lSimulationMarker->mSimulationList;
  41. list<int>::iterator lSimIter;
  42. for(lSimIter = lSimList.begin(); lSimIter != lSimList.end(); lSimIter++)
  43. {
  44. pSimulationMarker->mSimulationList.remove(*lSimIter);
  45. }
  46. lSimulationMarker->Hide();
  47. if(lSimulation->mSlider)
  48. {
  49.  
  50. lSimulation->mSlider->SetPosition(lSimulation->mInitialPosition, false);
  51. }
  52. }
  53. }
  54. }
  55. else
  56. lError("Simulation not found, can't collapse the subtree");
  57. }
  58. return lError;
  59. }