ptolemy.domains.ptera.lib
Class ReceiveInput

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.domains.modal.kernel.State
                      extended by ptolemy.domains.ptera.kernel.Event
                          extended by ptolemy.domains.ptera.lib.ReceiveInput
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Initializable, ConfigurableEntity, TimeAdvanceEvent, Changeable, Configurable, Debuggable, DebugListener, Derivable, DropTargetHandler, Flowable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class ReceiveInput
extends Event
implements TimeAdvanceEvent

An event that receives user input and allows model time to be advanced. The user input can be key presses or mouse presses. A tableau is used to receive the input. The timeAdvance parameter defines the amount of model time that is advanced at the same time as the user sends input. For example, if the current model time is 5 and timeAdvance parameter is 1 when this event is fired, then the user input is considered to be received at model time 6. The events scheduled to occur between time 5 and 6 occur in the background, but the events scheduled to occur after 6 would be delayed until the user input is actually received. Whether the events scheduled exactly at time 5 or 6 are processed while the user input is being waited for depends on the LIFO or FIFO policy of the model.

Since:
Ptolemy II 8.0
Version:
$Id: ReceiveInput.java 57044 2010-01-27 22:41:05Z cxh $
Author:
Thomas Huining Feng
See Also:
Serialized Form
Accepted Rating:
Red (tfeng)
Proposed Rating:
Yellow (tfeng)

Nested Class Summary
private  class ReceiveInput.InputListener
          The input listener to listen to the key and mouse input.
 
Nested classes/interfaces inherited from class ptolemy.domains.ptera.kernel.Event
Event.EventParameter, Event.RefiringData
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private  java.util.List<ReceiveInput.InputListener> _inputListeners
          The list of input listeners.
 StringParameter acceptableComponentType
          The name of the class of the component that can accept user input, such as "java.awt.Button", or empty.
 StringParameter acceptableKeyPattern
          A string pattern in the Java regular expression used to match acceptable key input.
 StringParameter componentType
          Class name of the component that actually receives the user input, which is automatically updated after the input is received.
 StringParameter keyPressText
          The text of the key input, which is automatically updated after the input is received.
 Parameter mousePressLocation
          Screen location of the mouse press, which is automatically updated after the input is received.
 Parameter receiveKeyPress
          A Boolean parameter to determine whether key presses are accepted.
 Parameter receiveMousePress
          A Boolean parameter to determine whether mouse presses are accepted.
 StringParameter referredTableau
          The parameter that contains the name of the TableauParameter to be used.
 Parameter timeAdvance
          The amount (in double) of model time advancement.
 
Fields inherited from class ptolemy.domains.ptera.kernel.Event
actions, isEndingEvent, isFinalEvent, isInitialEvent, parameters
 
Fields inherited from class ptolemy.domains.modal.kernel.State
incomingPort, isFinalState, isInitialState, outgoingPort, refinementName, saveRefinementsInConfigurer
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Constructor Summary
ReceiveInput(CompositeEntity container, java.lang.String name)
          Construct an event with the given name contained by the specified composite entity.
 
Method Summary
private  void _addListener(java.awt.Component component, ReceiveInput.InputListener listener)
          Add the listener to the component and all components contained by that component.
private  void _removeListener(java.awt.Component component, ReceiveInput.InputListener listener)
          Remove the listener from the component and all components contained by that component.
 java.lang.Object clone(Workspace workspace)
          Clone the state into the specified workspace.
 Event.RefiringData fire(Token arguments)
          Process this event with the given arguments.
 java.lang.String getTimeAdvanceText()
          Return a string that represents the amount of model time advancement.
 Event.RefiringData refire(Token arguments, Event.RefiringData data)
          Continue the processing of this event with the given arguments from the previous fire() or refire().
 void stop()
          Request that the event cease execution altogether.
 
Methods inherited from class ptolemy.domains.ptera.kernel.Event
_getParserScope, _isActiveRefinement, addInitializable, attributeChanged, getController, initialize, isEndingEvent, isFinalEvent, isInitialEvent, preinitialize, removeInitializable, scheduleEvents, setContainer, wrapup
 
Methods inherited from class ptolemy.domains.modal.kernel.State
_exportMoMLContents, configure, dropObject, getConfigurer, getConfigureSource, getConfigureText, getIncomingPort, getObjectInRefinement, getOutgoingPort, getRefinement, nonpreemptiveTransitionList, preemptiveTransitionList
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_addPort, _adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, newPort, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_description, _removePort, _validateSettables, connectedPortList, connectedPorts, connectionsChanged, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, attributeTypeChanged, clone, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getDisplayName, getFullName, getName, getName
 

Field Detail

acceptableComponentType

public StringParameter acceptableComponentType
The name of the class of the component that can accept user input, such as "java.awt.Button", or empty.


acceptableKeyPattern

public StringParameter acceptableKeyPattern
A string pattern in the Java regular expression used to match acceptable key input.


componentType

public StringParameter componentType
Class name of the component that actually receives the user input, which is automatically updated after the input is received.


keyPressText

public StringParameter keyPressText
The text of the key input, which is automatically updated after the input is received.


mousePressLocation

public Parameter mousePressLocation
Screen location of the mouse press, which is automatically updated after the input is received.


receiveKeyPress

public Parameter receiveKeyPress
A Boolean parameter to determine whether key presses are accepted.


receiveMousePress

public Parameter receiveMousePress
A Boolean parameter to determine whether mouse presses are accepted.


referredTableau

public StringParameter referredTableau
The parameter that contains the name of the TableauParameter to be used. It cannot be empty.


timeAdvance

public Parameter timeAdvance
The amount (in double) of model time advancement.


_inputListeners

private java.util.List<ReceiveInput.InputListener> _inputListeners
The list of input listeners. The size can be greater than 1 when this event is processed multiple times and the previous processing has not finished.

Constructor Detail

ReceiveInput

public ReceiveInput(CompositeEntity container,
                    java.lang.String name)
             throws IllegalActionException,
                    NameDuplicationException
Construct an event with the given name contained by the specified composite entity. The container argument must not be null, or a NullPointerException will be thrown. This event will use the workspace of the container for synchronization and version counts. If the name argument is null, then the name is set to the empty string. Increment the version of the workspace. This constructor write-synchronizes on the workspace.

Parameters:
container - The container.
name - The name of the state.
Throws:
IllegalActionException - If the state cannot be contained by the proposed container.
NameDuplicationException - If the name coincides with that of an entity already in the container.
Method Detail

clone

public java.lang.Object clone(Workspace workspace)
                       throws java.lang.CloneNotSupportedException
Clone the state into the specified workspace. This calls the base class and then sets the attribute and port public members to refer to the attributes and ports of the new state.

Overrides:
clone in class Event
Parameters:
workspace - The workspace for the new event.
Returns:
A new event.
Throws:
java.lang.CloneNotSupportedException - If a derived class contains an attribute that cannot be cloned.
See Also:
NamedObj.exportMoML(Writer, int, String), NamedObj.setDeferringChangeRequests(boolean)

fire

public Event.RefiringData fire(Token arguments)
                        throws IllegalActionException
Process this event with the given arguments. The number of arguments provided must be equal to the number of formal parameters defined for this event, and their types must match. The actions of this event are executed.

Overrides:
fire in class Event
Parameters:
arguments - The arguments used to process this event, which must be either an ArrayToken or a RecordToken.
Returns:
A refiring data structure that contains a non-negative double number if refire() should be called after that amount of model time, or null if refire() need not be called.
Throws:
IllegalActionException - If the number of the arguments or their types do not match, the actions cannot be executed, or any expression (such as guards and arguments to the next events) cannot be evaluated.
See Also:
Event.refire(Token, RefiringData)

getTimeAdvanceText

public java.lang.String getTimeAdvanceText()
Return a string that represents the amount of model time advancement.

Specified by:
getTimeAdvanceText in interface TimeAdvanceEvent
Returns:
The string.

refire

public Event.RefiringData refire(Token arguments,
                                 Event.RefiringData data)
                          throws IllegalActionException
Continue the processing of this event with the given arguments from the previous fire() or refire(). The number of arguments provided must be equal to the number of formal parameters defined for this event, and their types must match. The actions of this event are executed.

Overrides:
refire in class Event
Parameters:
arguments - The arguments used to process this event, which must be either an ArrayToken or a RecordToken.
data - The refiring data structure returned by the previous fire() or refire().
Returns:
A refiring data structure that contains a non-negative double number if refire() should be called after that amount of model time, or null if refire() need not be called.
Throws:
IllegalActionException - If the number of the arguments or their types do not match, the actions cannot be executed, or any expression (such as guards and arguments to the next events) cannot be evaluated.
See Also:
fire(Token)

stop

public void stop()
Request that the event cease execution altogether.

Overrides:
stop in class Event

_addListener

private void _addListener(java.awt.Component component,
                          ReceiveInput.InputListener listener)
Add the listener to the component and all components contained by that component.

Parameters:
component - The component.
listener - The listener.

_removeListener

private void _removeListener(java.awt.Component component,
                             ReceiveInput.InputListener listener)
Remove the listener from the component and all components contained by that component.

Parameters:
component - The component.
listener - The listener.