// swt/Menus.java // ©2016 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://mindviewinc.com/Books/OnJava/ for more book information. // Fun with menus. import swt.util.*; import org.eclipse.swt.*; import org.eclipse.swt.widgets.*; import java.util.*; import java.io.IOException; import java.nio.file.*; import java.util.stream.*; public class Menus implements SWTApplication { private static Shell shell; @Override public void createContents(Composite parent) { shell = parent.getShell(); Menu bar = new Menu(shell, SWT.BAR); shell.setMenuBar(bar); Set words = null; try { words = Files.lines(Paths.get("Menus.java")) .flatMap(s -> Arrays.stream(s.split("\\W+"))) .filter(s -> !s.matches("[0-9]+")) // No numbers .map(String::trim) .collect(Collectors.toCollection(TreeSet::new)); } catch(IOException e) { throw new RuntimeException(e); } Iterator it = words.iterator(); MenuItem[] mItem = new MenuItem[7]; for(int i = 0; i < mItem.length; i++) { mItem[i] = new MenuItem(bar, SWT.CASCADE); mItem[i].setText(it.next()); Menu submenu = new Menu(shell, SWT.DROP_DOWN); mItem[i].setMenu(submenu); } int i = 0; while(it.hasNext()) { addItem(bar, it, mItem[i]); i = (i + 1) % mItem.length; } } static Listener listener = new Listener() { public void handleEvent(Event e) { System.out.println(e.toString()); } }; void addItem(Menu bar, Iterator it, MenuItem mItem) { MenuItem item = new MenuItem(mItem.getMenu(),SWT.PUSH); item.addListener(SWT.Selection, listener); item.setText(it.next()); } public static void main(String[] args) { SWTConsole.run(new Menus(), 600, 200); } }