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); } }