All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class jcsp.awt.ActiveTextArea

java.lang.Object
   |
   +----java.awt.Component
           |
           +----java.awt.TextComponent
                   |
                   +----java.awt.TextArea
                           |
                           +----jcsp.awt.ActiveTextArea

public class ActiveTextArea
extends TextArea
implements CSProcess

Process Diagram

External View

             __________________
  configure |                  | event
 ----->-----|  ActiveTextArea  |--->---
            |__________________|
 

Internal View

             ________________________________________
            |  ____________      __________________  |
  configure | |            |    |                  | | event
 ----->-------|  Configure |    | TextEventHandler |----->---
            | |____________|    |__________________| |
            |                                        |
            |                         ActiveTextArea |
            |________________________________________|
 

Description

An ActiveTextArea is a sub class of TextArea which uses Channels for event notification and configuration.

If the event Channel is not a null reference an new TextEventHandler is created with the Channel and is registered as TextListener with the ActiveTextArea and has its textValueChanged() method invoked when TextEvents are generated. Any events generated when the TextEventHandler is blocked writing to the event Channel are ignored so that the main Java Event Thread is not blocked. The output from the TextEventHanlder is connected to the event Channel causing an Object to be sent down the Channel when the TextArea is changed.

It is also possible to register Channels to be used to notify the occurrence of other types of Event that the TextArea generates. This can be done by calling one of the addXXXXEventChannel() methods.

To configure the TextArea 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 text in the TextArea to the String
Boolean
  1. If the Boolean Object refers to the Boolean.TRUE instance the button is made active
  2. If the Boolean Object refers to the Boolean.FALSE instance the button is made inactive
  3. If the Boolean Object refers to any other Boolean instance the message is discarded
Output Channels
event String The text in the ActiveTextArea

Example

 import java.awt.*;
 import jcsp.lang.*;
 import jcsp.awt.*;
 public class TextAreaExample extends Frame {
   public TextAreaExample() {
     super("TextArea Example");
     final Channel close = new One2OneChannel();
     ActiveTextArea t = new ActiveTextArea(null, close, "");
     add(t);
     setVisible(true);
     new Parallel(new CSProcess[] {
       t,
       new CSProcess() {
         public void run() {
           String s = (String)close.read();
           is (s.equals("close")) {
             setVisible(false);
             System.exit(0);
           }
         }
       }
     }).run();
   }
   public static void main(String argv[]) {
     new TextAreaExample();
   }
 }
 

Author:
P.D.Austin
See Also:
TextEventHandler

Constructor Index

 o ActiveTextArea()
Constructs a new TextArea with no initial value, no configuration Channel and no event Channel.
 o ActiveTextArea(ChannelInput, ChannelOutput)
Constructs a new TextArea with no initial value, configuration Channel configure and the event Channel event.
 o ActiveTextArea(ChannelInput, ChannelOutput, String)
Constructs a new TextArea with the initial value s, configuration Channel configure and the event Channel event.
 o ActiveTextArea(ChannelInput, ChannelOutput, String, int, int)
Constructs a new TextArea with the initial value s, and the specified dimensions, configuration Channel configure and the event Channel event.
 o ActiveTextArea(ChannelInput, ChannelOutput, String, int, int, int)
Constructs a new TextArea with the initial value s, and the specified dimensions, the scrollbars to display configuration Channel configure and the event Channel event.
 o ActiveTextArea(String)
Constructs a new TextArea with the initial value s, no configuration Channel and no event Channel.
 o ActiveTextArea(String, int, int)
Constructs a new TextArea with the initial value s, and the specified dimensions, no configuration Channel and no event Channel.
 o ActiveTextArea(String, int, int, int)
Constructs a new TextArea with the initial value s, and the specified dimensions, the scrollbars to display no configuration Channel and no event Channel.

Method Index

 o addComponentEventChannel(ChannelOutput)
Add a new Channel to the Component which will be used to notify that a ComponentEvent has occurred on the component.
 o addFocusEventChannel(ChannelOutput)
Add a new Channel to the Component which will be used to notify that a FocusEvent has occurred on the component.
 o addKeyEventChannel(ChannelOutput)
Add a new Channel to the Component which will be used to notify that a KeyEvent has occurred on the component.
 o addMouseEventChannel(ChannelOutput)
Add a new Channel to the Component which will be used to notify that a MouseEvent has occurred on the component.
 o addMouseMotionEventChannel(ChannelOutput)
Add a new Channel to the Component which will be used to notify that a MouseMotionEvent has occurred on the component.
 o run()
The main body of this process.

Constructors

 o ActiveTextArea
 public ActiveTextArea()
Constructs a new TextArea with no initial value, no configuration Channel and no event Channel.

 o ActiveTextArea
 public ActiveTextArea(String s)
Constructs a new TextArea with the initial value s, no configuration Channel and no event Channel.

Parameters:
s - The inital value shown in the TextArea
 o ActiveTextArea
 public ActiveTextArea(String s,
                       int width,
                       int height)
Constructs a new TextArea with the initial value s, and the specified dimensions, no configuration Channel and no event Channel.

Parameters:
s - The inital value shown in the TextArea
width - The width in number of characters
height - The height in number of characters
 o ActiveTextArea
 public ActiveTextArea(String s,
                       int width,
                       int height,
                       int scrollbars)
Constructs a new TextArea with the initial value s, and the specified dimensions, the scrollbars to display no configuration Channel and no event Channel.

Parameters:
s - The inital value shown in the TextArea
width - The width in number of characters
height - The height in number of characters
scrollbars - A value indicating which scrollbars to display
 o ActiveTextArea
 public ActiveTextArea(ChannelInput configure,
                       ChannelOutput event)
Constructs a new TextArea with no initial value, 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.
 o ActiveTextArea
 public ActiveTextArea(ChannelInput configure,
                       ChannelOutput event,
                       String s)
Constructs a new TextArea with the initial value s, 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.
s - The inital value shown in the TextArea
 o ActiveTextArea
 public ActiveTextArea(ChannelInput configure,
                       ChannelOutput event,
                       String s,
                       int width,
                       int height)
Constructs a new TextArea with the initial value s, and the specified dimensions, 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.
s - The inital value shown in the TextArea
width - The width in number of characters
height - The height in number of characters
 o ActiveTextArea
 public ActiveTextArea(ChannelInput configure,
                       ChannelOutput event,
                       String s,
                       int width,
                       int height,
                       int scrollbars)
Constructs a new TextArea with the initial value s, and the specified dimensions, the scrollbars to display 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.
s - The inital value shown in the TextArea
width - The width in number of characters
height - The height in number of characters
scrollbars - A value indicating which scrollbars to display

Methods

 o 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
 o 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
 o 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
 o 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
 o 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
 o run
 public void run()
The main body of this process.


All Packages  Class Hierarchy  This Package  Previous  Next  Index