Class ArrowKeySensor
- java.lang.Object
-
- ptolemy.kernel.util.NamedObj
-
- ptolemy.kernel.InstantiableNamedObj
-
- ptolemy.kernel.Entity<T>
-
- ptolemy.kernel.ComponentEntity<T>
-
- ptolemy.actor.AtomicActor<TypedIOPort>
-
- ptolemy.actor.TypedAtomicActor
-
- ptolemy.actor.lib.gui.ArrowKeySensor
-
- All Implemented Interfaces:
java.lang.Cloneable
,Actor
,Executable
,FiringsRecordable
,Initializable
,TypedActor
,Changeable
,Debuggable
,DebugListener
,Derivable
,Instantiable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
- Direct Known Subclasses:
ArrowKeyProbe
public class ArrowKeySensor extends TypedAtomicActor
Detect when the user presses or releases an arrow key and produce an integer on the corresponding output.When this actor is preinitialized, it pops up a new JFrame window on the desktop, usually in the upper left hand corner of the screen. When this JFrame has the focus (such as when it has been clicked on) it is capable of sensing keystrokes.
This actor senses only the four non-numeric-pad arrow-key keystrokes. This actor responds to key releases as well as key presses. Upon each key press, the integer 1 is broadcast from the corresponding output. Upon each key release, the integer 0 is output.
This actor contains a private inner class which generated the JFrame. The frame sets up call-backs which react to the keystrokes. When called, these call the director's fireAt() method with the current time as argument. This causes the director to call fire() on the actor with the first valid time equal to the current time or later. The actor then broadcasts tokens from one or both outputs depending on which keystroke(s) have occurred since the actor was last fired. On key pressed a one will be send, on key release a zero will be send.
- Since:
- Ptolemy II 2.0
- Version:
- $Id$
- Author:
- Winthrop Williams, Contributor: Bert Rodiers
- Pt.AcceptedRating:
- Red (winthrop)
- Pt.ProposedRating:
- Red (winthrop)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
_downKeyPressed
A flag indicating if the down arrow key has been pressed since the last firing of the actor.protected boolean
_downKeyReleased
A flag indicating if the down arrow key has been released since the last firing of the actor.protected boolean
_leftKeyPressed
A flag indicating if the left arrow key has been released since the last firing of the actor.protected boolean
_leftKeyReleased
A flag indicating if the left arrow key has been released since the last firing of the actor.protected boolean
_rightKeyPressed
A flag indicating if the right arrow key has been pressed since the last firing of the actor.protected boolean
_rightKeyReleased
A flag indicating if the right arrow key has been released since the last firing of the actor.protected boolean
_upKeyPressed
A flag indicating if the up arrow key has been pressed since the last firing of the actor.protected boolean
_upKeyReleased
A flag indicating if the up arrow key has been released since the last firing of the actor.TypedIOPort
downArrow
Output port, which has type IntToken.TypedIOPort
leftArrow
Output port, which has type IntToken.TypedIOPort
rightArrow
Output port, which has type IntToken.TypedIOPort
upArrow
Output port, which has type IntToken.-
Fields inherited from class ptolemy.actor.TypedAtomicActor
_typesValid
-
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
-
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
-
-
Constructor Summary
Constructors Constructor Description ArrowKeySensor(CompositeEntity container, java.lang.String name)
Construct an actor with the given container and name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
fire()
Broadcast the integer value 1 for each key pressed and 0 for each released.void
initialize()
Create the JFrame window capable of detecting the key-presses.void
wrapup()
Dispose of the JFrame, causing the window to vanish.-
Methods inherited from class ptolemy.actor.TypedAtomicActor
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
-
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate
-
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
-
Methods inherited from class ptolemy.kernel.Entity
_addPort, _description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, 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, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeChanged, attributeDeleted, attributeList, attributeList, decorators, 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, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, 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.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
-
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
-
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
-
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, preinitialize, removeInitializable
-
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
-
-
-
-
Field Detail
-
upArrow
public TypedIOPort upArrow
Output port, which has type IntToken.
-
leftArrow
public TypedIOPort leftArrow
Output port, which has type IntToken.
-
rightArrow
public TypedIOPort rightArrow
Output port, which has type IntToken.
-
downArrow
public TypedIOPort downArrow
Output port, which has type IntToken.
-
_downKeyPressed
protected boolean _downKeyPressed
A flag indicating if the down arrow key has been pressed since the last firing of the actor. Pressed and Released are are not allowed to both be true for the same key (Though both may be false). The most recent action (press or release) takes precedence.
-
_downKeyReleased
protected boolean _downKeyReleased
A flag indicating if the down arrow key has been released since the last firing of the actor.
-
_leftKeyPressed
protected boolean _leftKeyPressed
A flag indicating if the left arrow key has been released since the last firing of the actor.
-
_leftKeyReleased
protected boolean _leftKeyReleased
A flag indicating if the left arrow key has been released since the last firing of the actor.
-
_rightKeyPressed
protected boolean _rightKeyPressed
A flag indicating if the right arrow key has been pressed since the last firing of the actor.
-
_rightKeyReleased
protected boolean _rightKeyReleased
A flag indicating if the right arrow key has been released since the last firing of the actor.
-
_upKeyPressed
protected boolean _upKeyPressed
A flag indicating if the up arrow key has been pressed since the last firing of the actor.
-
_upKeyReleased
protected boolean _upKeyReleased
A flag indicating if the up arrow key has been released since the last firing of the actor.
-
-
Constructor Detail
-
ArrowKeySensor
public ArrowKeySensor(CompositeEntity container, java.lang.String name) throws NameDuplicationException, IllegalActionException
Construct an actor with the given container and name.- Parameters:
container
- The container.name
- The name of this actor.- Throws:
IllegalActionException
- If the actor cannot be contained by the proposed container.NameDuplicationException
- If the container already has an actor with this name.
-
-
Method Detail
-
fire
public void fire() throws IllegalActionException
Broadcast the integer value 1 for each key pressed and 0 for each released.- Specified by:
fire
in interfaceExecutable
- Overrides:
fire
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- Not thrown in this base class.
-
initialize
public void initialize() throws IllegalActionException
Create the JFrame window capable of detecting the key-presses.- Specified by:
initialize
in interfaceInitializable
- Overrides:
initialize
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- If a derived class throws it.
-
wrapup
public void wrapup() throws IllegalActionException
Dispose of the JFrame, causing the window to vanish.- Specified by:
wrapup
in interfaceInitializable
- Overrides:
wrapup
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- Not thrown in this base class.
-
-