ServerEventsNotBrowserTreeNode.java :  » Ajax » ItsNat » org » itsnat » feashow » features » core » serverevts » Java Open Source

Java Open Source » Ajax » ItsNat 
ItsNat » org » itsnat » feashow » features » core » serverevts » ServerEventsNotBrowserTreeNode.java
/*
 * 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.
 *
 * Author: Jose Maria Arranz Santamaria
 * (C) Innowhere Software Services S.L., Spanish company, year 2007
 */

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

import org.itsnat.core.ItsNatDocument;
import org.itsnat.core.event.UserEvent;
import org.itsnat.feashow.FeatureTreeNode;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.events.DocumentEvent;
import org.w3c.dom.events.Event;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.EventTarget;
import org.w3c.dom.events.MouseEvent;
import org.w3c.dom.views.AbstractView;
import org.w3c.dom.views.DocumentView;

public class ServerEventsNotBrowserTreeNode extends FeatureTreeNode implements EventListener
{
    protected Element linkElem;
    protected Element[] buttonElems;
    protected Element userButton;

    public ServerEventsNotBrowserTreeNode()
    {
    }

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

        this.linkElem = (Element)doc.getElementById("linkId");
        itsNatDoc.addEventListener((EventTarget)linkElem,"click",this,false);

        this.buttonElems = new Element[3];
        for(int i = 0; i < buttonElems.length; i++)
            buttonElems[i] = doc.getElementById("buttonId" + i);
        for(int i = 0; i < buttonElems.length; i++)
            itsNatDoc.addEventListener((EventTarget)buttonElems[i],"click",this,false);

        this.userButton = doc.getElementById("userButtonId");
        itsNatDoc.addUserEventListener((EventTarget)userButton,"myEvent",this);
    }

    public void endExamplePanel()
    {
        ItsNatDocument itsNatDoc = getItsNatDocument();

        itsNatDoc.removeEventListener((EventTarget)linkElem,"click",this,false);
        this.linkElem = null;

        for(int i = 0; i < buttonElems.length; i++)
            itsNatDoc.removeEventListener((EventTarget)buttonElems[i],"click",this,false);
        this.buttonElems = null;

        itsNatDoc.removeUserEventListener((EventTarget)userButton,"myEvent",this);
        this.userButton = null;
    }

    public void handleEvent(Event evt)
    {
        EventTarget currTarget = evt.getCurrentTarget();
        if (currTarget == linkElem)
        {
            fireEventsFromServer();
        }
        else
        {
            log("Clicked: " + ((Element)currTarget).getAttribute("value"));
        }
    }

    public void fireEventsFromServer()
    {
        ItsNatDocument itsNatDoc = getItsNatDocument();
        DocumentEvent docEvent = (DocumentEvent)itsNatDoc;

        AbstractView view = ((DocumentView)itsNatDoc).getDefaultView();

        for(int i = 0; i < buttonElems.length; i++)
        {
            MouseEvent event = (MouseEvent)docEvent.createEvent("MouseEvents");
            event.initMouseEvent("click",true,true,view,0,
                    0,0,0,0,false,false,false,false,(short)0/*left button*/,null);

            Element buttonElem = buttonElems[i];
            EventTarget buttonElemEnh = (EventTarget)itsNatDoc.getItsNatNode(buttonElem);

            buttonElemEnh.dispatchEvent(event);
            // Alternative: itsNatDoc.dispatchEvent((EventTarget)buttonElem,event);
        }

        UserEvent userEvt = (UserEvent)docEvent.createEvent("itsnat:UserEvents");
        userEvt.initEvent("itsnat:user:myEvent",false,false);

        EventTarget userButtonEnh = (EventTarget)itsNatDoc.getItsNatNode(userButton);

        userButtonEnh.dispatchEvent(userEvt);
     }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.