package com.javafun.timetracking.ui; import javax.servlet.http.HttpSession; import org.eclipse.rwt.RWT; import org.eclipse.rwt.internal.widgets.JSExecutor; import org.eclipse.rwt.lifecycle.PhaseEvent; import org.eclipse.rwt.lifecycle.PhaseId; import org.eclipse.rwt.lifecycle.PhaseListener; import org.eclipse.swt.widgets.Display; public class UiUtils { public static void shutDownApp(final Display display, final HttpSession httpSession) { httpSession.removeAttribute("user"); RWT.getLifeCycle().addPhaseListener(new PhaseListener() { private static final long serialVersionUID = 1L; @SuppressWarnings("restriction") public void afterPhase(final PhaseEvent event) { if (Display.getCurrent() == null || display == Display.getCurrent()) { String jscode = "self.close();"; JSExecutor.executeJS(jscode); RWT.getLifeCycle().removePhaseListener(this); } } public PhaseId getPhaseId() { return PhaseId.ANY; } public void beforePhase(final PhaseEvent event) { }; }); } }