package freenet.client.dynamics;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.RootPanel;
import freenet.client.tools.TimeUtil;
/** This class increments/decrements the time counters in the page. */
public class TimeIncrementer implements IDynamic {
@Override
public void start() {
// Starts a timer at a frequency of 1/sec
new Timer() {
@Override
public void run() {
// Cycle through all 'span' elements
NodeList<Element> list = RootPanel.getBodyElement().getElementsByTagName("span");
for (int i = 0; i < list.getLength(); i++) {
Element e = list.getItem(i);
String classAttr = e.getAttribute("class");
// Checks if the element's class indicates that it needs to be incremented
if (classAttr != null && (classAttr.compareTo("needsIncrement") == 0 || classAttr.compareTo("needsDecrement") == 0)) {
Element inputElement = e.getElementsByTagName("input").getItem(0);
// Reads the current time value from the hidden input
int current = Integer.parseInt(inputElement.getAttribute("value"));
if (classAttr.compareTo("needsIncrement") == 0) {
// Increments the current timer
current += 1000;
} else if (current > 1000) {
// Decrements only if it stays positive
current -= 1000;
}
// Writes back to the hidden input
inputElement.setAttribute("value", "" + current);
// Changes the shown value
e.getElementsByTagName("span").getItem(1).setInnerText(TimeUtil.formatTime(current, 2));
}
}
}
}.scheduleRepeating(1000);
}
}