package xapi.gwt.time; import xapi.annotation.inject.SingletonOverride; import xapi.inject.impl.SingletonProvider; import xapi.platform.GwtPlatform; import xapi.time.impl.AbstractTimeService; import xapi.time.service.TimeService; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.i18n.shared.DateTimeFormat; import com.google.gwt.i18n.shared.DateTimeFormat.PredefinedFormat; import java.util.Date; @GwtPlatform @SingletonOverride(implFor=TimeService.class, priority=Integer.MIN_VALUE+3) public class TimeServiceGwt extends AbstractTimeService { private static final long serialVersionUID = -7873490109878690176L; // TODO move this dependency out of X_Core so we don't have to depend on GWT I18N by default private final SingletonProvider<DateTimeFormat> formatter = new SingletonProvider<DateTimeFormat>() { @Override protected DateTimeFormat initialValue() { return DateTimeFormat.getFormat(PredefinedFormat.ISO_8601); }; }; @Override public String timestamp() { return formatter.get().format(new Date()); } @Override public void runLater(final Runnable runnable) { Scheduler.get().scheduleDeferred(new ScheduledCommand() { @Override public void execute() { runnable.run(); } }); } }