Package org.itsnat.feashow.features.core.degraded

Source Code of org.itsnat.feashow.features.core.degraded.DisabledScriptListener

/*
* This file is not part of the ItsNat framework.
*
* Original source code use and closed source derivatives are authorized
* to third parties with no restriction or fee.
* The original source code is owned by the author.
*
* This program is distributed AS IS 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.
*
* (C) Innowhere Software a service of Jose Maria Arranz Santamaria, Spanish citizen.
*/

package org.itsnat.feashow.features.core.degraded;


import javax.servlet.ServletRequest;
import javax.servlet.http.HttpSession;
import org.itsnat.core.ItsNatDocument;
import org.itsnat.core.ItsNatServletRequest;
import org.itsnat.core.domutil.ElementGroupManager;
import org.itsnat.core.domutil.ElementList;
import org.itsnat.core.domutil.ItsNatDOMUtil;
import org.itsnat.core.domutil.ItsNatTreeWalker;
import org.itsnat.core.http.ItsNatHttpSession;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.css.CSSStyleDeclaration;
import org.w3c.dom.css.ElementCSSInlineStyle;

public class DisabledScriptListener
{
    protected ItsNatServletRequest itsNatRequest;
    protected ElementList list;

    public DisabledScriptListener(ItsNatServletRequest itsNatRequest)
    {
        this.itsNatRequest = itsNatRequest;

        try
        {
            String action = itsNatRequest.getServletRequest().getParameter("action");
            if (action == null)
                firstTime();
            else
                processAction(action);
        }
        finally
        {
            saveDocumentToSession();
        }
    }

    public void firstTime()
    {
        ItsNatDocument itsNatDoc = itsNatRequest.getItsNatDocument();
        Document doc = itsNatDoc.getDocument();

        Element listParentElem = doc.getElementById("messageListId");
        ElementGroupManager factory = itsNatDoc.getElementGroupManager();
        ElementList list = factory.createElementList(listParentElem,true);

        list.addElement("I'm happy today");
        list.addElement("The sky is blue");
    }

    public void processAction(String action)
    {
        ItsNatDocument itsNatDoc = itsNatRequest.getItsNatDocument();
        Document doc = itsNatDoc.getDocument();
        ItsNatDocument itsNatDocPrev = loadDocumentFromSession();
        if (itsNatDocPrev == null)
            throw new RuntimeException("Session lost");

        Element parentPrev = itsNatDocPrev.getDocument().getElementById("messageListParentId");
        Element tablePrev = ItsNatTreeWalker.getFirstChildElement(parentPrev);

        Element parent = doc.getElementById("messageListParentId");
        ItsNatDOMUtil.removeAllChildren(parent);
        Element table = (Element)doc.importNode(tablePrev,true);
        parent.appendChild(table);

        Element listParentElem = doc.getElementById("messageListId");
        ElementGroupManager factory = itsNatDoc.getElementGroupManager();
        ElementList list = factory.createElementList(listParentElem,false);

        ServletRequest request = itsNatRequest.getServletRequest();
        String msg = request.getParameter("message");

        if (msg.length() > 0)
            list.addElement(msg);
        else
            setErrorMessage("Empty message");
    }

    public void saveDocumentToSession()
    {
        ItsNatDocument itsNatDoc = itsNatRequest.getItsNatDocument();
        ItsNatHttpSession itsNatSession = (ItsNatHttpSession)itsNatRequest.getItsNatSession();
        HttpSession session = itsNatSession.getHttpSession();
        session.setAttribute("previous_doc",itsNatDoc);
    }

    public ItsNatDocument loadDocumentFromSession()
    {
        ItsNatHttpSession itsNatSession = (ItsNatHttpSession)itsNatRequest.getItsNatSession();
        HttpSession session = itsNatSession.getHttpSession();
        ItsNatDocument itsNatDocPrev = (ItsNatDocument)session.getAttribute("previous_doc");
        session.removeAttribute("previous_doc"); // No longer available
        return itsNatDocPrev;
    }

    public void setErrorMessage(String msg)
    {
        ItsNatDocument itsNatDoc = itsNatRequest.getItsNatDocument();
        Document doc = itsNatDoc.getDocument();
        Element errorElem = doc.getElementById("errorId");
        ItsNatDOMUtil.setTextContent(errorElem,msg);
        ElementCSSInlineStyle errorCSS = (ElementCSSInlineStyle)errorElem;
        CSSStyleDeclaration style = errorCSS.getStyle();
        style.removeProperty("display"); // makes visible
    }
}
TOP

Related Classes of org.itsnat.feashow.features.core.degraded.DisabledScriptListener

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.