Class Display
- java.lang.Object
-
- All Implemented Interfaces:
java.lang.Cloneable
,Actor
,Executable
,FiringsRecordable
,Initializable
,PortablePlaceable
,TypedActor
,Changeable
,Debuggable
,DebugListener
,Derivable
,Instantiable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
- Direct Known Subclasses:
DisplayAll
,NonStrictDisplay
,PetriNetDisplay
,TimedDisplay
public class Display extends TypedAtomicActor implements PortablePlaceable
Display the values of the tokens arriving on the input channels in a text area on the screen. Each input token is written on a separate line. The input type can be of any type. If the input happens to be a StringToken, then the surrounding quotation marks are stripped before printing the value of the token. Thus, string-valued tokens can be used to generate arbitrary textual output, at one token per line. Tokens are read from the input only in the postfire() method, to allow them to settle in domains where they converge to a fixed point.
This actor accepts any type of data on its input port, therefore it doesn't declare a type, but lets the type resolution algorithm find the least fixed point. If backward type inference is enabled, and no input type has been declared, the input is constrained to be equal to
BaseType.GENERAL
. This will result in upstream ports resolving to the most general type rather than the most specific.This actor has a suppressBlankLines parameter, whose default value is false. If this parameter is configured to be true, this actor does not put a blank line in the display.
Note that because of complexities in Swing, if you resize the display window, then, unlike the plotters, the new size will not be persistent. That is, if you save the model and then re-open it, the new size is forgotten. To control the size, you should set the rowsDisplayed and columnsDisplayed parameters.
Note that this actor internally uses JTextArea, a Java Swing object that is known to consume large amounts of memory. It is not advisable to use this actor to log large output streams.
- Since:
- Ptolemy II 1.0
- Version:
- $Id$
- Author:
- Yuhong Xiong, Edward A. Lee Contributors: Ishwinder Singh
- Pt.AcceptedRating:
- Yellow (vogel)
- Pt.ProposedRating:
- Yellow (yuhong)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
_initialized
Indicator that the display window has been opened.protected boolean
_isSuppressBlankLines
The flag indicating whether the blank lines will be suppressed.Parameter
columnsDisplayed
The horizontal size of the display, in columns.TypedIOPort
input
The input port, which is a multiport.Parameter
rowsDisplayed
The vertical size of the display, in rows.Parameter
suppressBlankLines
The flag indicating whether this display actor suppress blank lines.StringParameter
title
The title to put on top.-
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 Display(CompositeEntity container, java.lang.String name)
Construct an actor with an input multiport of type GENERAL.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.Set<Inequality>
_customTypeConstraints()
Set the input port greater than or equal toBaseType.GENERAL
in case backward type inference is enabled and the input port has no type declared.protected DisplayInterface
_getImplementation()
Get the right instance of the implementation depending upon the of the dependency specified through dependency injection.protected java.lang.String
_getInputString(int i)
Return a string describing the input on channel i.protected void
_openWindow()
Open the display window if it has not been opened.void
attributeChanged(Attribute attribute)
If the specified attribute is rowsDisplayed, then set the desired number of rows of the textArea, if there is one.void
cleanUp()
Free up memory when closing.java.lang.Object
clone(Workspace workspace)
Clone the actor into the specified workspace.void
initialize()
Initialize this display.void
place(PortableContainer container)
Specify the container into which this object should be placed.boolean
postfire()
Read at most one token from each input channel and display its string value on the screen.void
setContainer(CompositeEntity container)
Override the base class to remove the display from its graphical container if the argument is null.void
setDisplayName(java.lang.String name)
Set a name to present to the user.void
setName(java.lang.String name)
Set or change the name.-
Methods inherited from class ptolemy.actor.TypedAtomicActor
_containedTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
-
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, fire, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, stop, stopFire, terminate, wrapup
-
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence
-
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, 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, 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
fire, isFireFunctional, isStrict, iterate, prefire, stop, stopFire, terminate
-
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, preinitialize, removeInitializable, wrapup
-
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName
-
-
-
-
Field Detail
-
columnsDisplayed
public Parameter columnsDisplayed
The horizontal size of the display, in columns. This contains an integer, and defaults to 40.
-
input
public TypedIOPort input
The input port, which is a multiport.
-
rowsDisplayed
public Parameter rowsDisplayed
The vertical size of the display, in rows. This contains an integer, and defaults to 10.
-
suppressBlankLines
public Parameter suppressBlankLines
The flag indicating whether this display actor suppress blank lines. The default value is false.
-
title
public StringParameter title
The title to put on top. Note that the value of the title overrides the value of the name of the actor or the display name of the actor.
-
_initialized
protected boolean _initialized
Indicator that the display window has been opened.
-
_isSuppressBlankLines
protected boolean _isSuppressBlankLines
The flag indicating whether the blank lines will be suppressed.
-
-
Constructor Detail
-
Display
public Display(CompositeEntity container, java.lang.String name) throws IllegalActionException, NameDuplicationException
Construct an actor with an input multiport of type GENERAL.- Parameters:
container
- The container.name
- The name of this actor.- Throws:
IllegalActionException
- If the entity cannot be contained by the proposed container.NameDuplicationException
- If the container already has an actor with this name.
-
-
Method Detail
-
attributeChanged
public void attributeChanged(Attribute attribute) throws IllegalActionException
If the specified attribute is rowsDisplayed, then set the desired number of rows of the textArea, if there is one.- Overrides:
attributeChanged
in classNamedObj
- Parameters:
attribute
- The attribute that has changed.- Throws:
IllegalActionException
- If the specified attribute is rowsDisplayed and its value is not positive.
-
cleanUp
public void cleanUp()
Free up memory when closing.
-
clone
public java.lang.Object clone(Workspace workspace) throws java.lang.CloneNotSupportedException
Clone the actor into the specified workspace. This calls the base class and then sets the textArea public variable to null.- Overrides:
clone
in classTypedAtomicActor
- Parameters:
workspace
- The workspace for the new object.- Returns:
- A new actor.
- 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)
-
initialize
public void initialize() throws IllegalActionException
Initialize this display. If place() has not been called with a container into which to place the display, then create a new frame into which to put it.- Specified by:
initialize
in interfaceInitializable
- Overrides:
initialize
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- If the parent class throws it, or if the numRows or numColumns parameters are incorrect, or if there is no effigy for the top level container, or if a problem occurs creating the effigy and tableau.
-
place
public void place(PortableContainer container)
Specify the container into which this object should be placed. Obviously, this method needs to be called before the object is actually placed in a container. Otherwise, the object will be expected to create its own frame into which to place itself. For actors, this method should be called before initialize().- Specified by:
place
in interfacePortablePlaceable
- Parameters:
container
- The container in which to place the object, or null to specify that there is no current container.
-
postfire
public boolean postfire() throws IllegalActionException
Read at most one token from each input channel and display its string value on the screen. Each value is terminated with a newline character.- Specified by:
postfire
in interfaceExecutable
- Overrides:
postfire
in classAtomicActor<TypedIOPort>
- Returns:
- True if execution can continue into the next iteration.
- Throws:
IllegalActionException
- If there is no director.
-
setContainer
public void setContainer(CompositeEntity container) throws IllegalActionException, NameDuplicationException
Override the base class to remove the display from its graphical container if the argument is null.- Overrides:
setContainer
in classAtomicActor<TypedIOPort>
- Parameters:
container
- The proposed container.- Throws:
IllegalActionException
- If the base class throws it.NameDuplicationException
- If the base class throws it.- See Also:
ComponentEntity.getContainer()
-
setDisplayName
public void setDisplayName(java.lang.String name)
Set a name to present to the user.If the title parameter is set to the empty string, and the Display window has been rendered, then the title of the Display window will be updated to the value of the name parameter.
- Overrides:
setDisplayName
in classNamedObj
- Parameters:
name
- A name to present to the user.- See Also:
NamedObj.getDisplayName()
-
setName
public void setName(java.lang.String name) throws IllegalActionException, NameDuplicationException
Set or change the name. If a null argument is given the name is set to an empty string. Increment the version of the workspace. This method is write-synchronized on the workspace.If the title parameter is set to the empty string, and the Display window has been rendered, then the title of the Display window will be updated to the value of the name parameter.
- Specified by:
setName
in interfaceNameable
- Overrides:
setName
in classComponentEntity<TypedIOPort>
- Parameters:
name
- The new name.- Throws:
IllegalActionException
- If the name contains a period or if the object is a derived object and the name argument does not match the current name.NameDuplicationException
- Not thrown in this base class. May be thrown by derived classes if the container already contains an object with this name.- See Also:
NamedObj.getName()
,NamedObj.getName(NamedObj)
,title
-
_customTypeConstraints
protected java.util.Set<Inequality> _customTypeConstraints()
Set the input port greater than or equal toBaseType.GENERAL
in case backward type inference is enabled and the input port has no type declared.- Overrides:
_customTypeConstraints
in classTypedAtomicActor
- Returns:
- A set of inequalities.
-
_getImplementation
protected DisplayInterface _getImplementation()
Get the right instance of the implementation depending upon the of the dependency specified through dependency injection. If the instance has not been created, then it is created. If the instance already exists then return the same.This code is used as part of the dependency injection needed for the HandSimDroid project, see $PTII/ptserver. This code uses dependency inject to determine what implementation to use at runtime. This method eventually reads ptolemy/actor/ActorModule.properties.
ActorModuleInitializer.initializeInjector()
should be called before this method is called. If it is not called, then a message is printed and initializeInjector() is called.- Returns:
- the instance of the implementation.
-
_getInputString
protected java.lang.String _getInputString(int i) throws IllegalActionException
Return a string describing the input on channel i. This is a protected method to allow subclasses to override how inputs are observed.- Parameters:
i
- The channel- Returns:
- A string representation of the input, or null if there is nothing to display.
- Throws:
IllegalActionException
- If reading the input fails.
-
_openWindow
protected void _openWindow() throws IllegalActionException
Open the display window if it has not been opened.- Throws:
IllegalActionException
- If there is a problem creating the effigy.
-
-