net.xoetrope.html
Class XHtmlEventHandler

java.lang.Object
  extended by net.xoetrope.html.XHtmlEventHandler
All Implemented Interfaces:
java.awt.event.FocusListener, java.awt.event.KeyListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.util.EventListener, XuiEventHandler

public class XHtmlEventHandler
extends java.lang.Object
implements XuiEventHandler, java.awt.event.FocusListener, java.awt.event.KeyListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener

Implements an event handler for XUI. Most of the common events are handled. The class is intended as a mixin for a panel class such as XPage and should not be used directly

Copyright (c) Xoetrope Ltd., 2002-2003

License: see license.txt

$Revision: 1.2 $


Field Summary
protected  java.util.Hashtable classInstances
           
protected  java.lang.Object container
           
protected static java.util.EventObject currentEvt
           
protected  XProject currentProject
           
protected  java.util.Hashtable handlers
           
protected static java.lang.Object mouseDownComponent
           
protected static boolean mouseEventInvoked
           
protected static int suppressFocusEvents
           
protected  XValidationHandler xValidationHandler
           
 
Constructor Summary
XHtmlEventHandler(XProject project, java.lang.Object c, XValidationHandler vh)
           
 
Method Summary
 XMethodReference addHandler(java.lang.Object comp, long eventType, java.lang.String methodStr)
           Adds an event handler.
 XMethodReference addHandler(java.lang.Object srcObj, java.lang.String methodName, java.lang.String adderMethod, java.lang.String listenerInterface, long eventMask, java.lang.Object listener)
          Adds a handler for action events
 void addHandler(PageSupport xpage, java.lang.Object targetComp, java.lang.String typeStr, java.lang.String methodName)
          Adds an event handler.
 void addListener(java.lang.Object comp, java.lang.String listenerName, java.lang.String argType, java.lang.Object listener)
          Adds a listener for an event type.
 java.lang.reflect.Method findEvent(java.lang.Object src, long eventType)
          Lookup an event for a component.
 void focusGained(java.awt.event.FocusEvent e)
           
 void focusLost(java.awt.event.FocusEvent e)
           
 java.util.EventObject getCurrentEvent()
          Get the current event
 XValidationHandler getValidationHandler()
          Get the validation handler reference.
 void invoke(long eventType, java.util.EventObject evt)
          Invokes an event.
 boolean isFocusChangeSuppressed()
          Check the focus change status
 void keyPressed(java.awt.event.KeyEvent e)
           
 void keyReleased(java.awt.event.KeyEvent e)
           
 void keyTyped(java.awt.event.KeyEvent e)
           
 void mouseClicked(java.awt.event.MouseEvent e)
           
 void mouseDoubleClicked(java.awt.event.MouseEvent e)
           
 void mouseDragged(java.awt.event.MouseEvent e)
           
 void mouseEntered(java.awt.event.MouseEvent e)
           
 void mouseExited(java.awt.event.MouseEvent e)
           
 void mouseHover(java.awt.event.MouseEvent e)
           
 void mouseMoved(java.awt.event.MouseEvent e)
           
 void mousePressed(java.awt.event.MouseEvent e)
           
 void mouseReleased(java.awt.event.MouseEvent e)
           
 void removeHandlers(java.lang.Object comp)
          Remove all the event handlers for a particular object
 void suppressFocusEvents(boolean suppress)
          Used by messageboxes and other dialogs to prevent the display of the dialog causing extra focus events from being fired.
 boolean wasMouseClicked()
          A utility method used to determine if the last event corrseponds to a mouse click.
 boolean wasMouseDoubleClicked()
          A utility method used to determine if the last event corrseponds to a mouse double click.
 boolean wasMouseRightClicked()
          A utility method used to determine if the last event corrseponds to a mouse right click.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

currentEvt

protected static java.util.EventObject currentEvt

container

protected java.lang.Object container

currentProject

protected XProject currentProject

handlers

protected java.util.Hashtable handlers

classInstances

protected java.util.Hashtable classInstances

mouseDownComponent

protected static java.lang.Object mouseDownComponent

mouseEventInvoked

protected static boolean mouseEventInvoked

suppressFocusEvents

protected static int suppressFocusEvents

xValidationHandler

protected XValidationHandler xValidationHandler
Constructor Detail

XHtmlEventHandler

public XHtmlEventHandler(XProject project,
                         java.lang.Object c,
                         XValidationHandler vh)
Method Detail

getValidationHandler

public XValidationHandler getValidationHandler()
Get the validation handler reference. Note that you should not hold a reference to this value as it will probably cause a memory leak.

Specified by:
getValidationHandler in interface XuiEventHandler
Returns:
the current validation handler

invoke

public void invoke(long eventType,
                   java.util.EventObject evt)
Invokes an event. Called in response to an event. If a handler has been added for the event it will be invoked.

Specified by:
invoke in interface XuiEventHandler
Parameters:
eventType - the event type
evt - the event object

findEvent

public java.lang.reflect.Method findEvent(java.lang.Object src,
                                          long eventType)
Lookup an event for a component.

Specified by:
findEvent in interface XuiEventHandler
Parameters:
evt - the event object
Returns:
The Method object

isFocusChangeSuppressed

public boolean isFocusChangeSuppressed()
Check the focus change status

Specified by:
isFocusChangeSuppressed in interface XuiEventHandler
Returns:
true if the focus change events are being suppressed.

getCurrentEvent

public java.util.EventObject getCurrentEvent()
Get the current event

Specified by:
getCurrentEvent in interface XuiEventHandler
Returns:
the AWTEvent that was last triggered

addHandler

public XMethodReference addHandler(java.lang.Object comp,
                                   long eventType,
                                   java.lang.String methodStr)
                            throws java.lang.ClassNotFoundException,
                                   java.lang.NoSuchMethodException

Adds an event handler. A specific handler such as the addActionHandler should be used instead of calling this method

The handler can also be defined in classes other than the current page or classes derived from XPage. The syntax for such expressions is as follows:

where mypackage is the name of the Java package containing the class MyClass. The value of referenceName is a user defined value that identifies the instance of the class. The application instantiates an instance of the class when the expression is first encountered and thereafter maintains the instance with each subsequent call retrieving the same instance of the class.

The page may also reference scripts with the expression ${script.XXXXX()} where XXXXX is the name of the script method to be invoked.

Specified by:
addHandler in interface XuiEventHandler
Parameters:
eventType - the event type
methodStr - the method to be invoked in response to the object
comp - the component that fires the event
Throws:
java.lang.ClassNotFoundException - The class cannot be found
java.lang.NoSuchMethodException - The specified method does not exist in the class

addHandler

public XMethodReference addHandler(java.lang.Object srcObj,
                                   java.lang.String methodName,
                                   java.lang.String adderMethod,
                                   java.lang.String listenerInterface,
                                   long eventMask,
                                   java.lang.Object listener)
Adds a handler for action events

Specified by:
addHandler in interface XuiEventHandler
Parameters:
srcObj - the menu item that fires the events
methodName - the method to be invoked in response to the action event
adderMethod - the adder method name e.g. addActionListener
listenerInterface - the listener interface e.g. java.awt.event.ActionListener
eventMask - the event mask e.g. AWTEvent.ACTION_EVENT_MASK
listener - the listener implementation, usually the page's this pointer
See Also:
ActionListener, ActionEvent

removeHandlers

public void removeHandlers(java.lang.Object comp)
Remove all the event handlers for a particular object

Specified by:
removeHandlers in interface XuiEventHandler
Parameters:
comp - the object whose events are being removed

addListener

public void addListener(java.lang.Object comp,
                        java.lang.String listenerName,
                        java.lang.String argType,
                        java.lang.Object listener)
Adds a listener for an event type. This method should not normally be called by an application

Specified by:
addListener in interface XuiEventHandler
Parameters:
comp - the component that fires events
listenerName - the name of the listener interface
argType - the listener arguments
listener - the listener implementation, usually the page's this pointer

wasMouseClicked

public boolean wasMouseClicked()
A utility method used to determine if the last event corrseponds to a mouse click. The notion of a click is extended by assuming the a mouse press and release within a single component constitutes a click even if not at the same coordinate. A MouseEvent.MOUSE_CLICKED is only triggered when the press and release are at the same location and this is often inadequate for end-user interaction.

Specified by:
wasMouseClicked in interface XuiEventHandler
Returns:
true if the mouse was clicked

wasMouseDoubleClicked

public boolean wasMouseDoubleClicked()
A utility method used to determine if the last event corrseponds to a mouse double click. The notion of a click is extended by assuming the a mouse press and release within a single component constitutes a click even if not at the same coordinate. A MouseEvent.MOUSE_CLICKED is only triggered when the press and release are at the same location and this is often inadequate for end-user interaction.

Specified by:
wasMouseDoubleClicked in interface XuiEventHandler
Returns:
true if the mouse was double clicked

wasMouseRightClicked

public boolean wasMouseRightClicked()
A utility method used to determine if the last event corrseponds to a mouse right click. The notion of a click is extended by assuming the a mouse press and release within a single component constitutes a click even if not at the same coordinate. A MouseEvent.MOUSE_CLICKED is only triggered when the press and release are at the same location and this is often inadequate for end-user interaction.

Specified by:
wasMouseRightClicked in interface XuiEventHandler
Returns:
true if the mouse was right clicked

focusGained

public void focusGained(java.awt.event.FocusEvent e)
Specified by:
focusGained in interface java.awt.event.FocusListener

focusLost

public void focusLost(java.awt.event.FocusEvent e)
Specified by:
focusLost in interface java.awt.event.FocusListener

keyPressed

public void keyPressed(java.awt.event.KeyEvent e)
Specified by:
keyPressed in interface java.awt.event.KeyListener

keyReleased

public void keyReleased(java.awt.event.KeyEvent e)
Specified by:
keyReleased in interface java.awt.event.KeyListener

keyTyped

public void keyTyped(java.awt.event.KeyEvent e)
Specified by:
keyTyped in interface java.awt.event.KeyListener

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Specified by:
mouseClicked in interface java.awt.event.MouseListener

mouseDoubleClicked

public void mouseDoubleClicked(java.awt.event.MouseEvent e)

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent e)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent e)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
Specified by:
mousePressed in interface java.awt.event.MouseListener

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
Specified by:
mouseReleased in interface java.awt.event.MouseListener

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent e)
Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener

mouseHover

public void mouseHover(java.awt.event.MouseEvent e)

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent e)
Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener

suppressFocusEvents

public void suppressFocusEvents(boolean suppress)
Used by messageboxes and other dialogs to prevent the display of the dialog causing extra focus events from being fired.

Specified by:
suppressFocusEvents in interface XuiEventHandler
Parameters:
suppress - true to suppress focus events

addHandler

public void addHandler(PageSupport xpage,
                       java.lang.Object targetComp,
                       java.lang.String typeStr,
                       java.lang.String methodName)
Adds an event handler.

Specified by:
addHandler in interface XuiEventHandler
Parameters:
xpage - The page that contains the response methods
targetComp - the component to which the event handler is added
typeStr - the type of handler
methodName - the name of the response method