1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Introjucer: collapse/expand options in treeview.

This commit is contained in:
jules 2013-01-03 10:53:07 +00:00
parent 9f41dbce82
commit a3e2a4840c

View file

@ -81,14 +81,11 @@ void GroupTreeViewItem::checkFileStatus()
ProjectTreeViewBase* GroupTreeViewItem::createSubItem (const Project::Item& child)
{
if (child.isGroup())
return new GroupTreeViewItem (child);
if (child.isFile())
return new SourceFileTreeViewItem (child);
if (child.isGroup()) return new GroupTreeViewItem (child);
if (child.isFile()) return new SourceFileTreeViewItem (child);
jassertfalse
return 0;
return nullptr;
}
void GroupTreeViewItem::showDocument()
@ -101,6 +98,14 @@ void GroupTreeViewItem::showPopupMenu()
{
PopupMenu m;
addCreateFileMenuItems (m);
m.addSeparator();
if (isOpen())
m.addItem (4, "Collapse all Sub-groups");
else
m.addItem (5, "Expand all Sub-groups");
m.addSeparator();
m.addItem (3, "Sort Contents Alphabetically");
m.addSeparator();
@ -112,6 +117,15 @@ void GroupTreeViewItem::showPopupMenu()
launchPopupMenu (m);
}
static void openOrCloseAllSubGroups (TreeViewItem& item, bool shouldOpen)
{
item.setOpen (shouldOpen);
for (int i = item.getNumSubItems(); --i >= 0;)
if (TreeViewItem* sub = item.getSubItem(i))
openOrCloseAllSubGroups (*sub, shouldOpen);
}
void GroupTreeViewItem::handlePopupMenuResult (int resultCode)
{
switch (resultCode)
@ -119,6 +133,8 @@ void GroupTreeViewItem::handlePopupMenuResult (int resultCode)
case 1: triggerAsyncRename (item); break;
case 2: deleteAllSelectedItems(); break;
case 3: item.sortAlphabetically (false); break;
case 4: openOrCloseAllSubGroups (*this, false); break;
case 5: openOrCloseAllSubGroups (*this, true); break;
default: processCreateFileMenuItem (resultCode); break;
}
}