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.


--
Renoir Sewjee
Software Engineer
ISS International (Welkom)
Tel: +27 (0)57 912 2702
Fax: +27 (0)57 912 2652
--
 

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

Reply via email to