Package org.itsnat.impl.core.resp.shared.html

Source Code of org.itsnat.impl.core.resp.shared.html.ResponseDelegateHTMLLoadDocBlackBerryOldImpl

/*
  ItsNat Java Web Application Framework
  Copyright (C) 2007-2011 Jose Maria Arranz Santamaria, Spanish citizen

  This software is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as
  published by the Free Software Foundation; either version 3 of
  the License, or (at your option) any later version.
  This software is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  Lesser General Public License for more details. You should have received
  a copy of the GNU Lesser General Public License along with this program.
  If not, see <http://www.gnu.org/licenses/>.
*/

package org.itsnat.impl.core.resp.shared.html;


import org.itsnat.impl.core.servlet.ItsNatServletRequestImpl;
import org.itsnat.impl.core.clientdoc.ClientDocumentStfulImpl;
import org.itsnat.impl.core.resp.ResponseLoadStfulDocumentValid;

/**
*
* @author jmarranz
*/
public abstract class ResponseDelegateHTMLLoadDocBlackBerryOldImpl extends ResponseDelegateHTMLLoadDocW3CImpl
{
    public ResponseDelegateHTMLLoadDocBlackBerryOldImpl(ResponseLoadStfulDocumentValid response)
    {
        super(response);
    }

    public void dispatchRequestListeners()
    {
        super.dispatchRequestListeners();

        // Para el back/forward podr�amos aplicar el document.body.onclick ... reload
        // pero el evento unload NO se lanza en BlackBerry aunque lo diga la documentaci�n oficial.
    }

    public void processResponse()
    {
        ClientDocumentStfulImpl clientDoc = getClientDocumentStful();
        if (clientDoc.isScriptingEnabled())
            if (!checkClientJavaScriptEnabled())
                return;

        super.processResponse();
    }

    public boolean checkClientJavaScriptEnabled()
    {
        // Esto lo hacemos porque de f�brica el navegador de la BlackBerry tiene
        // el JavaScript (y los alert) desactivados.
        // A partir de JDE 5.0 (Storm 2 por ejemplo) ya biene activado por defecto.
        // Ciertamente cuando se pulsa un link con un href con javascript se pregunta
        // al usuario pero si es un bot�n no pues el listener fue asociado via addEventListener,
        // el usuario creer� que la web no funciona.

        ItsNatServletRequestImpl request = getResponseLoadDoc().getItsNatServletResponse().getItsNatServletRequestImpl();
        if (request.getHeader("accept").indexOf("application/x-javascript") == -1)
        {
            StringBuilder docMarkup = new StringBuilder();

            docMarkup.append("<html><head></head><body>");
            docMarkup.append("<h2>This page requires JavaScript and is disabled in your device</h2>");
            docMarkup.append("<p>To enable do the following:<p> ");
            docMarkup.append("<p><code>Options->Browser Configuration->Enable 'Support JavaScript' and 'Allow JavaScript popups'->Save Options</code></p>");
            docMarkup.append("<p>Then press <code>Refresh</code> to load again</p>");
            docMarkup.append("</body></html>");

            getResponseLoadDoc().sendMarkupToClient(docMarkup.toString());

            return false;
        }
        else return true;
    }

    @Override
    public String serializeDocument()
    {
        // Todo esto se debe a una tonter�a de la BlackBerry, los comentarios
        // SON FILTRADOS cuando se carga la p�gina en la BlackBerry Bold (JDE 4.6)
        // seguramente para ahorrar memoria. Sin embargo cuando son insertados
        // via DOM o via innerHTML NO son filtrados y se reflejan en el �rbol DOM.
        // La estrategia podr�a ser evitar enviar comentarios al cliente y/o
        // filtrarlos en el c�lculo de paths. Sin embargo como esto s�lo ocurre
        // en carga, hacemos el siguiente HACK: sustituimos los comentarios
        // por <style name="itsnat_fake_comm"></style> tal que luego
        // un script los sustituya por los comentarios originales.
        // He comprobado que los <style></style> es como si no existieran visualmente,
        // no hace falta display:none, la alternativa es <span> pero si se insertaran
        // dentro del <head> (caso de comentarios en el head) los pone debajo del <body>
        // distorsionando el c�lculo de paths, los <style> valen en <head> y en <body>,
        // y en aquellos lugares en donde no vale son filtrados (se hace en la normalizaci�n del documento)
        // Esta t�cnica es tolerante respecto al futuro si dejaran de filtrarse.

        ResponseDelegateHTMLLoadDocFixFilteredCommentsImpl filter = new ResponseDelegateHTMLLoadDocFixFilteredCommentsImpl(this);
        filter.preSerializeDocument();

        String docMarkup = super.serializeDocument();

        docMarkup = filter.postSerializeDocument(docMarkup);

        return docMarkup;
    }
}
TOP

Related Classes of org.itsnat.impl.core.resp.shared.html.ResponseDelegateHTMLLoadDocBlackBerryOldImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.