All Packages Class Hierarchy This Package Previous Next Index
Class jcsp.awt.ActiveList
java.lang.Object
|
+----java.awt.Component
|
+----java.awt.List
|
+----jcsp.awt.ActiveList
- public class ActiveList
- extends List
- implements CSProcess
Process Diagram
External View
____________
configure | | event
----->-----| ActiveList |--->---
|____________|
Internal View
________________________________________
| ____________ __________________ |
configure | | | | | | event
----->-------| Configure | | ItemEventHandler |----->---
| |____________| |__________________| |
| |
| ActiveList |
|________________________________________|
Description
An ActiveList is a sub class of List which uses Channels for event
notification and configuration.
If the event Channel is not a null reference an new ItemEventHandler is
created with the Channel and registered as ItemListener with the
ActiveList and has its itemStateChanged() method invoked when
ItemEvents are generated. Any events generated when the
ItemEventHandler is blocked writing to the event Channel are ignored
so that the main Java Event Thread is not blocked. The output from the
ItemEventHanlder is connected to the event Channel causing an Object
to be sent down the Channel when the List is selected.
NOTE: As the component generates two Objects for each event the
event Channel must be a One2OneChannel.
It is also possible to register Channels to be used to notify the
occurrence of other types of Event that the List generates. This can
be done by calling one of the addXXXXEventChannel() methods.
To configure the List messages can be sent down the configure
channel. If the configure Channel is not a null reference a new Configure
is created. The configure process sits in an infinite loop which reads
from the configure Channel and configures the component based on the
Object received (see table below for details).
Channel Protocols
Input Channels |
configure |
String |
Sets the selected item in this List menu to be the item whose name is
equal to the specified string. If more than one item matches (is equal
to) the specified string, the one with the smallest index is selected.
|
Integer |
Sets the selected item in this List menu to be the item at the
specified position.
|
Boolean |
- If the Boolean Object refers to the Boolean.TRUE instance the
button is made active
- If the Boolean Object refers to the Boolean.FALSE instance the
button is made inactive
- If the Boolean Object refers to any other Boolean instance
the message is discarded
|
Output Channels |
event |
Boolean followed by Integer |
This component sends two Objects for each event. The first is a
Boolean which will be true if the event was for selection false if it
was for deselection. The second is an Integer representing the item that
changed.
|
Example
import java.awt.*;
import jcsp.lang.*;
import jcsp.awt.*;
public class ListExample extends Frame {
public ListExample() {
super("List Example");
final Channel close = new One2OneChannel();
ActiveList c = new ActiveList(null, close);
c.add("Ignore Me");
c.add("Close Window");
add(c);
setVisible(true);
new Parallel(new CSProcess[] {
c,
new CSProcess() {
public void run() {
close.read();
Integer i = (Integer)close.read();
if (i.intValue() == 1) {
setVisible(false);
System.exit(0);
}
}
}
}).run();
}
public static void main(String argv[]) {
new ListExample();
}
}
- Author:
- P.D.Austin
- See Also:
- ItemEventHandler
-
ActiveList()
- Constructs a List with no configuration Channel and no event Channel.
-
ActiveList(ChannelInput, ChannelOutput)
- Constructs a List with the configuration Channel configure and the
event Channel event.
-
ActiveList(ChannelInput, ChannelOutput, int)
- Constructs a List with the configuration Channel configure and the
event Channel event with the specified number of visible lines.
-
ActiveList(ChannelInput, ChannelOutput, int, boolean)
- Constructs a List with the configuration Channel configure and the
event Channel event with the specified number of visible lines.
-
ActiveList(int)
- Constructs a List with no configuration Channel and no event Channel
with the specified number of visible lines.
-
ActiveList(int, boolean)
- Constructs a List with no configuration Channel and no event Channel
with the specified number of visible lines.
-
addComponentEventChannel(ChannelOutput)
- Add a new Channel to the Component which will be used to notify that
a ComponentEvent has occurred on the component.
-
addFocusEventChannel(ChannelOutput)
- Add a new Channel to the Component which will be used to notify that
a FocusEvent has occurred on the component.
-
addKeyEventChannel(ChannelOutput)
- Add a new Channel to the Component which will be used to notify that
a KeyEvent has occurred on the component.
-
addMouseEventChannel(ChannelOutput)
- Add a new Channel to the Component which will be used to notify that
a MouseEvent has occurred on the component.
-
addMouseMotionEventChannel(ChannelOutput)
- Add a new Channel to the Component which will be used to notify that
a MouseMotionEvent has occurred on the component.
-
run()
- The main body of this process.
ActiveList
public ActiveList()
- Constructs a List with no configuration Channel and no event Channel.
ActiveList
public ActiveList(int rows)
- Constructs a List with no configuration Channel and no event Channel
with the specified number of visible lines.
- Parameters:
- rows - the number of items to show.
ActiveList
public ActiveList(int rows,
boolean multipleMode)
- Constructs a List with no configuration Channel and no event Channel
with the specified number of visible lines. If the value of multipleMode
is true, then the user can select multiple items from the list. If it
is false, only one item at a time can be selected.
- Parameters:
- rows - the number of items to show.
- multipleMode - if true, then multiple selections are allowed; otherwise, only one item can be selected at a time.
ActiveList
public ActiveList(ChannelInput configure,
ChannelOutput event)
- Constructs a List with the configuration Channel configure and the
event Channel event.
- Parameters:
- configure - The Channel configuration events should be sent down. Can be null if no configuration is required.
- event - The Channel events will be notified down when the button is pressed. Can be null if events are going to be ignored.
ActiveList
public ActiveList(ChannelInput configure,
ChannelOutput event,
int rows)
- Constructs a List with the configuration Channel configure and the
event Channel event with the specified number of visible lines.
- Parameters:
- configure - The Channel configuration events should be sent down. Can be null if no configuration is required.
- event - The Channel events will be notified down when the button is pressed. Can be null if events are going to be ignored.
- rows - the number of items to show.
ActiveList
public ActiveList(ChannelInput configure,
ChannelOutput event,
int rows,
boolean multipleMode)
- Constructs a List with the configuration Channel configure and the
event Channel event with the specified number of visible lines. If
the value of multipleMode is true, then the user can select multiple
items from the list. If it is false, only one item at a time can be
selected.
- Parameters:
- configure - The Channel configuration events should be sent down. Can be null if no configuration is required.
- event - The Channel events will be notified down when the button is pressed. Can be null if events are going to be ignored.
- rows - the number of items to show.
- multipleMode - if true, then multiple selections are allowed; otherwise, only one item can be selected at a time.
addComponentEventChannel
public void addComponentEventChannel(ChannelOutput componentEvent)
- Add a new Channel to the Component which will be used to notify that
a ComponentEvent has occurred on the component. This should be used
instead of registering a ComponentListener with the component. It is
possible to add more than one Channel by calling this method multiple times
If the reference passed is null no action will be taken. Otherwise
a new ComponentEventHanlder will be generated for the Channel so that
each Channel operates independently of the others.
NOTE: This method must be called before this process is run otherwise
it will not function correctly.
- Parameters:
- componentEvent - The channel to send component events down. If the Channel
is to be shared with other events it should be a Many2OneChannel.
- See Also:
- ComponentEventHandler
addFocusEventChannel
public void addFocusEventChannel(ChannelOutput focusEvent)
- Add a new Channel to the Component which will be used to notify that
a FocusEvent has occurred on the component. This should be used
instead of registering a FocusListener with the component. It is
possible to add more than one Channel by calling this method multiple times
If the reference passed is null no action will be taken. Otherwise
a new FocusEventHanlder will be generated for the Channel so that
each Channel operates independently of the others.
NOTE: This method must be called before this process is run otherwise
it will not function correctly.
- Parameters:
- focusEvent - The channel to send focus events down. If the Channel
is to be shared with other events it should be a Many2OneChannel.
- See Also:
- FocusEventHandler
addKeyEventChannel
public void addKeyEventChannel(ChannelOutput keyEvent)
- Add a new Channel to the Component which will be used to notify that
a KeyEvent has occurred on the component. This should be used
instead of registering a KeyListener with the component. It is
possible to add more than one Channel by calling this method multiple times
If the reference passed is null no action will be taken. Otherwise
a new KeyEventHanlder will be generated for the Channel so that
each Channel operates independently of the others.
NOTE: This method must be called before this process is run otherwise
it will not function correctly.
- Parameters:
- keyEvent - The channel to send key events down. If the Channel
is to be shared with other events it should be a Many2OneChannel.
- See Also:
- KeyEventHandler
addMouseEventChannel
public void addMouseEventChannel(ChannelOutput mouseEvent)
- Add a new Channel to the Component which will be used to notify that
a MouseEvent has occurred on the component. This should be used
instead of registering a MouseListener with the component. It is
possible to add more than one Channel by calling this method multiple times
If the reference passed is null no action will be taken. Otherwise
a new MouseEventHanlder will be generated for the Channel so that
each Channel operates independently of the others.
NOTE: This method must be called before this process is run otherwise
it will not function correctly.
- Parameters:
- mouseEvent - The channel to send key events down. If the Channel
is to be shared with other events it should be a Many2OneChannel.
- See Also:
- MouseEventHandler
addMouseMotionEventChannel
public void addMouseMotionEventChannel(ChannelOutput mouseMotionEvent)
- Add a new Channel to the Component which will be used to notify that
a MouseMotionEvent has occurred on the component. This should be used
instead of registering a MouseMotionListener with the component. It is
possible to add more than one Channel by calling this method multiple times
If the reference passed is null no action will be taken. Otherwise
a new MouseMotionEventHanlder will be generated for the Channel so that
each Channel operates independently of the others.
NOTE: This method must be called before this process is run otherwise
it will not function correctly.
- Parameters:
- mouseMotionEvent - The channel to send key events down. If the Channel
is to be shared with other events it should be a Many2OneChannel.
- See Also:
- MouseMotionEventHandler
run
public void run()
- The main body of this process.
All Packages Class Hierarchy This Package Previous Next Index