All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class jcsp.awt.event.ComponentEventHandler

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

public class ComponentEventHandler
extends Object
implements CSProcess, ComponentListener

Process Diagram

   _______________________
  |                       | event
  | ComponentEventHandler |--->---
  |_______________________|
 

Description

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

The ComponentEventHandler class implements the ComponentListener interface and can be used for any Component which allows the addition of a ComponentListener. When the Component is created a new instance of the ComponentEventHandler should be created and added as a ComponentListener 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 componentResized(), componentMoved(), componentShown() or componentHidden() methods. The process then wakes up and sends the ComponentEvent 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 ComponentEvent The ComponentEvent 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 addComponentEventChannel(ChannelOutput event) {
     if (event !=null) {
       handler = new ComponentEventHanlder(event);
       addComponentListener(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);
     ComponentEventHanlder handler = new ComponentEventHanlder(event);
     c.addComponentListener(handler);
     new Parallel(new CSProcess[] {
       c,
       handler,
       new CSProcess() {
         public void run() {
           while (true) {
             Object o = event.read();
             System.out.println("ComponentEvent '" + o);
           }
         }
       }
     }).run();
   }
 }
 

Author:
P.D.Austin

Constructor Index

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

Method Index

 o componentHidden(ComponentEvent)
Invoked when the component the event handler is listening to is hidden.
 o componentMoved(ComponentEvent)
Invoked when the component the event handler is listening to is moved.
 o componentResized(ComponentEvent)
Invoked when the component the event handler is listening to is resized.
 o componentShown(ComponentEvent)
Invoked when the component the event handler is listening to is shown.
 o run()
The main body of the process.

Constructors

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

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

Methods

 o componentResized
 public void componentResized(ComponentEvent e)
Invoked when the component the event handler is listening to is resized. Notifies the event process that an ComponentEvent has occurred by sending the ComponentEvent 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 componentMoved
 public void componentMoved(ComponentEvent e)
Invoked when the component the event handler is listening to is moved. Notifies the event process that an ComponentEvent has occurred by sending the ComponentEvent 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 componentShown
 public void componentShown(ComponentEvent e)
Invoked when the component the event handler is listening to is shown. Notifies the event process that an ComponentEvent has occurred by sending the ComponentEvent 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 componentHidden
 public void componentHidden(ComponentEvent e)
Invoked when the component the event handler is listening to is hidden. Notifies the event process that an ComponentEvent has occurred by sending the ComponentEvent 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 void run()
The main body of the process. Executes the functionality described above.


All Packages  Class Hierarchy  This Package  Previous  Next  Index