package haven; import java.awt.event.KeyEvent; import java.util.Set; public class SelectorWnd extends Window { private Callback callback; public static abstract class Callback { public abstract void callback(); } public SelectorWnd(Widget parent, String cap) { super(new Coord(400, 300), Coord.z, parent, cap); justclose = true; } public void setData(final Set<String> list, final Set<String> selected, Callback callback) { this.callback = callback; int y = -30; for (final String item : list) { (new CheckBox(new Coord(0, y += 30), this, item) { public void changed(boolean val) { if (val) { selected.add(item); } else { selected.remove(item); } } }).a = selected.contains(item); } pack(); } @Override public void wdgmsg(Widget sender, String msg, Object... args) { callback.callback(); super.wdgmsg(sender, msg, args); } @Override public boolean type(char key, KeyEvent ev) { callback.callback(); return super.type(key, ev); } }