/*
* 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);
}
}
|