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