package org.ovirt.engine.ui.userportal.client.timers; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Timer; import org.ovirt.engine.core.compat.EventArgs; import org.ovirt.engine.ui.uicommon.models.SearchableListModel; import org.ovirt.engine.core.compat.Event; import org.ovirt.engine.core.compat.IEventListener; import org.ovirt.engine.ui.userportal.client.components.UserPortalTimerFactory; public class SubTabRefreshTimer { private static Timer timer = UserPortalTimerFactory.factoryTimer("Sub Tab Refresh Timer", new Timer() { @Override public void run() { onTimerRun(); } }); private static SearchableListModel model; private static final int SUB_TAB_REFRESH_INTERVAL = 1000; private static void onTimerRun() { GWT.log("Sub tab refresh timer execution for the model: " + model.getClass().getName()); if (model == null) { cancelTimer(); return; } if (model.getSearchCommand().getIsExecutionAllowed()) { model.getSearchCommand().Execute(); } } private static void cancelTimer() { GWT.log("Sub tab refresh timer cancelled"); timer.cancel(); } private static void startTimer() { timer.scheduleRepeating(SUB_TAB_REFRESH_INTERVAL); } public static void initSubTabRefreshTimer(SearchableListModel searchableListModel) { model = searchableListModel; model.getEntityChangedEvent().addListener(listener); startTimer(); } private static IEventListener listener = new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { if (model != null) { model.getEntityChangedEvent().removeListener(listener); cancelTimer(); } } }; }