org.activiti.explorer.servlet.ExplorerApplicationServlet.java Source code

Java tutorial

Introduction

Here is the source code for org.activiti.explorer.servlet.ExplorerApplicationServlet.java

Source

/* Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.activiti.explorer.servlet;

import java.io.BufferedWriter;
import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;

import org.activiti.explorer.ExplorerApp;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.vaadin.Application;
import com.vaadin.terminal.gwt.server.AbstractApplicationServlet;
import com.vaadin.ui.Window;

/**
 * Servlet providing Activiti and Spring integration with Vaadin
 * 
 * @author Patrick Oberg
 * @author Joram Barrez
 */
public class ExplorerApplicationServlet extends AbstractApplicationServlet {

    private static final long serialVersionUID = 1L;

    protected WebApplicationContext applicationContext;

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        super.init(servletConfig);
        applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletConfig.getServletContext());
    }

    @Override
    protected Class<? extends Application> getApplicationClass() throws ClassNotFoundException {
        return ExplorerApp.class;
    }

    @Override
    protected Application getNewApplication(HttpServletRequest request) {
        return (Application) applicationContext.getBean(ExplorerApp.class);
    }

    @Override
    protected void writeAjaxPageHtmlVaadinScripts(Window window, String themeName, Application application,
            BufferedWriter page, String appUrl, String themeUri, String appId, HttpServletRequest request)
            throws ServletException, IOException {
        super.writeAjaxPageHtmlVaadinScripts(window, themeName, application, page, appUrl, themeUri, appId,
                request);

        // Add static JS files
        String scrollJs = themeUri + "/js/vscrollarea.js";
        page.write("<script type=\"text/javascript\" src=\"" + scrollJs + "\" />");

        String browserDependentCss = "<script type=\"text/javascript\">//<![CDATA["
                + "var mobi = ['opera', 'iemobile', 'webos', 'android', 'blackberry', 'ipad', 'safari'];"
                + "var midp = ['blackberry', 'symbian'];" + "var ua = navigator.userAgent.toLowerCase();"
                + "if ((ua.indexOf('midp') != -1) || (ua.indexOf('mobi') != -1) || ((ua.indexOf('ppc') != -1) && (ua.indexOf('mac') == -1)) || (ua.indexOf('webos') != -1)) {"
                + "  document.write('<link rel=\"stylesheet\" href=\"" + themeUri
                + "/allmobile.css\" type=\"text/css\" media=\"all\"/>');" + "  if (ua.indexOf('midp') != -1) {"
                + "    for (var i = 0; i < midp.length; i++) {" + "      if (ua.indexOf(midp[i]) != -1) {"
                + "        document.write('<link rel=\"stylesheet\" href=\"" + themeUri
                + "' + midp[i] + '.css\" type=\"text/css\"/>');" + "      }" + "    }" + "  }" + "   else {"
                + "     if ((ua.indexOf('mobi') != -1) || (ua.indexOf('ppc') != -1) || (ua.indexOf('webos') != -1)) {"
                + "       for (var i = 0; i < mobi.length; i++) {" + "         if (ua.indexOf(mobi[i]) != -1) {"
                + "           if ((mobi[i].indexOf('blackberry') != -1) && (ua.indexOf('6.0') != -1)) {"
                + "             document.write('<link rel=\"stylesheet\" href=\"" + themeUri
                + "' + mobi[i] + '6.0.css\" type=\"text/css\"/>');" + "           }" + "           else {"
                + "             document.write('<link rel=\"stylesheet\" href=\"" + themeUri
                + "' + mobi[i] + '.css\" type=\"text/css\"/>');" + "           }" + "          break;"
                + "         }" + "       }" + "     }" + "   }" + " }"
                + "if ((navigator.userAgent.indexOf('iPhone') != -1) || (navigator.userAgent.indexOf('iPad') != -1)) {"
                + " document.write('<meta name=\"viewport\" content=\"width=device-width\" />');" + "}" + "  //]]>"
                + "</script>" + "<!--[if lt IE 7]><link rel=\"stylesheet\" type=\"text/css\" href=\"" + themeUri
                + "/lt7.css\" /><![endif]-->";

        page.write(browserDependentCss);
    }
}