void PolycodeProjectBrowser::removeProject(PolycodeProject *project) { UITree *projectTree = treeContainer->getRootNode(); for(int i=0; i < projectTree->getNumTreeChildren(); i++) { UITree *projectChild = projectTree->getTreeChild(i); BrowserUserData *userData = (BrowserUserData*)projectChild->getUserData(); if(userData->parentProject == project) { projectTree->removeTreeChild(projectChild); return; } } }
void PolycodeProjectBrowser::refreshProject(PolycodeProject *project) { UITree *projectTree = treeContainer->getRootNode(); for(int i=0; i < projectTree->getNumTreeChildren(); i++) { UITree *projectChild = projectTree->getTreeChild(i); BrowserUserData *userData = (BrowserUserData*)projectChild->getUserData(); if(userData->parentProject == project) { parseFolderIntoNode(projectChild, project->getRootFolder(), project); return; } } }
void UITreeContainer::onKeyDown(PolyKEY key, wchar_t charCode) { if (hasFocus) { // KEYBOARD NAV STUFF // TODO: add ability to jump to prev/next sibling via holding down some button // if (keyNavigable) { enum { NONE, UP, DOWN } scrollDir = NONE; UITree *currentSelection = getRootNode()->getSelectedNode(); if (!currentSelection) return; UITree *parent = currentSelection->getParent(); // - select parent if currently selected node is first in the tree // - else, select the last opened node in a sibling above if (key == KEY_UP) { if (parent) { for (int i=0; i < parent->getNumTreeChildren(); i++) { if (parent->getTreeChild(i) == currentSelection) { if (i == 0) parent->setSelected(true); else findLastOpenNode((parent->getTreeChild(i-1)))->setSelected(true); scrollDir = UP; break; } } } } // - select first child of currently selected if expanded and has children // - or select next sibling // - else, select the next sibling of some ancestor node if (key == KEY_DOWN) { if (currentSelection == getRootNode()) parent = getRootNode(); if (currentSelection->hasTreeChildren() && !currentSelection->isCollapsed()) { currentSelection->getTreeChild(0)->setSelected(true); scrollDir = DOWN; } else { for (int i=0; i < parent->getNumTreeChildren(); i++) { if (parent->getTreeChild(i) == currentSelection) { if (i == parent->getNumTreeChildren()-1) { UITree *psib = findNextParentSibling(parent); if (psib) psib->setSelected(true); } else { parent->getTreeChild(i+1)->setSelected(true); } scrollDir = DOWN; break; } } } } if (key == KEY_LEFT) { if (currentSelection->hasTreeChildren() && !currentSelection->isCollapsed()) currentSelection->toggleCollapsed(); else if (parent) { parent->setSelected(true); scrollDir = UP; } } if (key == KEY_RIGHT) { if (currentSelection->hasTreeChildren()) { if (currentSelection->isCollapsed()) currentSelection->toggleCollapsed(); } } if (scrollDir != NONE) scrollToNode(getRootNode()->getSelectedNode(), (scrollDir == UP) ? true : false); } // // END KEYBOARD NAV STUFF } }