|
Hi,
I've attached some skeleton code. --Renoir Vijayan Pandalai wrote: I wish to know how i could write a custom behavior class which would invoke MouseClicked, MouseDragged and MouseReleased events.
|
import java.awt.AWTEvent;
import java.awt.event.MouseEvent;
import java.awt.event.InputEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Enumeration;
import javax.media.j3d.Behavior;
import javax.media.j3d.WakeupOnAWTEvent;
import javax.media.j3d.WakeupCriterion;
import javax.media.j3d.WakeupOr;
public class CustomBehavior extends Behavior
{
private WakeupOr wakeupCriteria;
public CustomBehavior()
{
}
public void initialize()
{
WakeupOnAWTEvent[] mouseEvents = new WakeupOnAWTEvent[3];
mouseEvents[0] = new WakeupOnAWTEvent(MouseEvent.MOUSE_DRAGGED);
mouseEvents[1] = new WakeupOnAWTEvent(MouseEvent.MOUSE_PRESSED);
mouseEvents[2] = new WakeupOnAWTEvent(MouseEvent.MOUSE_RELEASED);
wakeupCriteria = new WakeupOr(mouseEvents);
wakeupOn(wakeupCriteria);
}
public void processStimulus(Enumeration criteria)
{
while (criteria.hasMoreElements())
{
WakeupCriterion wakeup = (WakeupCriterion)criteria.nextElement();
if (wakeup instanceof WakeupOnAWTEvent)
{
AWTEvent[] events = ((WakeupOnAWTEvent)wakeup).getAWTEvent();
if (events.length > 0 && events[events.length-1] instanceof
MouseEvent)
{
MouseEvent event = (MouseEvent)events[events.length-1];
int id = event.getID();
int mod = event.getModifiers();
int x = event.getX();
int y = event.getY();
if (id == MouseEvent.MOUSE_RELEASED)
{
// mouse released code for all buttons.
}
// right mouse button
if (mod == InputEvent.BUTTON3_MASK)
{
if (id == MouseEvent.MOUSE_DRAGGED)
{
// right mouse button dragged code
}
else if (id == MouseEvent.MOUSE_PRESSED)
{
// right mouse button pressed code
}
}
// left mouse button
if (mod == InputEvent.BUTTON1_MASK)
{
if (id == MouseEvent.MOUSE_DRAGGED)
{
// left mouse button dragged code
}
else if (id == MouseEvent.MOUSE_PRESSED)
{
// left mouse button pressed code
}
}
}
}
}
wakeupOn(wakeupCriteria);
}
}
