PreviewPaneUtilities.buildMenuTree(categories);
final ArrayList<CategoryTreeItem> menuList = new ArrayList<CategoryTreeItem>();
for (int i = 0; i < categoryTreeItems.length; i++)
{
final CategoryTreeItem item = categoryTreeItems[i];
final JMenu menu = menus.get(item.getCategory());
// now connect all menus ..
final CategoryTreeItem[] childs = item.getChilds();
Arrays.sort(childs);
for (int j = 0; j < childs.length; j++)
{
final CategoryTreeItem child = childs[j];
final JMenu childMenu = menus.get(child.getCategory());
if (childMenu != null)
{
menu.add(childMenu);
}
}
if (item.getParent() == null)
{
menuList.add(item);
}
}
Collections.sort(menuList);
final ArrayList<JMenu> retval = new ArrayList<JMenu>();
for (int i = 0; i < menuList.size(); i++)
{
final CategoryTreeItem item = menuList.get(i);
final JMenu menu = menus.get(item.getCategory());
if (item.getCategory().isUserDefined() || menu.getItemCount() > 0)
{
retval.add(menu);
}
}