package net.sf.lab3f.gwt.counter.client;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
public class Main extends FlexTable{
private int length;
private int value;
private Image[] digits = new Image[10];
public Main (String label, int n, int v){
super();
for(int i = 0; i < 10; i++) digits[i] = new Image("img/" + i + ".gif");
length = n;
addStyleDependentName("counter");
setLabel(label);
setValue(v);
}
public int getValue(){return value;}
public void setValue(int v){
value = v;
String s = "" + v;
while(s.length() < length) s = "0" + s;
for(int i = 0; i < length; i++){
Image im = new Image("img/" + s.charAt(i) + ".gif");
setWidget(1, i, im);
}
}
private void setLabel(String label){
if(label == null)return;
Label l = new Label(label);
l.addStyleDependentName("counter");
getFlexCellFormatter().setColSpan(0, 0, length);
getCellFormatter().setHorizontalAlignment(0, 0, HasHorizontalAlignment.ALIGN_CENTER);
setWidget(0, 0, l);
}
private Timer timer = new Timer(){
public void run(){
if(value < 1){cancel();return;}
setValue(--value);
}
};
public void countDown(){timer.cancel();timer.scheduleRepeating(1000);}
public void stopCountDown(){timer.cancel();}
}