package haven; import ender.timer.Callback; import ender.timer.Timer; import ender.timer.TimerController; public class TimerWdg extends Widget { static Tex bg = Resource.loadtex("gfx/hud/bosq"); private Timer timer; public Label time, name; private Button start, stop, delete; public TimerWdg(Coord c, Widget parent, Timer timer) { super(c, bg.sz(), parent); this.timer = timer; timer.updcallback = new Callback() { @Override public void run(Timer timer) { synchronized (time) { time.settext(timer.toString()); updbtns(); } } }; name = new Label(new Coord(5, 5), this, timer.getName()); time = new Label(new Coord(5, 25), this, timer.toString()); start = new Button(new Coord(90, 2), 50, this, "start"); stop = new Button(new Coord(90, 2), 50, this, "stop"); delete = new Button(new Coord(90, 21), 50, this, "delete"); updbtns(); } private void updbtns() { start.visible = !timer.isWorking(); stop.visible = timer.isWorking(); } @Override public void destroy() { unlink(); if (parent instanceof TimerPanel) { ((TimerPanel) parent).pack(); } timer.updcallback = null; timer = null; super.destroy(); } @Override public void draw(GOut g) { g.image(bg, Coord.z); super.draw(g); } @Override public void wdgmsg(Widget sender, String msg, Object... args) { if (sender == start) { timer.start(); updbtns(); } else if (sender == stop) { timer.stop(); updbtns(); } else if (sender == delete) { timer.destroy(); TimerController.getInstance().save(); ui.destroy(this); } else { super.wdgmsg(sender, msg, args); } } }