package haven;
import ender.timer.Timer;
import ender.timer.TimerController;
public class TimerPanel extends Window {
private static TimerPanel instance;
private Button btnnew;
public static void toggle(){
if(instance == null){
instance = new TimerPanel(UI.instance.root);
} else {
UI.instance.destroy(instance);
}
}
public TimerPanel(Widget parent){
super(new Coord(250, 100), Coord.z, parent, "Timers");
justclose = true;
btnnew = new Button(Coord.z, 100, this, "Add timer");
synchronized (TimerController.getInstance().timers){
for(Timer timer : TimerController.getInstance().timers){
new TimerWdg(Coord.z, this, timer);
}
}
pack();
}
@Override
public void pack() {
int n, i=0, h = 0;
synchronized (TimerController.getInstance().timers){
n = TimerController.getInstance().timers.size();
}
n = (int) Math.ceil(Math.sqrt((double)n/3));
for(Widget wdg = child; wdg != null; wdg = wdg.next) {
if(!(wdg instanceof TimerWdg))
continue;
wdg.c = new Coord((i%n)*wdg.sz.x, ((int)(i/n))*wdg.sz.y);
h = wdg.c.y + wdg.sz.y;
i++;
}
btnnew.c = new Coord(0,h);
super.pack();
}
@Override
public void wdgmsg(Widget sender, String msg, Object... args) {
if(sender == btnnew){
new TimerAddWdg(c, ui.root, this);
} else {
super.wdgmsg(sender, msg, args);
}
}
@Override
public void destroy() {
instance = null;
super.destroy();
}
class TimerAddWdg extends Window{
private TextEntry name, hours, minutes, seconds;
private Button btnadd;
private TimerPanel panel;
public TimerAddWdg(Coord c, Widget parent, TimerPanel panel) {
super(c, Coord.z, parent, "Add timer");
justclose = true;
this.panel = panel;
name = new TextEntry(Coord.z, new Coord(150,18), this, "timer");
new Label(new Coord(0, 25),this,"hours");
new Label(new Coord(50, 25),this,"min");
new Label(new Coord(100, 25),this,"sec");
hours = new TextEntry(new Coord(0, 40), new Coord(45,18), this, "0");
minutes = new TextEntry(new Coord(50, 40), new Coord(45,18), this, "00");
seconds = new TextEntry(new Coord(100, 40), new Coord(45,18), this, "00");
btnadd = new Button(new Coord(0, 60), 100, this, "Add");
pack();
}
@Override
public void wdgmsg(Widget sender, String msg, Object... args) {
if(sender == btnadd){
try{
long time = 0;
time += Integer.parseInt(seconds.text);
time += Integer.parseInt(minutes.text)*60;
time += Integer.parseInt(hours.text)*3600;
Timer timer = new Timer(time, name.text);
TimerController.getInstance().save();
new TimerWdg(Coord.z, panel, timer);
panel.pack();
ui.destroy(this);
} catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
} else {
super.wdgmsg(sender, msg, args);
}
}
@Override
public void destroy() {
panel = null;
super.destroy();
}
}
}