ptolemy.actor.lib.gui
Class MatrixViewer

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.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.actor.gui.AbstractPlaceableActor
                              extended by ptolemy.actor.lib.gui.MatrixViewer
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Placeable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class MatrixViewer
extends AbstractPlaceableActor

An actor that displays the contents of a matrix input. This actor has a single input port, which only accepts MatrixTokens. One token is consumed per firing (in postfire()). The data in the MatrixToken is displayed in a table format with scrollbars, using the swing JTable class.

Since:
Ptolemy II 1.0
Version:
$Id: MatrixViewer.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Bart Kienhuis and Edward A. Lee
See Also:
Serialized Form
Accepted Rating:
Red (kienhuis)
Proposed Rating:
Red (kienhuis)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private  java.awt.Container _container
          Container with the display, if any.
private  TokenEffigy _effigy
          The effigy for the token data.
private  int _height
          Height of the matrix viewer in pixels.
private  MatrixPane _pane
          Pane with the matrix display.
private  TokenTableau _tableau
          The tableau with the display, if any.
private  int _width
          Width of the matrix viewer in pixels.
 Parameter height
          The height of the table in pixels.
 TypedIOPort input
          The input port.
 Parameter width
          The width of the table in pixels.
 
Fields inherited from class ptolemy.actor.gui.AbstractPlaceableActor
_frame, _paneSize, _windowProperties
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _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
MatrixViewer(CompositeEntity container, java.lang.String name)
          Construct an actor with the given container and name.
 
Method Summary
private  void _remove()
          Remove the display from the current container, if there is one.
 void attributeChanged(Attribute attribute)
          Notification that an attribute has changed.
 java.lang.Object clone(Workspace workspace)
          Clone the actor into the specified workspace.
 void initialize()
          Initialize this matrix viewer.
 void place(java.awt.Container container)
          Specify the container in which the data should be displayed.
 boolean postfire()
          Consume a matrix token from the input port and display the token in a table.
 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.gui.AbstractPlaceableActor
_exportMoMLContents, setFrame
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, 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
_description, _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, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, 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, 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.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
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

input

public TypedIOPort input
The input port.


width

public Parameter width
The width of the table in pixels. This must contain an integer. If the table is larger than this specified width, then scrollbars will appear, or the column width is adjusted. The default value is 500.


height

public Parameter height
The height of the table in pixels. This must contain an integer. If the table is larger than this specified width, then scrollbars will appear. The default value is 300.


_container

private java.awt.Container _container
Container with the display, if any.


_effigy

private TokenEffigy _effigy
The effigy for the token data.


_height

private int _height
Height of the matrix viewer in pixels.


_pane

private MatrixPane _pane
Pane with the matrix display.


_tableau

private TokenTableau _tableau
The tableau with the display, if any.


_width

private int _width
Width of the matrix viewer in pixels.

Constructor Detail

MatrixViewer

public MatrixViewer(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

attributeChanged

public void attributeChanged(Attribute attribute)
                      throws IllegalActionException
Notification that an attribute has changed. If the attribute is width or height then read the value of the attribute.

Overrides:
attributeChanged in class NamedObj
Parameters:
attribute - The attribute that changed.
Throws:
IllegalActionException - If the expression of the attribute cannot be parsed or cannot be evaluated.

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 removes association with graphical objects belonging to the original class.

Overrides:
clone in class AtomicActor
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 matrix viewer. 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 interface Initializable
Overrides:
initialize in class AtomicActor
Throws:
IllegalActionException - If the parent class throws it.

place

public void place(java.awt.Container container)
Specify the container in which the data should be displayed. An instance of JTable will be added to that container. The table is configured such that a user cannot reorder the columns of the table. Also, the table maintains a fixed preferred size, and will employ scrollbars if the table is larger than the preferred size. If this method is not called, the JTable will be placed in its own frame. The table is also placed in its own frame if this method is called with a null argument. The background of the table is set equal to that of the container (unless it is null).

Specified by:
place in interface Placeable
Specified by:
place in class AbstractPlaceableActor
Parameters:
container - The container into which to place the table.

postfire

public boolean postfire()
                 throws IllegalActionException
Consume a matrix token from the input port and display the token in a table. If a token is not available, do nothing.

Specified by:
postfire in interface Executable
Overrides:
postfire in class AtomicActor
Returns:
True if execution can continue into the next iteration.
Throws:
IllegalActionException - If there is no director, or if the base class throws it.

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 class AtomicActor
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 MatrixViewer window has been rendered, then the title of the MatrixViewer window will be updated to the value of the name parameter.

Overrides:
setDisplayName in class NamedObj
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 MatrixViewer window has been rendered, then the title of the MatrixViewer window will be updated to the value of the name parameter.

Specified by:
setName in interface Nameable
Overrides:
setName in class ComponentEntity
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)

_remove

private void _remove()
Remove the display from the current container, if there is one.