package org.traccar.web.client.controller; import java.util.List; import org.traccar.web.client.Application; import org.traccar.web.client.view.MapView; import org.traccar.web.shared.model.Device; import org.traccar.web.shared.model.Position; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; import com.sencha.gxt.widget.core.client.ContentPanel; public class MapController implements ContentController { private static final int UPDATE_INTERVAL = 10000; private MapView mapView; public MapController() { mapView = new MapView(); } @Override public ContentPanel getView() { return mapView.getView(); } private Timer updateTimer; @Override public void run() { updateTimer = new Timer() { @Override public void run() { update(); } }; update(); } public void update() { updateTimer.cancel(); Application.getDataService().getLatestPositions(new AsyncCallback>() { @Override public void onSuccess(List result) { mapView.showPositions(result); updateTimer.schedule(UPDATE_INTERVAL); } @Override public void onFailure(Throwable caught) { updateTimer.schedule(UPDATE_INTERVAL); } }); } public void select(Device device) { mapView.select(device, true); } }