All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class jcsp.awt.event.MouseMotionEventHandler

java.lang.Object
   |
   +----jcsp.awt.event.MouseMotionEventHandler

public class MouseMotionEventHandler
extends Object
implements CSProcess, MouseMotionListener

Process Diagram

   _________________________
  |                         | event
  | MouseMotionEventHandler |--->---
  |_________________________|
 

Description

The MouseMotionEventHandler class is not intended to be used by software constructors, instead it is used in the construction of new Active AWT Components that generate MouseEvents (i.e. ActiveButton, ActiveScrollbar).

The MouseMotionEventHandler class implements the MouseMotionListener interface and can be used for any Component which allows the addition of a MouseMotionListener. When the Component is created a new instance of the MouseMotionEventHandler should be created and added as a MouseMotionListener to the Component. The process must be set running (either asynchronously using ProcessNetwork or as part of a Parallel construct).

The main body of this process waits to be notified by a component invoking the mouseDragged() or mouseMoved() methods. The process then wakes up and sends the MouseEvent object down the event Channel. Any further calls to the methods while the process is writing will be discarded so as not to block the main Java event Thread. When another process reads from the Channel this process loops round and waits to be notified again.

Channel Protocols

Input Channels
Output Channels
event MouseMotionEvent The MouseMotionEvent generated by the Component.

Example

Extending an Existing Component

 import java.awt.*;
 import jcsp.lang.*;
 import jcsp.awt.event.*;
 public class ChannelComponent extends Component implements CSProcess {
   ComponentEventHanlder handler;
   public ChannelComponent() {
   }
   public void addMouseMotionEventChannel(ChannelOutput event) {
     if (event !=null) {
       handler = new MouseMotionEventHanlder(event);
       addMouseMotionListener(handler);
     }
   }
   public void run() {
     if (handler != null) {
       handler.run();
     }
   }
 }
 
NOTE: This is in fact how the jcsp awt components add Channels for other event types.

Listening to a Component

 import java.awt.*;
 import jcsp.awt.event.*;
 import jcsp.lang.*;
        :
        :
   {
     final Channel event = new One2OneChannel();
     Component c = new Button("Active");
     add(c);
     MouseMotionEventHanlder handler = new MouseMotionEventHanlder(event);
     c.addMouseMotionListener(handler);
     new Parallel(new CSProcess[] {
       c,
       handler,
       new CSProcess() {
         public void run() {
           while (true) {
             Object o = event.read();
             System.out.println("MouseEvent '" + o);
           }
         }
       }
     }).run();
   }
 }
 

Author:
P.D.Austin

Constructor Index

 o MouseMotionEventHandler(ChannelOutput)
constructs a new MouseMotionEventHandler with the specified output Channel.

Method Index

 o mouseDragged(MouseEvent)
Invoked when the Component the event handler is listening to has a mouse dragged.
 o mouseMoved(MouseEvent)
Invoked when the Component the event handler is listening to has a mouse moved.
 o run()
The main body of the process.

Constructors

 o MouseMotionEventHandler
 public MouseMotionEventHandler(ChannelOutput event)
constructs a new MouseMotionEventHandler with the specified output Channel.

Parameters:
event - The Channel to send the event notification down

Methods

 o mouseDragged
 public void mouseDragged(MouseEvent e)
Invoked when the Component the event handler is listening to has a mouse dragged. Notifies the event process that a MouseEvent has occurred by sending the MouseEvent Object. Some notifications will be lost so there are no guarantees that all events generated will be processed.

Parameters:
e - The parameters associated with this event
 o mouseMoved
 public void mouseMoved(MouseEvent e)
Invoked when the Component the event handler is listening to has a mouse moved. Notifies the event process that a MouseEvent has occurred by sending the MouseEvent Object. Some notifications will be lost so there are no guarantees that all events generated will be processed.

Parameters:
e - The parameters associated with this event
 o run
 public synchronized void run()
The main body of the process. Executes the functionality described above.


All Packages  Class Hierarchy  This Package  Previous  Next  Index