package me.rkfg.ns2gather.client;
import me.rkfg.ns2gather.dto.GatherState;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.HTML;
public class GatherStatusLabel extends HTML {
GatherState gatherState = GatherState.OPEN;
Long timeLeft;
Timer timer = new Timer() {
@Override
public void run() {
if (gatherState != GatherState.COMPLETED) {
updateState();
setText(getText() + " [" + timeLeft-- + " сек]");
if (timeLeft == 0) {
cancel();
updateState();
}
}
}
};
public GatherStatusLabel(ClickHandler clickHandler) {
updateState();
if (clickHandler != null) {
addClickHandler(clickHandler);
}
}
private void updateState() {
switch (gatherState) {
case OPEN:
setStyleName("gstatus gopen");
setText("СБОР");
break;
case CLOSED:
setStyleName("gstatus gclosed");
setText("СОБРАН");
break;
case COMPLETED:
setStyleName("gstatus gcompleted");
setHTML("ПРОВЕДЁН");
break;
case ONTIMER:
setStyleName("gstatus gopen");
setText("ОЖИДАНИЕ");
break;
case SIDEPICK:
setStyleName("gstatus gcompleted");
setHTML("ВЫБОР СТОРОН");
break;
case PLAYERS:
setStyleName("gstatus gcompleted");
setHTML("ВЫБОР ИГРОКОВ");
break;
default:
break;
}
}
public void setGatherState(GatherState gatherState) {
this.gatherState = gatherState;
updateState();
}
public GatherState getGatherState() {
return gatherState;
}
public void runTimer(Long startTime) {
this.timeLeft = startTime;
timer.scheduleRepeating(1000);
}
public void stopTimer() {
timer.cancel();
updateState();
}
public GatherState getState() {
return gatherState;
}
}