sclass JNavigation extends JPanel { JList list; SingleComponentPanel content; new Map> contentMakers; S lastItem; *() { makeFakeSingleComponentPanel(this, jhsplit(list, content)); onChange(list, r { S item = getSelectedItem(list); if (eq(item, lastItem)) ret; lastItem = item; JComponent content = pcallF(contentMakers.get(item)); if (content == null) content = jcenteredimage(#1101244); scp.setComponent(content); } } void addPage(fS name, final F0 makeContent) { swing { contentMakers.put(name, makeContent); addListItem(list, name); } } }