60 lines
1.8 KiB
Java
60 lines
1.8 KiB
Java
// swt/Menus.java
|
|
// (c)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<String> 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<String> 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<String> 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);
|
|
}
|
|
}
|