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