|
CSP for Java (JCSP) 1.1-rc4 |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.awt.Component
java.awt.Container
java.awt.Window
java.awt.Dialog
java.awt.FileDialog
org.jcsp.awt.ActiveFileDialog
public class ActiveFileDialog
java.awt.FileDialog
with a channel interface.
All channels are optional. The configure and event channels are settable from a constructor. The event channel delivers directory and file names (see next paragraph). Other event channels can be added to notify the occurrence of any other events the component generates (by calling the appropriate addXXXEventChannel method before the process is run). Messages can be sent down the configure channel at any time to configure the component. See the table below for details.
The ActiveFileDialog is made visible by sending a Boolean.TRUE down its configure channel. A modal dialogue takes place to select a file and the selected directory and file names are output down its event channel.
All channels are managed by independent internal handler processes. It is, therefore, safe for a serial application process both to service an event channel and configure the component – no deadlock can occur.
IMPORTANT: it is essential that event channels from this process are always serviced – otherwise the Java Event Thread will be blocked and the GUI will stop responding. A simple way to guarantee this is to use channels configured with overwriting buffers. For example:
final One2OneChannel myFileDialogConfigure = Channel.one2one (); final One2OneChannel myFileDialogEvent = Channel.one2one (new OverWriteOldestBuffer (n)); final ActiveFileDialog myFileDialog = new ActiveFileDialog (myFileDialogConfigure.in (), myFileDialogEvent.out ());This will ensure that the Java Event Thread will never be blocked. Slow or inattentive readers may miss rapidly generated events, but the n most recent events will always be available.
Input Channels | ||
---|---|---|
configure | String | The start directory for the fileDialog |
Boolean |
|
|
ActiveFileDialog.Configure | Invoke the user-defined Configure.configure method on the activeFileDialog. | |
Output Channels | ||
event | String, String | The directory and file names generated by the fileDialog – these may be null |
windowEvent | WindowEvent | See the addWindowEventChannel method. |
containerEvent | ContainerEvent | See the addContainerEventChannel method. |
componentEvent | ComponentEvent | See the addComponentEventChannel method. |
focusEvent | FocusEvent | See the addFocusEventChannel method. |
keyEvent | KeyEvent | See the addKeyEventChannel method. |
mouseEvent | MouseEvent | See the addMouseEventChannel method. |
mouseMotionEvent | MouseEvent | See the addMouseMotionEventChannel method. |
import java.awt.*; import org.jcsp.lang.*; import org.jcsp.util.*; import org.jcsp.awt.*; public class ActiveFileDialogExample { public static void main (String argv[]) { final Frame root = new Frame (); final One2OneChannel configure = Channel.one2one (); final One2OneChannel event = Channel.one2one (new OverWriteOldestBuffer (10)); final ActiveFileDialog fileDialog = new ActiveFileDialog (configure.in (), event.out (), root, "ActiveFileDialog Example"); new Parallel ( new CSProcess[] { fileDialog, new CSProcess () { public void run () { String dir = "."; // start directory for the file dialogue String file = ""; while (file != null) { configure.out ().write (dir); configure.out ().write (Boolean.TRUE); dir = (String) event.in ().read (); file = (String) event.in ().read (); if (file != null) System.out.println ("Chosen file = `" + dir + file + "'"); } System.exit (0); } } } ).run (); } }
FileDialog
,
WindowEvent
,
ContainerEvent
,
ComponentEvent
,
FocusEvent
,
KeyEvent
,
MouseEvent
,
OverWriteOldestBuffer
,
Serialized FormNested Class Summary | |
---|---|
static interface |
ActiveFileDialog.Configure
This enables general configuration of this component. |
Nested classes/interfaces inherited from class java.awt.Dialog |
---|
Dialog.AccessibleAWTDialog |
Nested classes/interfaces inherited from class java.awt.Window |
---|
Window.AccessibleAWTWindow |
Nested classes/interfaces inherited from class java.awt.Container |
---|
Container.AccessibleAWTContainer |
Nested classes/interfaces inherited from class java.awt.Component |
---|
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy |
Field Summary |
---|
Fields inherited from class java.awt.FileDialog |
---|
LOAD, SAVE |
Fields inherited from class java.awt.Component |
---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
Fields inherited from interface java.awt.image.ImageObserver |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
Constructor Summary | |
---|---|
ActiveFileDialog(ChannelInput configure,
ChannelOutput event,
Frame parent)
Constructs a new ActiveFileDialog with a blank title for loading a file. |
|
ActiveFileDialog(ChannelInput configure,
ChannelOutput event,
Frame parent,
int mode)
Constructs a new ActiveFileDialog with a blank title. |
|
ActiveFileDialog(ChannelInput configure,
ChannelOutput event,
Frame parent,
String title)
Constructs a new ActiveFileDialog for loading a file. |
|
ActiveFileDialog(ChannelInput configure,
ChannelOutput event,
Frame parent,
String title,
int mode)
Constructs a new ActiveFileDialog. |
|
ActiveFileDialog(Frame parent)
Constructs a new ActiveDialog with a blank title for loading a file and with no configuration or event channels. |
|
ActiveFileDialog(Frame parent,
int mode)
Constructs a new ActiveFileDialog with a blank title and no configuration or event channels. |
|
ActiveFileDialog(Frame parent,
String title)
Constructs a new ActiveFileDialog for loading a file and no configuration or event channels. |
|
ActiveFileDialog(Frame parent,
String title,
int mode)
Constructs a new ActiveFileDialog with no configuration or event channels. |
Method Summary | |
---|---|
void |
addComponentEventChannel(ChannelOutput componentEvent)
Add a new channel to this component that will be used to notify that a ComponentEvent has occurred. |
void |
addContainerEventChannel(ChannelOutput containerEvent)
Add a new channel to this component that will be used to notify that a ContainerEvent has occurred. |
void |
addFocusEventChannel(ChannelOutput focusEvent)
Add a new channel to this component that will be used to notify that a FocusEvent has occurred. |
void |
addKeyEventChannel(ChannelOutput keyEvent)
Add a new channel to this component that will be used to notify that a KeyEvent has occurred. |
void |
addMouseEventChannel(ChannelOutput mouseEvent)
Add a new channel to this component that will be used to notify that a MouseEvent has occurred. |
void |
addMouseMotionEventChannel(ChannelOutput mouseMotionEvent)
Add a new channel to this component that will be used to notify that a MouseMotionEvent has occurred. |
void |
addWindowEventChannel(ChannelOutput windowEvent)
Add a new channel to this component that will be used to notify that a WindowEvent has occurred. |
void |
run()
The main body of this process. |
void |
setConfigureChannel(ChannelInput configure)
Sets the configuration channel for this ActiveFileDialog. |
Methods inherited from class java.awt.FileDialog |
---|
addNotify, getDirectory, getFile, getFilenameFilter, getMode, paramString, setDirectory, setFile, setFilenameFilter, setMode |
Methods inherited from class java.awt.Dialog |
---|
getAccessibleContext, getTitle, hide, isModal, isResizable, isUndecorated, setModal, setResizable, setTitle, setUndecorated, show |
Methods inherited from class java.lang.Object |
---|
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public ActiveFileDialog(Frame parent)
parent
- the parent frame for the fileDialog.public ActiveFileDialog(Frame parent, int mode)
parent
- the parent frame for the fileDialog.mode
- java.awt.FileDialog.LOAD or java.awt.FileDialog.SAVE.public ActiveFileDialog(Frame parent, String title)
parent
- the parent frame for the fileDialog.title
- the title of the fileDialog.public ActiveFileDialog(Frame parent, String title, int mode)
parent
- the parent frame for the fileDialog.title
- the title of the fileDialog.mode
- java.awt.FileDialog.LOAD or java.awt.FileDialog.SAVE.public ActiveFileDialog(ChannelInput configure, ChannelOutput event, Frame parent)
configure
- the channel for configuration events
– can be null if no configuration is required.event
- the directory and file names will be output whenever selected
– can be null if no notification is required.parent
- the parent frame for the fileDialog.public ActiveFileDialog(ChannelInput configure, ChannelOutput event, Frame parent, int mode)
configure
- the channel for configuration events
– can be null if no configuration is required.event
- the directory and file names will be output whenever selected
– can be null if no notification is required.parent
- the parent frame for the fileDialog.mode
- java.awt.FileDialog.LOAD or java.awt.FileDialog.SAVE.public ActiveFileDialog(ChannelInput configure, ChannelOutput event, Frame parent, String title)
configure
- the channel for configuration events
– can be null if no configuration is required.event
- the directory and file names will be output whenever selected
– can be null if no notification is required.parent
- the parent frame for the fileDialog.title
- the title of the fileDialog.public ActiveFileDialog(ChannelInput configure, ChannelOutput event, Frame parent, String title, int mode)
configure
- the channel for configuration events
– can be null if no configuration is required.event
- the directory and file names will be output whenever selected
– can be null if no notification is required.parent
- the parent frame for the fileDialog.title
- the title of the fileDialog.mode
- java.awt.FileDialog.LOAD or java.awt.FileDialog.SAVE.
Method Detail |
---|
public void setConfigureChannel(ChannelInput configure)
configure
- the channel for configuration events
– can be null if no configuration is required.public void addWindowEventChannel(ChannelOutput windowEvent)
NOTE: This method must be called before this process is run.
windowEvent
- the channel down which to send ContainerEvents.public void addContainerEventChannel(ChannelOutput containerEvent)
NOTE: This method must be called before this process is run.
containerEvent
- the channel down which to send ContainerEvents.public void addComponentEventChannel(ChannelOutput componentEvent)
NOTE: This method must be called before this process is run.
componentEvent
- the channel down which to send ComponentEvents.public void addFocusEventChannel(ChannelOutput focusEvent)
NOTE: This method must be called before this process is run.
focusEvent
- the channel down which to send FocusEvents.public void addKeyEventChannel(ChannelOutput keyEvent)
NOTE: This method must be called before this process is run.
keyEvent
- the channel down which to send KeyEvents.public void addMouseEventChannel(ChannelOutput mouseEvent)
NOTE: This method must be called before this process is run.
mouseEvent
- the channel down which to send MouseEvents.public void addMouseMotionEventChannel(ChannelOutput mouseMotionEvent)
NOTE: This method must be called before this process is run.
mouseMotionEvent
- the channel down which to send MouseMotionEvents.public void run()
run
in interface CSProcess
|
CSP for Java (JCSP) 1.1-rc4 |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |