/* * GNU LESSER GENERAL PUBLIC LICENSE Copyright (C) 2006 The XAMJ Project * * This library 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 2.1 of the License, or (at your option) * any later version. * * This library 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 library; if not, write to the Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Contact info: lobochief@users.sourceforge.net */ package com.nvarghese.beowulf.common.cobra.html.js; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import org.w3c.dom.html2.HTMLElement; import com.nvarghese.beowulf.common.cobra.js.AbstractScriptableDelegate; public class Event extends AbstractScriptableDelegate { private boolean cancelBubble; private HTMLElement fromElement, toElement; private int leafX, leafY; private boolean returnValue; private HTMLElement srcElement; private String type; private final java.awt.event.InputEvent inputEvent; public Event(String type, HTMLElement srcElement, java.awt.event.InputEvent mouseEvent, int leafX, int leafY) { this.type = type; this.srcElement = srcElement; this.leafX = leafX; this.leafY = leafY; this.inputEvent = mouseEvent; } public Event(String type, HTMLElement srcElement, java.awt.event.KeyEvent keyEvent) { this.type = type; this.srcElement = srcElement; this.inputEvent = keyEvent; } public Event(String type, HTMLElement srcElement) { this.type = type; this.srcElement = srcElement; this.inputEvent = null; } public boolean getAltKey() { InputEvent ie = this.inputEvent; return ie == null ? false : ie.isAltDown(); } public boolean getShiftKey() { InputEvent ie = this.inputEvent; return ie == null ? false : ie.isShiftDown(); } public boolean getCtrlKey() { InputEvent ie = this.inputEvent; return ie == null ? false : ie.isControlDown(); } public int getButton() { InputEvent ie = this.inputEvent; if (ie instanceof MouseEvent) { return ((MouseEvent) ie).getButton(); } else { return 0; } } public boolean isCancelBubble() { return cancelBubble; } public void setCancelBubble(boolean cancelBubble) { this.cancelBubble = cancelBubble; } public String getType() { return type; } public void setType(String type) { this.type = type; } public int getClientX() { InputEvent ie = this.inputEvent; if (ie instanceof MouseEvent) { return ((MouseEvent) ie).getX(); } else { return 0; } } public int getClientY() { InputEvent ie = this.inputEvent; if (ie instanceof MouseEvent) { return ((MouseEvent) ie).getY(); } else { return 0; } } public int getKeyCode() { InputEvent ie = this.inputEvent; if (ie instanceof KeyEvent) { return ((KeyEvent) ie).getKeyCode(); } else { return 0; } } // public int getOffsetX() { // // Despite advertising that it returns an element-relative offset, // // IE doesn't do this. // //TODO: Must be relative to top viewport. // return this.getClientX() - 2; // } // // public int getOffsetY() { // // Despite advertising that it returns an element-relative offset, // // IE doesn't do this. // //TODO: Must be relative to top viewport. // return this.getClientY() - 2; // } public boolean isReturnValue() { return returnValue; } public void setReturnValue(boolean returnValue) { this.returnValue = returnValue; } public HTMLElement getSrcElement() { return srcElement; } public void setSrcElement(HTMLElement srcElement) { this.srcElement = srcElement; } public HTMLElement getFromElement() { return fromElement; } public void setFromElement(HTMLElement fromElement) { this.fromElement = fromElement; } public HTMLElement getToElement() { return toElement; } public void setToElement(HTMLElement toElement) { this.toElement = toElement; } public int getLeafX() { return leafX; } public void setLeafX(int leafX) { this.leafX = leafX; } public int getLeafY() { return leafY; } public void setLeafY(int leafY) { this.leafY = leafY; } }