2
0

PolycodeProjectBrowser.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include "PolycodeProjectBrowser.h"
  2. PolycodeProjectBrowser::PolycodeProjectBrowser() : ScreenEntity() {
  3. treeContainer = new UITreeContainer("boxIcon.png", L"Projects", 200, 555);
  4. treeContainer->getRootNode()->toggleCollapsed();
  5. treeContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT);
  6. BrowserUserData *data = new BrowserUserData();
  7. data->type = 0;
  8. treeContainer->getRootNode()->setUserData((void*) data) ;
  9. addChild(treeContainer);
  10. treeContainer->setPosition(0,45);
  11. selectedData = NULL;
  12. }
  13. PolycodeProjectBrowser::~PolycodeProjectBrowser() {
  14. }
  15. void PolycodeProjectBrowser::addProject(PolycodeProject *project) {
  16. UITree *projectTree = treeContainer->getRootNode()->addTreeChild("projectIcon.png", project->getProjectName(), (void*) project);
  17. projectTree->toggleCollapsed();
  18. BrowserUserData *data = new BrowserUserData();
  19. data->type = 0;
  20. projectTree->setUserData((void*) data) ;
  21. parseFolderIntoNode(projectTree, project->getRootFolder());
  22. }
  23. void PolycodeProjectBrowser::handleEvent(Event *event) {
  24. if(event->getDispatcher() == treeContainer->getRootNode()) {
  25. if(event->getEventCode() == UITreeEvent::SELECTED_EVENT){
  26. BrowserUserData *data = (BrowserUserData *)treeContainer->getRootNode()->getSelectedNode()->getUserData();
  27. if(data->type != 0) {
  28. selectedData = data;
  29. dispatchEvent(new Event(), Event::CHANGE_EVENT);
  30. }
  31. }
  32. }
  33. ScreenEntity::handleEvent(event);
  34. }
  35. void PolycodeProjectBrowser::parseFolderIntoNode(UITree *node, String spath) {
  36. printf("Parsing %s\n", spath.c_str());
  37. vector<OSFileEntry> files = OSBasics::parseFolder(spath, false);
  38. for(int i=0; i < files.size(); i++) {
  39. OSFileEntry entry = files[i];
  40. if(entry.type == OSFileEntry::TYPE_FOLDER) {
  41. BrowserUserData *data = new BrowserUserData();
  42. data->fileEntry = entry;
  43. UITree *newChild = node->addTreeChild("folder.png", entry.name, (void*) data);
  44. data->type = 2;
  45. parseFolderIntoNode(newChild, entry.fullPath);
  46. } else {
  47. BrowserUserData *data = new BrowserUserData();
  48. data->fileEntry = entry;
  49. data->type = 1;
  50. UITree *newChild = node->addTreeChild("file.png", entry.name, (void*) data);
  51. }
  52. }
  53. }
  54. void PolycodeProjectBrowser::Resize(int newWidth, int newHeight) {
  55. treeContainer->Resize(newWidth, newHeight);
  56. }