package org.aperteworkflow.util.vaadin; import com.vaadin.Application; import com.vaadin.terminal.gwt.server.ApplicationPortlet2; import com.vaadin.ui.Window; import pl.net.bluesoft.rnd.util.i18n.I18NSource; import pl.net.bluesoft.rnd.util.i18n.I18NSourceFactory; import javax.portlet.*; import java.io.BufferedWriter; import java.io.IOException; /** * User: POlszewski * Date: 2012-02-02 * Time: 14:33 */ public class ApplicationPortlet2WithLoadingMessage extends ApplicationPortlet2 { private Application application; @Override protected void writeAjaxPageHtmlVaadinScripts(RenderRequest request, RenderResponse response, BufferedWriter writer, Application application, String themeName) throws IOException, PortletException { response.createResourceURL().setParameter("img", "loader"); this.application = application; I18NSource i18NSource = I18NSourceFactory.createI18NSource(request.getLocale()); writer.write(String.format("<div name='%s'>%s</div>", getLoaderTagId(request.getWindowID(), getPortletConfig()), i18NSource.getMessage("loader.message"))); super.writeAjaxPageHtmlVaadinScripts(request, response, writer, application, themeName); } @Override protected void handleRequest(PortletRequest request, PortletResponse response) throws PortletException, IOException { super.handleRequest(request,response); if (application != null) { for(Window window: application.getWindows()) { window.executeJavaScript("hideLoadingMessage('"+getLoaderTagId(request.getWindowID(), getPortletConfig())+"');"); } } } protected Application getApplication() { return application; } private static String getLoaderTagId(String portletId, PortletConfig config) { return ("vaadinLoader_" + config.getPortletName() + "_" + config.getPortletContext().getPortletContextName() + "_" + portletId.replace("-","")) .replaceAll("[^\\w-]","_"); } }