Automatic dropdown navigation menu (only adds folders one level deep):
from javax.swing import SwingUtilities, JMenu, JMenuBar, JMenuItem
from functools import partial
window = system.nav.getWindow("somewindow")
root = SwingUtilities.getRoot(window)
menu = root.getJMenuBar()
navmenu = JMenu("Navigation");
def handleSelect(event, target):
system.nav.swapTo(target)
trees = {}
leaves = []
for window in system.gui.getWindowNames():
winsplit = window.split('/')
if winsplit[0] != 'Nav':
menuItem = JMenuItem(winsplit[-1], actionPerformed=partial(handleSelect, target=window))
if len(winsplit) > 1:
if trees.get(winsplit[0]) is not None:
trees[winsplit[0]].add(menuItem)
else:
submenu = JMenu(winsplit[0])
submenu.add(menuItem)
trees[winsplit[0]] = submenu
else:
leaves.append(JMenuItem(window, actionPerformed=partial(handleSelect, target=window)))
for tree in trees:
navmenu.add(trees[tree])
for leaf in leaves:
navmenu.add(leaf)
menu.add(navmenu)