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
-
ComponentEventHandler(ChannelOutput)
- constructs a new ComponentEventHandler with the specified event output
Channel.
-
componentHidden(ComponentEvent)
- Invoked when the component the event handler is listening to is hidden.
-
componentMoved(ComponentEvent)
- Invoked when the component the event handler is listening to is moved.
-
componentResized(ComponentEvent)
- Invoked when the component the event handler is listening to is resized.
-
componentShown(ComponentEvent)
- Invoked when the component the event handler is listening to is shown.
-
run()
- The main body of the process.
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
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
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
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
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
run
public void run()
- The main body of the process. Executes the functionality described above.
All Packages Class Hierarchy This Package Previous Next Index