#! /usr/dt/bin/dtksh

##########################################################################
#  (c) Copyright 1993, 1994 Hewlett-Packard Company	
#  (c) Copyright 1993, 1994 International Business Machines Corp.
#  (c) Copyright 1993, 1994 Sun Microsystems, Inc.
#  (c) Copyright 1993, 1994 Unix System Labs, Inc., a subsidiary of
#      Novell, Inc.
##########################################################################


#
# This sample shell script demonstrates how event handlers can be added
# and removed.  It also demonstrates how the EH_WIDGET and EH_EVENT
# convenience environment variables can be referenced.
#


EventHandler1()
{
   echo "EH_WIDGET ="$EH_WIDGET
   echo "EH_EVENT ="$EH_EVENT
   echo "EH_EVENT.TYPE ="${EH_EVENT.TYPE}
   echo "event handler 1 invoked ("$1")"
}

EventHandler2()
{
   echo "EH_WIDGET ="$EH_WIDGET
   echo "EH_EVENT ="$EH_EVENT
   echo "EH_EVENT.TYPE ="${EH_EVENT.TYPE}
   echo "event handler 1 invoked ("$1")"
}

# PushbuttonCallback: Adds an event handler to the form widget
AddMaskableEventHandler1()
{
   XtAddEventHandler $FORM2 "Button2MotionMask" False 	 "EventHandler1 1"
}

# PushbuttonCallback: Adds an event handler to the form widget
AddMaskableEventHandler2()
{
   XtAddEventHandler $FORM2 "ButtonPressMask|ButtonReleaseMask" False 	 "EventHandler1 1"
}

# PushbuttonCallback: Adds an event handler to the form widget
AddMaskableEventHandler3()
{
   XtAddEventHandler $FORM2 "Button2MotionMask" False 	 "EventHandler1 2"
}

# PushbuttonCallback: Adds an event handler to the form widget
AddNonmaskableEventHandler()
{
   XtAddEventHandler $FORM2 "NoEventMask" True "EventHandler2 1"
}

# PushbuttonCallback: Adds an event handler to the form widget.
#                     Should report a bad event mask.
AddBadEventHandler()
{
   XtAddEventHandler $FORM2 "fooMask" False "EventHandler2 1"
}

# PushbuttonCallback: Removes an event handler to the form widget
RemoveEventHandler1()
{
   XtRemoveEventHandler $FORM2 "Button2MotionMask" False 	 "EventHandler1 1"
}

# PushbuttonCallback: Removes an event handler to the form widget
RemoveEventHandler2()
{
   XtRemoveEventHandler $FORM2 "ButtonPressMask|ButtonReleaseMask" False 	 "EventHandler1 1"
}

# PushbuttonCallback: Removes an event handler to the form widget
RemoveEventHandler1and2()
{
   XtRemoveEventHandler $FORM2 "XtAllEvents" True "EventHandler1 1"
}



######################### Create the Main UI #################################

XtInitialize TOPLEVEL eventHandlerTest EventHandlerTest "$0" "$@"

XtCreateManagedWidget FORM form XmForm $TOPLEVEL

XtCreateManagedWidget FORM2 form2 XmForm $FORM 	topAttachment:ATTACH_FORM 	leftAttachment:ATTACH_FORM 	rightAttachment:ATTACH_FORM
XtSetValues $FORM2 height:150 width:150

XtCreateManagedWidget SEP sep XmSeparator $FORM 	topAttachment:ATTACH_WIDGET 	topWidget:$FORM2 	leftAttachment:ATTACH_FORM 	rightAttachment:ATTACH_FORM

XtCreateManagedWidget PB1 pb XmPushButton $FORM 	labelString:"Add Maskable Event Handler 1" 	topAttachment:ATTACH_WIDGET 	topWidget:$SEP 	topOffset:10 	leftAttachment:ATTACH_POSITION 	leftPosition:10 	rightAttachment:ATTACH_POSITION 	rightPosition:40
XtAddCallback $PB1 activateCallback AddMaskableEventHandler1

XtCreateManagedWidget PB2 pb2 XmPushButton $FORM 	labelString:"Add Maskable Event Handler 2" 	topAttachment:ATTACH_WIDGET 	topWidget:$SEP 	topOffset:10 	leftAttachment:ATTACH_POSITION 	leftPosition:60 	rightAttachment:ATTACH_POSITION 	rightPosition:90
XtAddCallback $PB2 activateCallback AddMaskableEventHandler2

XtCreateManagedWidget PB3 pb3 XmPushButton $FORM 	labelString:"Add Maskable Event Handler 3" 	topAttachment:ATTACH_WIDGET 	topWidget:$PB2 	topOffset:10 	leftAttachment:ATTACH_POSITION 	leftPosition:10 	rightAttachment:ATTACH_POSITION 	rightPosition:40 
XtAddCallback $PB3 activateCallback AddMaskableEventHandler3

XtCreateManagedWidget PB4 pb4 XmPushButton $FORM 	labelString:"Add Maskable Event Handler 4" 	topAttachment:ATTACH_WIDGET 	topWidget:$PB2 	topOffset:10 	leftAttachment:ATTACH_POSITION 	leftPosition:60 	rightAttachment:ATTACH_POSITION 	rightPosition:90
XtAddCallback $PB4 activateCallback AddMaskableEventHandler4
XtSetSensitive $PB4 False

XtCreateManagedWidget PB5 pb5 XmPushButton $FORM 	labelString:"Add non-maskable Event Handler" 	topAttachment:ATTACH_WIDGET 	topWidget:$PB4 	topOffset:10 	leftAttachment:ATTACH_POSITION 	leftPosition:10 	rightAttachment:ATTACH_POSITION 	rightPosition:40
XtAddCallback $PB5 activateCallback AddNonmaskableEventHandler

XtCreateManagedWidget PB6 pb6 XmPushButton $FORM 	labelString:"Add Bad Event Handler" 	topAttachment:ATTACH_WIDGET 	topWidget:$PB4 	topOffset:10 	leftAttachment:ATTACH_POSITION 	leftPosition:60 	rightAttachment:ATTACH_POSITION 	rightPosition:90
XtAddCallback $PB6 activateCallback AddBadEventHandler

XtCreateManagedWidget PB7 pb7 XmPushButton $FORM 	labelString:"Remove Maskable Event Handler 1" 	topAttachment:ATTACH_WIDGET 	topWidget:$PB6 	topOffset:10 	leftAttachment:ATTACH_POSITION 	leftPosition:10 	rightAttachment:ATTACH_POSITION 	rightPosition:40 
XtAddCallback $PB7 activateCallback RemoveEventHandler1

XtCreateManagedWidget PB8 pb8 XmPushButton $FORM 	labelString:"Remove Maskable Event Handler 2" 	topAttachment:ATTACH_WIDGET 	topWidget:$PB6 	topOffset:10 	leftAttachment:ATTACH_POSITION 	leftPosition:60 	rightAttachment:ATTACH_POSITION 	rightPosition:90
XtAddCallback $PB8 activateCallback RemoveEventHandler2

XtCreateManagedWidget PB9 pb9 XmPushButton $FORM 	labelString:"Remove Maskable Event Handler 1 and 2" 	topAttachment:ATTACH_WIDGET 	topWidget:$PB8 	topOffset:10 	leftAttachment:ATTACH_POSITION 	leftPosition:10 	rightAttachment:ATTACH_POSITION 	rightPosition:40 	bottomAttachment:ATTACH_FORM 	bottomOffset:10
XtAddCallback $PB9 activateCallback RemoveEventHandler1and2


XtRealizeWidget $TOPLEVEL

XtMainLoop